o
    y¬´\  ã                   @   sX   d dl mZ d dl mZ ddl mZ ddl mZ ddgZi Zdd„ Zd	d„ Zd
d„ Z	dS )é   )Úconfig)Ú
exclusionsé   )Úevent)ÚschemaÚTableÚColumnc            	         s  ‡ fdd„t ˆ ƒD ƒ}ˆ  t¡ t tjd¡r4dˆ vr4dˆ vr4dˆ vr4d|v s+d|v r0d	ˆ d< nd
ˆ d< t tjd¡ry| d }tjjj	j
}dd„ | D ƒ}|D ]*}|j}t|tjƒr^|jj}n||ƒd }||krx|jdu rpd|_|jdu rxd|_qNtj| i ˆ ¤ŽS )z8A schema.Table wrapper/hook for dialect-specific tweaks.c                    ó"   i | ]}|  d ¡r|ˆ  |¡“qS ©Útest_©Ú
startswithÚpop©Ú.0Úk©Úkw© úK/var/www/html/env/lib/python3.10/site-packages/sqlalchemy/testing/schema.pyÚ
<dictcomp>   ó   " zTable.<locals>.<dictcomp>ÚmysqlÚmysql_engineÚ
mysql_typeÚautoload_withÚtest_needs_fkÚtest_needs_acidÚInnoDBÚMyISAMÚfirebirdé    c                 S   s(   g | ]}t |tjƒr|jD ]}|‘qqS r   )Ú
isinstancer   r   Úforeign_keys)r   ÚcolÚfkr   r   r   Ú
<listcomp>,   s    
ýüýÿzTable.<locals>.<listcomp>NÚCASCADE)ÚlistÚupdateÚtable_optionsr   Úagainstr   Ú_currentÚdbÚdialectÚidentifier_preparerÚunformat_identifiersÚ_colspecr"   r   r   ÚtableÚnameÚondeleteÚonupdater   )	Úargsr   Ú	test_optsÚ
table_nameÚunpackÚfksr%   Úrefr3   r   r   r   r      s6   

þ


€c                     s¬   ‡ fdd„t ˆ ƒD ƒ}tjj t¡sdd„ | D ƒ} tj| i ˆ ¤Ž}| dd¡rTˆ  dd¡rT|jdu r:|j	du r:d	|_
d	|jd< t tjd
d¡rTdd„ }tj|d|d	d� |S )z9A schema.Column wrapper/hook for dialect-specific tweaks.c                    r	   r
   r   r   r   r   r   r   I   r   zColumn.<locals>.<dictcomp>c                 S   s   g | ]
}t |tjƒs|‘qS r   )r"   r   Ú
ForeignKey)r   Úargr   r   r   r&   L   s    zColumn.<locals>.<listcomp>Útest_needs_autoincrementFÚprimary_keyNTr    Úoraclec                 S   s2   |   tjttjj|jd | j d ƒdd�¡ d S )NÚ_Ú_seqT)Úoptional)Ú_init_itemsr   ÚSequenceÚ_truncate_namer   r-   r.   r3   )ÚcÚtblr   r   r   Úadd_seq]   s   ÿüÿzColumn.<locals>.add_seqÚafter_parent_attach)Ú	propagate)r(   r   ÚrequirementsÚforeign_key_ddlÚenabled_for_configr   r   ÚgetÚdefaultÚserver_defaultÚautoincrementÚinfor   r+   r,   r   Úlisten)r6   r   r7   r$   rI   r   r   r   r   F   s   ÿ

c                 C   sF   t |ƒ| jkr!|dt| jd dƒ… d tt|ƒd ƒdd …  S |S )Nr!   é   rA   é@   r   )ÚlenÚmax_identifier_lengthÚmaxÚhexÚhash)r.   r3   r   r   r   rF   k   s   ÿþÿrF   N)
Ú r   r   r   r   Ú__all__r*   r   r   rF   r   r   r   r   Ú<module>   s   4%