
    +h              
       v   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  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      d        Z ej.                  e
d       ej.                  ed      d               Zy)z5Establish constraint and index naming conventions.


    N   )events)
_NONE_NAME)conv)CheckConstraint)Column)
Constraint)ForeignKeyConstraint)Index)PrimaryKeyConstraint)Table)UniqueConstraint   )event)excc                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)ConventionDictc                 z    || _         t        |t              | _        || _        || _        |j                  | _        y N)const
isinstancer
   _is_fktable
conventionname_const_name)selfr   r   r   s       H/var/www/html/venv/lib/python3.12/site-packages/sqlalchemy/sql/naming.py__init__zConventionDict.__init__   s2    
 (<=
$ ::    c                 .    | j                   j                  S r   )r   r   r   s    r   _key_table_namezConventionDict._key_table_name&   s    zzr    c                    | j                   r0	 | j                  j                  |   }t        |j                  |      S t        | j                  j                        }	 ||   }t        ||      S # t
        $ r Y yw xY w# t
        $ r Y y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ZZ((- ryy(33

**+D.3i sH--    s#   A. A= .	A:9A:=	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:   sV    j11))2 
 $**D1"DJJOr    c                 &    | j                  |d      S )Nkeyr1   r   r,   s     r   _key_column_X_keyz ConventionDict._key_column_X_keyE   s     ~~c5))r    c                 &    | j                  |d      S )Nr   r7   r8   s     r   _key_column_X_namez!ConventionDict._key_column_X_nameK   s    ~~c6**r    c                 &    | j                  |d      S )N
_ddl_labelr7   r8   s     r   _key_column_X_labelz"ConventionDict._key_column_X_labelN   s    ~~c<00r    c                     | j                   j                  d   }|j                  j                  d      }t	        |      dk(  r|\  }}}|S |\  }}|S )Nr   .   )r   r&   target_fullnamesplitlen)r   r.   refs	refschemareftablerefcols         r   _key_referred_table_namez'ConventionDict._key_referred_table_nameQ   s[    ZZ  #!!'',t9>*.'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_nameZ   s&    ZZ  % yy~~r    c                 b   || j                   v r* | j                   |   | j                  | j                        S t        | d|z        r t	        | d|z               S t        j                  d|      }|r|j                  d      }|j                  d      }|r| j                  r| j                  j                  }nt        | j                  j                        }g }t        |      D ]?  \  }}d|j                  d|z   d      z   }	 |j                   t	        | |      |             A |j#                  d      rdnd	}	|	j%                  |      S d|j                  |d      z   }t'        |      }t        | |      r t	        | |      |      S t!        |      # t        $ r t!        |      w xY w)
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   r6   col_templater,   	multipleselemstokenselemattrseps
             r   __getitem__zConventionDict.__getitem__a   s   $//!'4??3'

DJJ??T9s?+174S13388$@#FL"((+(..q1	{{ $

 3 3 $TZZ%7%7 8F%.u%5 0	T&S9_c)JJ0"MM*='$*=c*BC0 "+!5!5c!:#C88F++"S[[c%::Dc(CtT*2wtT2377sm  . 0"*3-/0s   !FF.N)__name__
__module____qualname__r   r#   r1   r4   r9   r;   r>   rI   rL   re    r    r   r   r      s4    &."	 *+1r    r   ixpkckuqr.   c                 ~    |j                   D ].  }|t        v rt        |   | v r| t        |      c S || v s)| |   c S  y r   )__mro___prefix_dict)dict_r6   super_s      r   _get_conventionrs      sO    ++ \!l6&:e&Cf-..u_= 	 r    c                 z   |j                   }t        |j                  t        |             }t	        | j
                  t              r| j
                  S |_t	        | j
                  t              sE| j
                  d|v s| j
                  t        u r#t        |t        | ||j                        z        S |t        u ry y )Nconstraint_name)	metadatars   naming_conventiontyper   r   r   r   r   )r   r   rv   r   s       r   _constraint_name_for_tablery      s    ~~H !;!;T%[IJ%**d#zz5::t,JJ J.zzZ' UE8+E+EFG
 	
 
z	! 
"r    '_sa_event_column_added_to_pk_constraintc                 p    | j                   r*| j                  }d | _        t        | |      }|r|| _        y y y r   )_implicit_generatedr   r   ry   )pk_constraintr0   r   newnames       r   _column_added_to_pk_constraintr      sC     ((
 ##!,]EB!(M  )r    after_parent_attachc                     t        |t              rt        j                  |d fd       y t        |t              rDt         j
                  t              s j
                  t        u ry t         |      }|r| _        y y y )Nr   c                     t        |      S r   )_constraint_name)r0   r   r   s     r   <lambda>z"_constraint_name.<locals>.<lambda>   s    /u= r    )	r   r   r   listenr   r   r   r   ry   )r   r   r~   s   `  r   r   r      sn     %  	!=	
 
E5	!ejj$'5::+C,UE: EJ  
"r    )__doc__rS   r%   r   r&   r   r   schemar   r   r	   r
   r   r   r   r   r   r   objectr   rp   rs   ry   listens_forr   r   ri   r    r   <module>r      s   
 
     #   (  (  $  aV aJ 
4$Td$. C
)
) :455/0! 1 6!r    