
    ؄_              
       \   d 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 ddlmZ  G d de          Zedededede
diZd Zd Z ej        e	d           ej        ed          d                         ZdS )z5Establish constraint and index naming conventions.


    N   )_defer_name)_defer_none_name)conv)CheckConstraint)Column)
Constraint)ForeignKeyConstraint)Index)PrimaryKeyConstraint)Table)UniqueConstraint   )event)events)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       Z/var/www/book.euthymeo.com/html/venv/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         r| j        j        |         }|j        S t	          | j        j                  |         S r   )r   r   elementsparentlistcolumnsr   idxfks      r   	_column_XzConventionDict._column_X*   s;    ; 	1$S)B9
*++C00r!   c                     t          | j        t          d           t          f          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   typer   r   InvalidRequestErrorr   r   r   r#   s    r   _key_constraint_namez#ConventionDict._key_constraint_name1   sf    d&d5E(FGG 	)2  
 $*D11 	#"DJOr!   c                 6    |                      |          j        S r   )r-   keyr   r+   s     r   _key_column_X_keyz ConventionDict._key_column_X_key<   s     ~~c""&&r!   c                 6    |                      |          j        S r   )r-   r   r4   s     r   _key_column_X_namez!ConventionDict._key_column_X_nameB   s    ~~c""''r!   c                 6    |                      |          j        S r   )r-   
_ddl_labelr4   s     r   _key_column_X_labelz"ConventionDict._key_column_X_labelE   s    ~~c""--r!   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_nameH   sS    Z #!'',,t99>>*.'Ix#Hfr!   c                 >    | j         j        |         }|j        j        S r   )r   r&   columnr   r*   s      r   _key_referred_column_X_namez*ConventionDict._key_referred_column_X_nameQ   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   hasattrgetattrrematchgroupr   r&   r(   r)   	enumeratereplaceappendAttributeErrorKeyError
startswithjoinint)
r   r3   col_templater+   	multipleselemstokenselemattrseps
             r   __getitem__zConventionDict.__getitem__X   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$   r-   r1   r5   r7   r:   rE   rH   rc    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_r3   super_s      r   _get_conventionrq      sh    +  \!!l6&:e&C&Cf-....u__=     tr!   c                    |j         }t          |j        t          |                     }t	          | j        t                    r| j        S |et	          | j        t                    sK| j        d|v st	          | j        t                    r&t          |t          | ||j                  z            S t	          |t                    rd S d S )Nconstraint_name)
metadatarq   naming_conventionr/   r   r   r   r   r   r   )r   r   rt   r   s       r   _constraint_name_for_tablerv      s    ~H !;T%[[IIJ%*d## z5:t,, 	 J J..%*k22 / UE8+EFFG
 
 	
 
J 0	1	1 t r!   after_parent_attachc                     t          |t                    rt          j        |d fd           d S t          |t                    r>t           j        t          t          f          rd S t           |          }|| _        d S d S d S )Nrw   c                 $    t          |          S r   )_constraint_name)colr   r   s     r   <lambda>z"_constraint_name.<locals>.<lambda>   s    /u== r!   )	r   r   r   listenr   r   r   r   rv   )r   r   newnames   `  r   rz   rz      s     %   ! 	!====	
 	
 	
 	
 	

 
E5	!	! !ej4"566 	F,UE:: EJJJ! !
 r!   )__doc__rQ   r&   r   r   r   schemar   r   r	   r
   r   r   r   r   rN   r   r   r   objectr   rn   rq   rv   listens_forrz   rg   r!   r   <module>r      s   
 
			 ! ! ! ! ! ! & & & & & &       # # # # # #             ( ( ( ( ( (       ( ( ( ( ( (       $ $ $ $ $ $                  W W W W WV W W Wv 
4$Td$    . :4555/00! ! 10 65! ! !r!   