a
    [g                  
   @  s"  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 dZededededediZdd Zdd Zeeddd  Zeed!eed!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                   @  s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )ConventionDictc                 C  s*   || _ t|t| _|| _|| _|j| _d S N)const
isinstancer
   _is_fktable
conventionname_const_name)selfr   r   r    r   c/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/sqlalchemy/sql/naming.py__init__"   s
    zConventionDict.__init__c                 C  s   | j jS r   )r   r   r   r   r   r   _key_table_name)   s    zConventionDict._key_table_namec                 C  sv   | j r:z| jj| }W n ty*   Y dS 0 t|j|S n8t| jj}z|| }W n tyf   Y dS 0 t||S d S )N )r   r   elements
IndexErrorgetattrparentlistcolumns)r   idxattrnamefkcolscolr   r   r   	_column_X,   s    zConventionDict._column_Xc                 C  s2   | j d tfv rt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   ZInvalidRequestErrorr   r   r   r   r   r   r   r   _key_constraint_name=   s    z#ConventionDict._key_constraint_namec                 C  s   |  |dS )Nkeyr-   r   r(   r   r   r   _key_column_X_keyH   s    z ConventionDict._key_column_X_keyc                 C  s   |  |dS )Nr   r0   r1   r   r   r   _key_column_X_nameN   s    z!ConventionDict._key_column_X_namec                 C  s   |  |dS )NZ
_ddl_labelr0   r1   r   r   r   _key_column_X_labelQ   s    z"ConventionDict._key_column_X_labelc                 C  s<   | j jd }|jd}t|dkr0|\}}}n|\}}|S )Nr   .   )r   r"   Ztarget_fullnamesplitlen)r   r*   refsZ	refschemaZreftableZrefcolr   r   r   _key_referred_table_nameT   s    z'ConventionDict._key_referred_table_namec                 C  s   | j j| }|jjS r   )r   r"   columnr   )r   r(   r*   r   r   r   _key_referred_column_X_name]   s    z*ConventionDict._key_referred_column_X_namec           
   	   C  s<  || j v r| j | | j| jS t| d| r<t| d|  S td|}|r0|d}|d}| r| jrx| jj	}nt
| jj}g }t|D ]P\}}d|d| d }z|t| || W q ty   t|Y q0 q|drdnd	}	|	|S d||d }t|}t| |r0t| ||S t|d S )
Nz_key_%sz.*_?column_(\d+)(_?N)?_.+r   r   Z_key_0X_r!   )r   r   r   hasattrr$   rematchgroupr   r"   r&   r'   	enumeratereplaceappendAttributeErrorKeyError
startswithjoinint)
r   r/   Zcol_templater(   Z	multiplesZelemstokenselemattrsepr   r   r   __getitem__d   s4    




zConventionDict.__getitem__N)__name__
__module____qualname__r   r    r-   r.   r2   r3   r4   r:   r<   rP   r   r   r   r   r   !   s   	r   ZixpkZckZuqr*   c                 C  sH   |j D ]<}|tv r.t| | v r.| t|    S || v r| |   S qd S r   )__mro___prefix_dict)Zdict_r/   Zsuper_r   r   r   _get_convention   s    
rW   c                 C  s~   |j }t|jt| }t| jtr(| jS |d urnt| jtsn| jd u sXd|v sX| jtu rnt|t| ||j S |tu rzd S d S )NZconstraint_name)	metadatarW   Znaming_conventiontyper   r   r   r   r   )r   r   rX   r   r   r   r   _constraint_name_for_table   s*    
	rZ   Z'_sa_event_column_added_to_pk_constraintc                 C  s*   | j r&| j}d | _t| |}|r&|| _d S r   )Z_implicit_generatedr   r   rZ   )Zpk_constraintr,   r   newnamer   r   r   _column_added_to_pk_constraint   s    
r\   after_parent_attachc                   s^   t |tr"t|d fdd n8t |trZt  jtsB jtu rFd S t |}|rZ| _d S )Nr]   c                   s
   t  |S r   )_constraint_name)r,   r   r   r   r   <lambda>       z"_constraint_name.<locals>.<lambda>)	r   r   r   listenr   r   r   r   rZ   )r   r   r[   r   r_   r   r^      s    



r^   )__doc__
__future__r   rA   r!   r   baser   r"   r   Zschemar   r   r	   r
   r   r   r   r   r   r   r   rV   rW   rZ   Zlistens_forr\   r^   r   r   r   r   <module>	   s>   e	



