B
    \                 @   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rhd krhd krhd krhd|ksVd|kr`d	 d< nd
 d< ttjdr| d }tjjj	j
}dd | D }x\|D ]T}|j}t|tjr|jj}n||d }||kr|jdkrd|_|jdkrd|_qW tj|  S )z8A schema.Table wrapper/hook for dialect-specific tweaks.c                s"   i | ]}| d r ||qS )test_)
startswithpop).0k)kw 8lib/python3.7/site-packages/sqlalchemy/testing/schema.py
<dictcomp>   s    zTable.<locals>.<dictcomp>ZmysqlZmysql_engineZ
mysql_typeZautoload_withZtest_needs_fkZtest_needs_acidZInnoDBZMyISAMfirebird    c             S   s(   g | ] }t |tjr|jD ]}|qqS r   )
isinstancer   r   Zforeign_keys)r   colfkr   r   r   
<listcomp>.   s   zTable.<locals>.<listcomp>NZCASCADE)listupdatetable_optionsr   againstr   _currentdbdialectZidentifier_preparerZunformat_identifiersZ_colspecr   r   r   tablenameZondeleteZonupdater   )	argsr   	test_optsZ
table_nameZunpackZfksr   refr    r   )r   r   r      s2    






c                 s    fddt  D }tjjts2dd | D } tj|  }|ddr ddr|jdkrp|j	dkrpd	|_
d	|jd< ttjd
drdd }tj|d|d	d |S )z9A schema.Column wrapper/hook for dialect-specific tweaks.c                s"   i | ]}| d r ||qS )r	   )r
   r   )r   r   )r   r   r   r   J   s    zColumn.<locals>.<dictcomp>c             S   s   g | ]}t |tjs|qS r   )r   r   Z
ForeignKey)r   argr   r   r   r   M   s    zColumn.<locals>.<listcomp>Ztest_needs_autoincrementFZprimary_keyNTr   Zoraclec             S   s2   |  tjttjj|jd | j d dd d S )N_Z_seqT)Zoptional)Z_init_itemsr   Sequence_truncate_namer   r   r   r    )cZtblr   r   r   add_seq^   s
    zColumn.<locals>.add_seqZafter_parent_attach)Z	propagate)r   r   ZrequirementsZforeign_key_ddlZenabled_for_configr   r   getdefaultZserver_defaultZautoincrementinfor   r   r   r   Zlisten)r!   r   r"   r   r)   r   )r   r   r   G   s    

c             C   sJ   t || jkrB|dt| jd d d tt|d dd   S |S d S )Nr      r%   @   r   )lenZmax_identifier_lengthmaxhexhash)r   r    r   r   r   r'   l   s    4r'   N)
 r   r   r   r   __all__r   r   r   r'   r   r   r   r   <module>   s   4%