o
    ŠågÏ  ã                   @  s  d dl mZ d dlm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 ddlmZ G dd„ deƒZG dd„ dee	ejƒZG dd„ deƒZG dd„ dƒZeƒ Zdd„ Zdd„ Z dd „ Z!d!d"„ Z"dS )#é    )Úannotations)ÚAnyNé   )ÚTestBase)Ú
TablesTesté   )Ú
assertions)Úconfig)Úschema)ÚBasicEntity)ÚComparableEntity)Úadicté   )Úorm)ÚDeclarativeBase)Úevents)Úregistryc                   @  s   e Zd Zejdd„ ƒZdS )ÚORMTestc                 C  s   t ƒ S ©N)Úfixture_session©Úself© r   ú[/var/www/html/flaskapp/venv/lib/python3.10/site-packages/sqlalchemy/testing/fixtures/orm.pyr      s   zORMTest.fixture_sessionN)Ú__name__Ú
__module__Ú__qualname__r	   Úfixturer   r   r   r   r   r      s    r   c                   @  sÂ   e Zd ZU dZdZdZded< ejddd�d	d
„ ƒZ	ejddd�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edd„ ƒZdd„ Zdd„ Zed d!„ ƒZed"d#„ ƒZdS )$Ú
MappedTestÚonceÚeachNr   ÚclassesTÚclass)ÚautouseÚscopec                 c  s\   � | j }| ¡  |jd u rtƒ |_| ¡  | ¡  | ¡  | ¡  d V  | ¡  | 	¡  d S r   )
Ú	__class__Ú_init_classr!   r   Ú_setup_once_tablesÚ_setup_once_classesÚ_setup_once_mappersÚ_setup_once_insertsÚ_teardown_once_classÚ_teardown_once_metadata_bind)r   Úclsr   r   r   Ú_setup_tables_test_class*   s   €
z#MappedTest._setup_tables_test_classÚfunctionc                 c  sN   � |   ¡  |  ¡  |  ¡  |  ¡  d V  tj ¡  |  ¡  |  ¡  |  	¡  d S r   )
Ú_setup_each_tablesÚ_setup_each_classesÚ_setup_each_mappersÚ_setup_each_insertsr   ÚsessionÚclose_all_sessionsÚ_teardown_each_mappersÚ_teardown_each_classesÚ_teardown_each_tablesr   r   r   r   Ú_setup_tables_test_instance<   s   €
z&MappedTest._setup_tables_test_instancec                 C  s   | j  ¡  d S r   )r!   Úclear©r-   r   r   r   r+   J   s   zMappedTest._teardown_once_classc                 C  ó   | j dkr|  | j¡ d S d S ©Nr   ©Úrun_setup_classesÚ_with_register_classesÚsetup_classesr;   r   r   r   r(   N   s   
ÿzMappedTest._setup_once_classesc                 C  s.   | j dkr|  ¡ \| _| _|  | j¡ d S d S r=   )Úrun_setup_mappersÚ_generate_registryÚmapper_registryÚmapperr@   Úsetup_mappersr;   r   r   r   r)   S   s   
þzMappedTest._setup_once_mappersc                 C  s<   | j dkr|  ¡ \| j_| j_| j dkr|  | j¡ d S d S )Nr   r    )rB   rC   r%   rD   rE   r@   rF   r   r   r   r   r2   Y   s   
ý
ÿzMappedTest._setup_each_mappersc                 C  r<   )Nr    r>   r   r   r   r   r1   c   s   
ÿzMappedTest._setup_each_classesc                 C  s   t | jd�}||jfS )N)Úmetadata)r   Ú_tables_metadataÚmap_imperatively)r-   Údeclr   r   r   rC   g   s   
zMappedTest._generate_registryc                   sR   | j ‰ G ‡ fdd„dƒ}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                      s    e Zd Zd‡ ‡fdd„Z‡  ZS )z0MappedTest._with_register_classes.<locals>._BaseÚreturnÚNonec                   s$   ˆd usJ ‚| ˆ| j < tƒ  ¡  d S r   ©r   ÚsuperÚ__init_subclass__r;   ©r%   Úcls_registryr   r   rO   v   s   
zBMappedTest._with_register_classes.<locals>._Base.__init_subclass__©rK   rL   )r   r   r   rO   Ú__classcell__r   ©rQ   ©r%   r   Ú_Baseu   s    rV   c                   @  ó   e Zd ZdS )z0MappedTest._with_register_classes.<locals>.BasicN©r   r   r   r   r   r   r   ÚBasic{   ó    rY   c                   @  rW   )z5MappedTest._with_register_classes.<locals>.ComparableNrX   r   r   r   r   Ú
Comparable~   rZ   r[   N)r!   r   r   rY   r[   )r-   ÚfnrV   rY   r[   r   rT   r   r@   l   s   
z!MappedTest._with_register_classesc                 C  s   | j dkrt ¡  d S d S r=   )rB   r   Úclear_mappersr   r   r   r   r6   …   s   
ÿz!MappedTest._teardown_each_mappersc                 C  s   | j dkr| j ¡  d S d S r=   )r?   r!   r:   r   r   r   r   r7   Œ   s   
ÿz!MappedTest._teardown_each_classesc                 C  ó   d S r   r   r;   r   r   r   rA   �   ó   zMappedTest.setup_classesc                 C  r^   r   r   r;   r   r   r   rF   ”   r_   zMappedTest.setup_mappers)r   r   r   r?   rB   r!   Ú__annotations__r	   r   r.   r9   Úclassmethodr+   r(   r)   r2   r1   rC   r@   r6   r7   rA   rF   r   r   r   r   r   !   s4   
 








