o
    i                     @   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 T/var/www/edux/Edux_v2/venv/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   J   r   zColumn.<locals>.<dictcomp>c                 S   s   g | ]
}t |tjs|qS r   )r"   r   
ForeignKey)r   argr   r   r   r&   M   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   G   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   l   s   rF   N)
 r   r   r   r   __all__r*   r   r   rF   r   r   r   r   <module>   s   4%