
    [h              
         d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ dd	l
mZ dd
l
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddlmZ ddlmZ  G d d          ZededededediZd Zd Z ej        ed          d             Z ej        ed           ej        ed          d                         ZdS ) z5Establish constraint and index naming conventions.


    )annotationsN   )events)
_NONE_NAME)conv)CheckConstraint)Column)
Constraint)ForeignKeyConstraint)Index)PrimaryKeyConstraint)Table)UniqueConstraint   )event)excc                  J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )ConventionDictc                |    || _         t          |t                    | _        || _        || _        |j        | _        d S N)const
isinstancer   _is_fktable
conventionname_const_name)selfr   r   r   s       d/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/sqlalchemy/sql/naming.py__init__zConventionDict.__init__"   s9    
 (<==
$ :    c                    | j         j        S r   )r   r   r   s    r   _key_table_namezConventionDict._key_table_name)   s    zr!   c                   | j         r9	 | j        j        |         }t          |j        |          S # t
          $ r Y dS w xY wt          | j        j                  }	 ||         }t          ||          S # t
          $ r Y dS w xY w)N )r   r   elementsgetattrparent
IndexErrorlistcolumns)r   idxattrnamefkcolscols         r   	_column_XzConventionDict._column_X,   s    ; 	.4Z(- ry(333    rr
 
*++D.3i sH---    rrs   0 
>>A3 3
B Bc                    | j         d t          fv rt          j        d          t	          | j         t
                    sd | j        _        | j         S )NzcNaming convention including %(constraint_name)s token requires that constraint is explicitly named.)r   r   r   InvalidRequestErrorr   r   r   r   r#   s    r   _key_constraint_namez#ConventionDict._key_constraint_name=   sX    j111)2  
 $*D11 	#"DJOr!   c                .    |                      |d          S )Nkeyr2   r   r-   s     r   _key_column_X_keyz ConventionDict._key_column_X_keyH   s     ~~c5)))r!   c                .    |                      |d          S )Nr   r8   r9   s     r   _key_column_X_namez!ConventionDict._key_column_X_nameN   s    ~~c6***r!   c                .    |                      |d          S )N
_ddl_labelr8   r9   s     r   _key_column_X_labelz"ConventionDict._key_column_X_labelQ   s    ~~c<000r!   c                    | j         j        d         }|j                            d          }t	          |          dk    r|\  }}}n|\  }}|S )Nr   .   )r   r'   target_fullnamesplitlen)r   r/   refs	refschemareftablerefcols         r   _key_referred_table_namez'ConventionDict._key_referred_table_nameT   sS    Z #!'',,t99>>*.'Ix#Hfr!   c                >    | j         j        |         }|j        j        S r   )r   r'   columnr   )r   r-   r/   s      r   _key_referred_column_X_namez*ConventionDict._key_referred_column_X_name]   s    Z % y~r!   c                   || j         v r! | j         |         | j        | j                  S t          | d|z            r t	          | d|z                        S t          j        d|          }|rU|                    d          }|                    d          }|r| j        r| j        j	        }nt          | j        j                  }g }t          |          D ]k\  }}d|                    d|z   d          z   }	 |                     t	          | |          |                     O# t          $ r t!          |          w xY w|                    d          rdnd	}	|	                    |          S d|                    |d          z   }t'          |          }t          | |          r t	          | |          |          S t!          |          )
Nz_key_%sz.*_?column_(\d+)(_?N)?_.+r   r   _key_0X_r&   )r   r   r   hasattrr(   rematchgroupr   r'   r+   r,   	enumeratereplaceappendAttributeErrorKeyError
startswithjoinint)
r   r7   col_templater-   	multipleselemstokenselemattrseps
             r   __getitem__zConventionDict.__getitem__d   s   $/!!'4?3'
DJ???T9s?++ 	8174S113338$@#FFL 8"((++(..q11	 8{ 9 $
 3 $TZ%7 8 8F%.u%5%5 0 0	T&S9_c)J)JJ0"MM*='$*=*=c*B*BCCCC- 0 0 0"*3--/0!*!5!5c!:!:B##C88F+++"S[[c%:%::Dc((CtT** 82wtT223777smms   =,D**EN)__name__
__module____qualname__r    r$   r2   r5   r:   r<   r?   rJ   rM   rf    r!   r   r   r   !   s        & & &  . . ."	  	  	 * * *+ + +1 1 1        r!   r   ixpkckuqr/   c                    |j         D ]=}|t          v r$t          |         | v r| t          |                  c S || v r
| |         c S >d S r   )__mro___prefix_dict)dict_r7   super_s      r   _get_conventionrt      sh    +  \!!l6&:e&C&Cf-....u__=     tr!   c                f   |j         }t          |j        t          |                     }t	          | j        t                    r| j        S |Yt	          | j        t                    s?| j        d|v s| j        t          u r&t          |t          | ||j                  z            S |t          u rd S d S )Nconstraint_name)	metadatart   naming_conventiontyper   r   r   r   r   )r   r   rw   r   s       r   _constraint_name_for_tablerz      s    ~H !;T%[[IIJ%*d## z5:t,, 	 J J..zZ'' UE8+EFFG
 
 	
 
z	!	!t 
"	!r!   '_sa_event_column_added_to_pk_constraintc                j    | j         r)| j        }d | _        t          | |          }|r|| _        d S d S d S r   )_implicit_generatedr   r   rz   )pk_constraintr1   r   newnames       r   _column_added_to_pk_constraintr      sZ     ( 	)
 #!,]EBB 	)!(M	) 	)	) 	)r!   after_parent_attachc                     t          |t                    rt          j        |d fd           d S t          |t                    rEt           j        t                    s j        t          u rd S t           |          }|r| _        d S d S d S )Nr   c                $    t          |          S r   )_constraint_name)r1   r   r   s     r   <lambda>z"_constraint_name.<locals>.<lambda>   s    /u== r!   )	r   r	   r   listenr   r   r   r   rz   )r   r   r   s   `  r   r   r      s     %   ! 	!====	
 	
 	
 	
 	
 
E5	!	! !ej$'' 	5:+C+CF,UE:: 	! EJJJ! !
	! 	!r!   )__doc__
__future__r   rT   r&   r   baser   r'   r   schemar   r	   r
   r   r   r   r   r   r   r   r   rq   rt   rz   listens_forr   r   rj   r!   r   <module>r      s   
 # " " " " " 				             " " " " " " # # # # # #             ( ( ( ( ( (       ( ( ( ( ( (       $ $ $ $ $ $            a a a a a a a aJ 
4$Td$    . C 
) 
) 
) :4555/00! ! 10 65! ! !r!   