r   c                      s4   e Zd ZdZdZedd„ ƒZe‡ fdd„ƒZ‡  ZS )ÚDeclarativeMappedTestr   c                 C  r^   r   r   r;   r   r   r   r'   �   r_   z(DeclarativeMappedTest._setup_once_tablesc                   sV   ˆ j ‰G ‡ ‡fdd„dtƒ}|ˆ _tƒ  |¡ ˆ jjr'ˆ jr)ˆ j t	j
¡ d S d S d S )Nc                      sJ   e Zd ZejZ”jZee	 
¡  e	 
d¡ddd¡iZd	‡ ‡fdd„Z‡  ZS )
z?DeclarativeMappedTest._with_register_classes.<locals>._DeclBaseé2   ÚmysqlÚmariadbÚoraclerK   rL   c                   s,   ˆd usJ ‚| ˆ| j < tƒ jdi |¤Ž d S )Nr   rM   )r-   ÚkwrP   r   r   rO   ®   s   
zQDeclarativeMappedTest._with_register_classes.<locals>._DeclBase.__init_subclass__rR   )r   r   r   r
   ÚTableÚ__table_cls__rH   rG   ÚstrÚsaÚStringÚwith_variantÚtype_annotation_maprO   rS   r   ©r-   rQ   rU   r   Ú	_DeclBase¥   s    
ÿÿrp   )r!   r   ÚDeclarativeBasicrN   r@   rH   ÚtablesÚrun_create_tablesÚ
create_allr	   Údb)r-   r\   rp   rU   ro   r   r@   ¡   s   ÿz,DeclarativeMappedTest._with_register_classes)	r   r   r   r?   rB   ra   r'   r@   rS   r   r   rU   r   rb   ™   s    
rb   c                   @  s    e Zd Zejdd�dd„ ƒZdS )ÚRemoveORMEventsGloballyT)r#   c                 c  s>   � d V  t j ¡  t j ¡  t j ¡  t j ¡  t j ¡  d S r   )Ú
orm_eventsÚMapperEventsÚ_clearÚInstanceEventsÚSessionEventsÚInstrumentationEventsÚQueryEventsr   r   r   r   Ú_remove_listeners¾   s   €



z)RemoveORMEventsGlobally._remove_listenersN)r   r   r   r	   r   r~   r   r   r   r   rv   ½   s    
rv   c                  K  sF   |   dd¡ |   dd¡ |  dtj¡}tj|fi | ¤Ž}t |¡ |S )NÚ	autoflushTÚexpire_on_commitÚbind)Ú
setdefaultÚpopr	   ru   r   ÚSessionÚ_fixture_sessionsÚadd)rg   r�   Úsessr   r   r   r   Ë   s   
r   c                   C  s   t  ¡  t ¡  d S r   )r   r5   r…   r:   r   r   r   r   r5   Ö   s   r5   c                 C  s   t ƒ  t ¡  d S r   )r5   r   r]   r;   r   r   r   Ústop_test_class_inside_fixturesÜ   s   rˆ   c                   C  s   t rtƒ  d S d S r   )r…   r5   r   r   r   r   Ú
after_testá   s   
ÿr‰   )#Ú
__future__r   Útypingr   Ú
sqlalchemyrk   Úbaser   Úsqlr   Ú r   r	   r
   Úentitiesr   r   Úutilr   r   r   r   rw   r   r   ÚAssertsExecutionResultsr   rb   rv   Úsetr…   r   r5   rˆ   r‰   r   r   r   r   Ú<module>   s0   x$