U
    ^g%i&                     @  s  U 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 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! ddl m"Z" ddl#m$Z$ ddl#m%Z% e& Z'de(d < e
)ed!d"d# Z*d$d% Z+e+Z,d&e(d'< d(Z-d&e(d)< G d*d+ d+Z.G d,d- d-Z/G d.d/ d/e/Z0G d0d1 d1e/Z1d(S )2    )annotations)Any)Dict)Set)CHAR)CheckConstraint)Column)event)
ForeignKey)Index)inspect)Integer)MetaData)Numeric)String)Table)Text)text)UniqueConstraint   )autogenerate)util)api)_fk_spec)MigrationContextops)config)eq_)clear_staging_env)staging_envzSet[Any]names_in_this_testZafter_parent_attachc                 C  s   t | j d S N)r!   addname)tableparent r'   f/var/www/html/api-medvista/venv/lib/python3.8/site-packages/alembic/testing/suite/_autogen_fixtures.py	new_table%   s    r)   c                 C  s   |dkr|t kS dS d S )Nr%   T)r!   )objr$   type_Z	reflectedZ
compare_tor'   r'   r(   _default_include_object*   s    r,   r   _default_object_filtersN_default_name_filtersc                   @  s6   e Zd ZU dZdZded< edd Zedd ZdS )	ModelOne)Zunique_constraint_reflectionNr   schemac              
   C  s   | j }t|d}td|tdtddtdtdtdttd	tdtd
d	 td|tdtddtdtddd td|tdtddtdtdddt	ddt
ddd td|tdttdttd |S )Nr0   useridTZprimary_keyr$   2   a1pwZpw_idxaddressemail_addressd   Fnullableorderorder_idamount      0r<   server_defaultzamount >= 0ck_order_amountr$   extraxuiduser.id)r0   r   r   r   r   r   r   r   r   r   r   r   r
   clsr0   mr'   r'   r(   _get_db_schema;   sH    


zModelOne._get_db_schemac              
   C  s   | j }t|d}td|tdtddtdtddd	td
tdd td|tdtddtdtddd	tdtdtddd td|tdtddtdtdddt	ddtdtt
dtddd td|tdtddtdtdtdtt
d td! |S )"Nr1   r2   r3   Tr4   r$   r5   Fr;   r6   rH   )rD   r8   r9   r:   ZstreetZuq_emailrF   r=   r>   r?   
   rA   rB   rC   Zuser_idrJ   zamount > -1rE   itemdescriptionzorder.order_idzlen(description) > 5)r0   r   r   r   r   r   r   r   r   r   r
   r   rK   r'   r'   r(   _get_model_schemah   sN    

	
zModelOne._get_model_schema)	__name__
__module____qualname____requires__r0   __annotations__classmethodrN   rR   r'   r'   r'   r(   r/   6   s   

,r/   c                   @  s   e Zd ZdddZdS )_ComparesFKsNc              
   C  s   t |d \
}}}}}}}}}}t|d | t|| t|| t|| t||	 t||
 t|| t|| t|| tdd |d jD | |d k	r|dkrt| j|}|d d }t|d j| qt|d j| nt|d j| d S )N   r   c                 S  s   g | ]}|j jqS r'   )columnr$   ).0elemr'   r'   r(   
<listcomp>   s     z0_ComparesFKs._assert_fk_diff.<locals>.<listcomp>Zservergeneratedr$   )r   r   elementsr   bindZget_foreign_keysr$   )selfdiffr+   Zsource_tableZsource_columnsZtarget_tableZtarget_columnsr$   Zconditional_nameZsource_schemaZonupdateZondeleteZ	initiallyZ
deferrableZfk_source_schemaZfk_source_tableZfk_source_columnsZfk_target_schemaZfk_target_tableZfk_target_columnsZfk_onupdateZfk_ondeleteZfk_deferrableZfk_initiallyZfksZserver_fk_namer'   r'   r(   _assert_fk_diff   s:    








z_ComparesFKs._assert_fk_diff)NNNNNNN)rS   rT   rU   rc   r'   r'   r'   r(   rY      s   	       rY   c                   @  s`   e Zd ZU dd Zedd Zi Zded< edd Zed	d
 Z	dd Z
