
    g              
         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j2                  ed      d        Z ej2                  ed       ej2                  ed      d               Zy) z5Establish constraint and index naming conventions.


    )annotationsN   )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       U/var/www/api/v1/venv_getwork_v1/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r2   r   r-   s     r   _key_column_X_keyz ConventionDict._key_column_X_keyH   s     ~~c5))r!   c                &    | j                  |d      S )Nr   r8   r9   s     r   _key_column_X_namez!ConventionDict._key_column_X_nameN   s    ~~c6**r!   c                &    | j                  |d      S )N
_ddl_labelr8   r9   s     r   _key_column_X_labelz"ConventionDict._key_column_X_labelQ   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_nameT   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_name]   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   r7   col_templater-   	multipleselemstokenselemattrseps
             r   __getitem__zConventionDict.__getitem__d   s   $//!'4??3'

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

 3 3 $TZZ%7%7 8F%.u%5	T&S9_c)JJ0"MM*='$*=c*BC &6 "+!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$   r2   r5   r:   r<   r?   rJ   rM   rf    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_r7   super_s      r   _get_conventionrt      sJ    ++\!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)	metadatart   naming_conventiontyper   r   r   r   r   )r   r   rw   r   s       r   _constraint_name_for_tablerz      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   rz   )pk_constraintr1   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)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      sn     %  	!=	
 
E5	!ejj$'5::+C,UE: EJ  
"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J 
4$Td$. C
)
) :455/0! 1 6!r!   