o
    ‹åg˜&  ã                   @  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_testÚafter_parent_attachc                 C  s   t  | j¡ d S ©N)r!   ÚaddÚname)ÚtableÚparent© r(   úc/var/www/html/flaskapp/venv/lib/python3.10/site-packages/alembic/testing/suite/_autogen_fixtures.pyÚ	new_table%   s   r*   c                 C  s   |dkr|t v S dS )Nr&   T)r!   )Úobjr%   Útype_Ú	reflectedÚ
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)Ú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©r4   ÚuserÚidT©Úprimary_keyr%   é2   Úa1ÚpwÚpw_idxÚaddressÚemail_addresséd   F©ÚnullableÚorderÚorder_idÚamounté   é   Ú0©rB   Úserver_defaultzamount >= 0Úck_order_amount©r%   ÚextraÚxÚuidúuser.id)r4   r   r   r   r   r   r   r   r   r   r   r   r
   ©Úclsr4   Ú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 )"Nr5   r6   r7   Tr8   r%   r:   FrA   r;   rN   )rJ   r>   r?   r@   ÚstreetÚuq_emailrL   rC   rD   rE   é
   rG   rH   rI   Úuser_idrP   zamount > -1rK   ÚitemÚdescriptionzorder.order_idzlen(description) > 5)r4   r   r   r   r   r   r   r   r   r   r
   r   rQ   r(   r(   r)   Ú_get_model_schemah   sN   
û
ú	ü
õúzModelOne._get_model_schema)	Ú__name__Ú
__module__Ú__qualname__Ú__requires__r4   Ú__annotations__ÚclassmethodrT   r[   r(   r(   r(   r)   r2   6   s   
 
,r2   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 urv|dkrlt| jƒ |¡}|d d }t|d j|ƒ d S t|d j|ƒ d S 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>Úservergeneratedr%   )r   r   Úelementsr   ÚbindÚget_foreign_keysr%   )ÚselfÚdiffr,   Úsource_tableÚsource_columnsÚtarget_tableÚtarget_columnsr%   Úconditional_nameÚsource_schemaÚonupdateÚondeleteÚ	initiallyÚ
deferrableÚfk_source_schemaÚfk_source_tableÚfk_source_columnsÚfk_target_schemaÚfk_target_tableÚfk_target_columnsÚfk_onupdateÚfk_ondeleteÚfk_deferrableÚfk_initiallyÚfksÚserver_fk_namer(   r(   r)   Ú_assert_fk_diff™   s:   
õ







z_ComparesFKs._assert_fk_diff)NNNNNNN)r\   r]   r^   r„   r(   r(   r(   r)   rb   ˜   s    	òrb   c                   @  sb   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  s2   � |D ]}t |tƒr|  |¡E d H  q|V  qd S r#   )Ú
isinstanceÚlistÚ_flatten_diffs)rl   ÚdiffsÚdr(   r(   r)   rˆ   Ð   s   €
üzAutogenTest._flatten_diffsc                 C  s   t jS r#   )r   Údb©rR   r(   r(   r)   Ú	_get_bind×   s   zAutogenTest._get_bindzDict[Any, Any]Úconfigure_optsc                 C  s6   t ƒ  |  ¡ | _|  ¡ | _| j | j¡ |  ¡ | _d S r#   )r    r�   rj   rT   Úm1Ú
create_allr[   Úm2rŒ   r(   r(   r)   Úsetup_classÝ   s
   

zAutogenTest.setup_classc                 C  s   | j  | j¡ tƒ  d S r#   )r�   Údrop_allrj   r   rŒ   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)rj   ÚconnectÚconnr‘   r0   r1   rŽ   Úupdater   Ú	configureÚcontextr   ÚAutogenContextÚautogen_context)rl   r¦   Úctx_optsr©   r(   r(   r)   ÚsetUpê   s"   ÷ÿzAutogenTest.setUpc                 C  s   | j  ¡  d S r#   )r¦   Úclose©rl   r(   r(   r)   ÚtearDownÿ   s   zAutogenTest.tearDownNc                 C  s>   |d ur
|| j jd< |d ur|g| j _|d ur|g| j _| j S )NÚinclude_schemas)r«   r¤   Ú_object_filtersÚ_name_filters)rl   Úobject_filtersÚname_filtersr±   r(   r(   r)   Ú_update_context  s   

zAutogenTest._update_context)NNN)r\   r]   r^   rˆ   ra   r�   rŽ   r`   r’   r”   r­   r°   r¶   r(   r(   r(   r)   r…   Ï   s   
 


ÿr…   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  sf  |r| j j}	|	j}
| |	_|	_z–||| _}t | j¡D ]}| | j ¡ q| j  ¡ �c}dd|dddd|||dœ
}|r?| 	|¡ t
j||d� | _}t ||¡}tjg d�}t ||¡ |rt|W  d   ƒ W |rs| j j}	|
 |	_|	_S S | ¡ W  d   ƒ W |rŒ| j j}	|
 |	_|	_S S 1 s�w   Y  W |r¤| j j}	|
 |	_|	_d S d S |r²| j j}	|
 |	_|	_w )	NTr•   r–   r—   r˜   )
r™   rš   r›   rœ   r�   rž   rŸ   r    r¡   r±   r¢   r   )rj   ÚdialectÚmax_identifier_lengthÚ#_user_defined_max_identifier_lengthÚ_alembic_metadatar   Úto_listr�   r¥   r§   r   r¨   r©   r   rª   r   Ú
UpgradeOpsr   Ú_produce_net_changesÚas_diffs)rl   r�   r‘   r±   r¤   r´   rµ   Ú
return_opsr¹   r¸   Úexisting_lengthÚmodel_metadatarS   r¦   r¬   r©   r«   Úuor(   r(   r)   Ú_fixture  sv   þö
ÿèþýþæþýäþýþÿzAutogenFixtureTest._fixturec                 C  s   t ƒ  tj| _d S r#   )r    r   r‹   rj   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»   r“   rj   r   )rl   rS   r(   r(   r)   r°   K  s   

zAutogenFixtureTest.tearDown)r\   r]   r^   r0   r1   rÄ   r­   r°   r(   r(   r(   r)   r·     s    
÷8r·   )2Ú
__future__r   Útypingr   r   r   Ú
sqlalchemyr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Ú r   r   r   Úddl.baser   Ú	migrationr   Ú
operationsr   Útestingr   r   Útesting.envr   r    Úsetr!   r`   Úlistens_forr*   r/   r0   r1   r2   rb   r…   r·   r(   r(   r(   r)   Ú<module>   sN    

b7?