o
    y¬´\<*  ã                   @   s  d dl Z d dl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 G dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deeƒZG dd„ deeejƒZG dd„ deƒZdS )é    Né   )Ú
assertions)Úconfig)Úschema)Údrop_all_tables)ÚBasicEntity)ÚComparableEntity)Úadicté   )Úevent)Úutil)Údeclarative_base)ÚDeclarativeMetac                   @   s:   e Zd ZdZdZdZdZdZd	dd„Zdd„ Z	dd„ Z
dS )
ÚTestBase© Nc                 C   s   |sJ |ƒ‚d S ©Nr   )ÚselfÚvalÚmsgr   r   úM/var/www/html/env/lib/python3.10/site-packages/sqlalchemy/testing/fixtures.pyÚassert_/   s   zTestBase.assert_c                 C   ó   t | dƒr|  ¡  d S d S )NÚsetUp)Úhasattrr   ©r   r   r   r   Úsetup3   ó   
ÿzTestBase.setupc                 C   r   )NÚtearDown)r   r   r   r   r   r   Úteardown7   r   zTestBase.teardownr   )Ú__name__Ú
__module__Ú__qualname__Ú__whitelist__Ú__requires__Ú__unsupported_on__Ú__only_on__Ú__skip_if__r   r   r   r   r   r   r   r      s    
r   c                   @   sü   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZedd„ ƒZedd„ ƒZedd	„ ƒZed
d„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZed d!„ ƒZed"d#„ ƒZd$d%„ Zd&d'„ Zed(d)„ ƒZ dS )*Ú
TablesTestÚonceÚeachNc                 C   s   |   ¡  |  ¡  |  ¡  d S r   )Ú_init_classÚ_setup_once_tablesÚ_setup_once_inserts©Úclsr   r   r   Úsetup_classU   s   zTablesTest.setup_classc                 C   sZ   | j dkr| jdkrd| _| jdv sJ ‚tƒ | _tƒ | _|  ¡ | _t 	¡ | _
| j| j
_d S )Nr)   r(   )r)   N)Úrun_define_tablesÚrun_create_tablesÚrun_insertsr	   ÚotherÚtablesÚ
setup_bindÚbindÚsaÚMetaDataÚmetadatar-   r   r   r   r*   ]   s   



zTablesTest._init_classc                 C   ó"   | j dkr|  ¡  |  ¡  d S d S ©Nr(   ©r2   Ú_load_fixturesÚinsert_datar-   r   r   r   r,   k   s   
þzTablesTest._setup_once_insertsc                 C   sF   | j dkr!|  | j¡ | jdkr| j | j¡ | j | jj¡ d S d S r;   )r0   Údefine_tablesr9   r1   Ú
create_allr6   r4   Úupdater-   r   r   r   r+   q   s   

üzTablesTest._setup_once_tablesc                 C   sœ   | j dkr7| j ¡  | jdkrt| j| jƒ | j ¡  |  | j¡ | jdkr-| j | j¡ | j 	| jj¡ d S | jdkrLt| j| jƒ | j | j¡ d S d S ©Nr)   )
r0   r4   Úclearr1   r   r9   r6   r?   r@   rA   r   r   r   r   Ú_setup_each_tablesy   s   





þzTablesTest._setup_each_tablesc                 C   r:   rB   r<   r   r   r   r   Ú_setup_each_inserts‡   s   
þzTablesTest._setup_each_insertsc                 C   s°   | j dkrT| jdkrV| j ¡ �;}t| jjƒD ]+}z	| | ¡ ¡ W q t	j
jyA } ztjd||f tjd� W Y d }~qd }~ww W d   ƒ d S 1 sMw   Y  d S d S d S )Nr)   zError emptying table %s: %r)Úfile)r0   Úrun_deletesr6   ÚconnectÚreversedr9   Úsorted_tablesÚexecuteÚdeleter7   ÚexcÚ
DBAPIErrorr   Úprint_ÚsysÚstderr)r   ÚconnÚtableÚexr   r   r   Ú_teardown_each_tablesŒ   s   
þ€ÿý"ÿÿz TablesTest._teardown_each_tablesc                 C   ó   |   ¡  |  ¡  d S r   )rD   rE   r   r   r   r   r   ™   s   zTablesTest.setupc                 C   ó   |   ¡  d S r   )rU   r   r   r   r   r   �   s   zTablesTest.teardownc                 C   sJ   | j r
t| j| jƒ | jdkr|  | j¡ d | j_| jd ur#d | _d S d S r;   )r1   r   r9   r6   Úrun_dispose_bindÚdispose_bindÚrun_setup_bindr-   r   r   r   Ú_teardown_once_metadata_bind    s   


ÿz'TablesTest._teardown_once_metadata_bindc                 C   rW   r   )r[   r-   r   r   r   Úteardown_class­   s   zTablesTest.teardown_classc                 C   s   t jS r   )r   Údbr-   r   r   r   r5   ±   ó   zTablesTest.setup_bindc                 C   s0   t |dƒr| ¡  d S t |dƒr| ¡  d S d S )NÚdisposeÚclose)r   r_   r`   )r.   r6   r   r   r   rY   µ   s
   