dd ZdddZdS )AutogenTestc                 c  s0   |D ]&}t |tr$| |E d H  q|V  qd S r"   )
isinstancelist_flatten_diffs)ra   Zdiffsdr'   r'   r(   rg      s    
zAutogenTest._flatten_diffsc                 C  s   t jS r"   )r   dbrL   r'   r'   r(   	_get_bind   s    zAutogenTest._get_bindzDict[Any, Any]configure_optsc                 C  s6   t   |  | _|  | _| j| j |  | _d S r"   )r    rk   r`   rN   m1
create_allrR   m2rj   r'   r'   r(   setup_class   s
    

zAutogenTest.setup_classc                 C  s   | j | j t  d S r"   )rm   drop_allr`   r   rj   r'   r'   r(   teardown_class   s    zAutogenTest.teardown_classc              
   C  sd   | j   | _}dd| jddddttd	}| jr<|| j tj	||d | _
}t|| j| _d S )NTupgrades
downgradesop.sa.)	compare_typecompare_server_defaulttarget_metadataupgrade_tokendowngrade_tokenalembic_module_prefixsqlalchemy_module_prefixinclude_objectinclude_name
connectionopts)r`   connectconnro   r-   r.   rl   updater   	configurecontextr   AutogenContextautogen_context)ra   r   ctx_optsr   r'   r'   r(   setUp   s$     zAutogenTest.setUpc                 C  s   | j   d S r"   )r   closera   r'   r'   r(   tearDown   s    zAutogenTest.tearDownNc                 C  s>   |d k	r|| j jd< |d k	r&|g| j _|d k	r8|g| j _| j S )Ninclude_schemas)r   r   Z_object_filtersZ_name_filters)ra   object_filtersname_filtersr   r'   r'   r(   _update_context  s    

zAutogenTest._update_context)NNN)rS   rT   rU   rg   rX   rk   rl   rW   rp   rr   r   r   r   r'   r'   r'   r(   rd      s   



     rd   c                   @  s2   e Zd ZddeeddfddZdd Zdd ZdS )	AutogenFixtureTestFNc	                 C  s  |r| j j}	|	j}
| |	_|	_z|| | _}t| jD ]}|| j  q8| j  }dd|dddd|||d
}|r~|	| t
j||d | _}t||}tjg d}t|| |r|W  5 Q R  W (S | W  5 Q R  W S W 5 Q R X W 5 |r| j j}	|
 |	_|	_X d S )	NTrs   rt   ru   rv   )
rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   )r`   dialectmax_identifier_lengthZ#_user_defined_max_identifier_length_alembic_metadatar   to_listrn   r   r   r   r   r   r   r   r   Z
UpgradeOpsr   Z_produce_net_changesZas_diffs)ra   rm   ro   r   r   r   r   Z
return_opsr   r   Zexisting_lengthZmodel_metadatarM   r   r   r   r   Zuor'   r'   r(   _fixture  sP    
 &zAutogenFixtureTest._fixturec                 C  s   t   tj| _d S r"   )r    r   ri   r`   r   r'   r'   r(   r   G  s    zAutogenFixtureTest.setUpc                 C  s2   t | dr(t| jD ]}|| j qt  d S )Nr   )hasattrr   r   r   rq   r`   r   )ra   rM   r'   r'   r(   r   K  s    
zAutogenFixtureTest.tearDown)rS   rT   rU   r-   r.   r   r   r   r'   r'   r'   r(   r     s   
8r   )2
__future__r   typingr   r   r   Z
sqlalchemyr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r    r   r   r   Zddl.baser   Z	migrationr   
operationsr   Ztestingr   r   Ztesting.envr   r    setr!   rW   Zlistens_forr)   r,   r-   r.   r/   rY   rd   r   r'   r'   r'   r(   <module>   sN    

b7?