ÿzTablesTest.dispose_bindc                 C   ó   d S r   r   )r.   r9   r   r   r   r?   ¼   ó   zTablesTest.define_tablesc                 C   s   i S r   r   r-   r   r   r   ÚfixturesÀ   rb   zTablesTest.fixturesc                 C   ra   r   r   r-   r   r   r   r>   Ä   rb   zTablesTest.insert_datac                 C   s   |   | j||¡ d S r   )Úassert_sql_countr6   )r   ÚcountÚfnr   r   r   Ú
sql_count_È   ó   zTablesTest.sql_count_c                 C   s   |   | j||¡ d S r   )Ú
assert_sqlr6   )r   Ú	callable_Ú
statementsr   r   r   Úsql_eq_Ë   rh   zTablesTest.sql_eq_c                    s¢   i i ‰ }|   ¡  ¡ D ]$\‰}t|ƒdk rqtˆtjƒr!| jˆ ‰|d ˆ ˆ< |dd… |ˆ< q| jjD ]‰ˆˆ vr;q4| j	 
ˆ ¡ ‡ ‡fdd„|ˆ D ƒ¡ q4dS )z4Insert rows as represented by the fixtures() method.r
   r   r   Nc                    s   g | ]}t tˆ ˆ |ƒƒ‘qS r   )ÚdictÚzip)Ú.0Úcolumn_values©ÚheadersrS   r   r   Ú
<listcomp>Þ   s    ÿÿz-TablesTest._load_fixtures.<locals>.<listcomp>)rc   ÚitemsÚlenÚ
isinstancer   Ústring_typesr4   r9   rJ   r6   rK   Úinsert)r.   ÚrowsÚdatar   rq   r   r=   Î   s$   

þþýzTablesTest._load_fixtures)!r   r    r!   rZ   r0   r1   r2   rG   rX   r6   r9   r4   r3   Úclassmethodr/   r*   r,   r+   rD   rE   rU   r   r   r[   r\   r5   rY   r?   rc   r>   rg   rl   r=   r   r   r   r   r'   <   sT    










r'   c                       s2   e Zd Zejdd„ ƒZdd„ Z‡ fdd„Z‡  ZS )ÚRemovesEventsc                 C   s   t ƒ S r   )Úsetr   r   r   r   Ú
_event_fnsæ   r^   zRemovesEvents._event_fnsc                 K   s,   | j  |||f¡ tj|||fi |¤Ž d S r   )r~   Úaddr   Úlisten)r   ÚtargetÚnamerf   Úkwr   r   r   Úevent_listenê   s   zRemovesEvents.event_listenc                    s:   | j D ]}tj|Ž  qtt| ƒ}t|dƒr| ¡  d S d S )Nr   )r~   r   ÚremoveÚsuperr|   r   r   )r   ÚkeyÚsuper_©Ú	__class__r   r   r   î   s   


ÿzRemovesEvents.teardown)	r   r    r!   r   Úmemoized_propertyr~   r„   r   Ú__classcell__r   r   r‰   r   r|   å   s
    
r|   c                   @   s   e Zd Zedd„ ƒZdS )Ú_ORMTestc                 C   s   t jjj ¡  t j ¡  d S r   )r7   ÚormÚsessionÚSessionÚ	close_allÚclear_mappersr-   r   r   r   r\   ÷   s   z_ORMTest.teardown_classN)r   r    r!   r{   r\   r   r   r   r   r�   ö   s    r�   c                   @   ó   e Zd ZdS )ÚORMTestN©r   r    r!   r   r   r   r   r”   ý   ó    r”   c                   @   s¨   e Zd ZdZdZdZedd„ ƒZedd„ ƒZdd	„ Z	d
d„ Z
edd„ ƒZedd„ ƒZedd„ ƒZdd„ Zdd„ Zedd„ ƒZdd„ Zdd„ Zedd„ ƒZedd„ ƒZdS ) Ú
MappedTestr(   r)   Nc                 C   s>   |   ¡  | jd u rtƒ | _|  ¡  |  ¡  |  ¡  |  ¡  d S r   )r*   Úclassesr	   r+   Ú_setup_once_classesÚ_setup_once_mappersr,   r-   r   r   r   r/   
  s   
zMappedTest.setup_classc                 C   rV   r   )Ú_teardown_once_classr[   r-   r   r   r   r\     s   zMappedTest.teardown_classc                 C   s$   |   ¡  |  ¡  |  ¡  |  ¡  d S r   )rD   Ú_setup_each_classesÚ_setup_each_mappersrE   r   r   r   r   r     s   zMappedTest.setupc                 C   s*   t jjj ¡  |  ¡  |  ¡  |  ¡  d S r   )r7   rŽ   r�   r�   r‘   Ú_teardown_each_mappersÚ_teardown_each_classesrU   r   r   r   r   r   !  s   zMappedTest.teardownc                 C   s   | j  ¡  t ¡  d S r   )r˜   rC   r�   r\   r-   r   r   r   r›   '  s   
zMappedTest._teardown_once_classc                 C   ó   | j dkr|  | j¡ d S d S r;   ©Úrun_setup_classesÚ_with_register_classesÚsetup_classesr-   r   r   r   r™   ,  ó   
ÿzMappedTest._setup_once_classesc                 C   r    r;   ©Úrun_setup_mappersr£   Úsetup_mappersr-   r   r   r   rš   1  r¥   zMappedTest._setup_once_mappersc                 C   r    rB   r¦   r   r   r   r   r�   6  ó   
ÿzMappedTest._setup_each_mappersc                 C   r    rB   r¡   r   r   r   r   rœ   :  r©   zMappedTest._setup_each_classesc                    sl   | j ‰ G ‡ fdd„dtƒ}G dd„ dt |t¡ƒ}G dd„ dt|ƒ}G dd„ dt|ƒ}|| _|| _|ƒ  d	S )
z¥Run a setup method, framing the operation with a Base class
        that will catch new subclasses to be established within
        the "classes" registry.

        c                       ó   e Zd Z‡ fdd„ZdS )z6MappedTest._with_register_classes.<locals>.FindFixturec                    ó   | ˆ |< t  | |||¡S r   )ÚtypeÚ__init__©r.   Ú	classnameÚbasesÚdict_©Úcls_registryr   r   r­   H  ó   z?MappedTest._with_register_classes.<locals>.FindFixture.__init__N©r   r    r!   r­   r   r²   r   r   ÚFindFixtureG  ó    r¶   c                   @   r“   )z0MappedTest._with_register_classes.<locals>._BaseNr•   r   r   r   r   Ú_BaseL  r–   r¸   c                   @   r“   )z0MappedTest._with_register_classes.<locals>.BasicNr•   r   r   r   r   ÚBasicO  r–   r¹   c                   @   r“   )z5MappedTest._with_register_classes.<locals>.ComparableNr•   r   r   r   r   Ú
ComparableR  r–   rº   N)	r˜   r¬   r   Úwith_metaclassÚobjectr   r   r¹   rº   )r.   rf   r¶   r¸   r¹   rº   r   r²   r   r£   >  s   
z!MappedTest._with_register_classesc                 C   s   | j dkrtj ¡  d S d S r;   )r§   r7   rŽ   r’   r   r   r   r   rž   Y  s   
ÿz!MappedTest._teardown_each_mappersc                 C   s   | j dkr| j ¡  d S d S r;   )r¢   r˜   rC   r   r   r   r   rŸ   `  s   
ÿz!MappedTest._teardown_each_classesc                 C   ra   r   r   r-   r   r   r   r¤   d  rb   zMappedTest.setup_classesc                 C   ra   r   r   r-   r   r   r   r¨   h  rb   zMappedTest.setup_mappers)r   r    r!   r¢   r§   r˜   r{   r/   r\   r   r   r›   r™   rš   r�   rœ   r£   rž   rŸ   r¤   r¨   r   r   r   r   r—     s4    






r—   c                   @   s,   e Zd ZdZdZedd„ ƒZedd„ ƒZdS )ÚDeclarativeMappedTestr(   c                 C   ra   r   r   r-   r   r   r   r+   q  rb   z(DeclarativeMappedTest._setup_once_tablesc                    sn   | j ‰ G ‡ fdd„dtƒ}G dd„ dtƒ}t| j||d�}|| _|ƒ  | jjr3| jr5| j t	j
¡ d S d S d S )Nc                       rª   )zLDeclarativeMappedTest._with_register_classes.<locals>.FindFixtureDeclarativec                    r«   r   )r   r­   r®   r²   r   r   r­   z  r´   zUDeclarativeMappedTest._with_register_classes.<locals>.FindFixtureDeclarative.__init__Nrµ   r   r²   r   r   ÚFindFixtureDeclarativey  r·   r¾   c                   @   s   e Zd ZejZdS )zFDeclarativeMappedTest._with_register_classes.<locals>.DeclarativeBasicN)r   r    r!   r   ÚTableÚ__table_cls__r   r   r   r   ÚDeclarativeBasic~  s    
rÁ   )r9   Ú	metaclassr.   )r˜   r   r¼   r   r9   rÁ   r4   r1   r@   r   r]   )r.   rf   r¾   rÁ   Ú	_DeclBaser   r²   r   r£   u  s   ýÿz,DeclarativeMappedTest._with_register_classesN)r   r    r!   r¢   r§   r{   r+   r£   r   r   r   r   r½   m  s    
r½   )rP   Ú
sqlalchemyr7   Ú r   r   r   Úenginesr   Úentitiesr   r   r   r	   r   Úext.declarativer   r   r¼   r   r'   r|   r�   r”   ÚAssertsExecutionResultsr—   r½   r   r   r   r   Ú<module>   s*     *l