o
    E6d                     @  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   vC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\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__Z_init_classr!   r   _setup_once_tables_setup_once_classes_setup_once_mappersZ_setup_once_inserts_teardown_once_classZ_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   )
Z_setup_each_tables_setup_each_classes_setup_each_mappersZ_setup_each_insertsr   sessionclose_all_sessions_teardown_each_mappers_teardown_each_classesZ_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_classesr5   r   r   r   r'   N   s   
zMappedTest._setup_once_classesc                 C  s.   | j dkr|  \| _| _| | j d S d S r7   )run_setup_mappers_generate_registrymapper_registrymapperr:   setup_mappersr5   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    )r<   r=   r%   r>   r?   r:   r@   r   r   r   r   r.   Y   s   

zMappedTest._setup_each_mappersc                 C  r6   )Nr    r8   r   r   r   r   r-   c   s   
zMappedTest._setup_each_classesc                 C  s   t | jd}||jfS )N)metadata)r   _tables_metadataZmap_imperatively)r*   declr   r   r   r=   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 )zRun 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__r5   r%   cls_registryr   r   rH   v   s   
zBMappedTest._with_register_classes.<locals>._Base.__init_subclass__rD   rE   )r   r   r   rH   __classcell__r   rJ   r%   r   _Baseu   s    rO   c                   @     e Zd ZdS )z0MappedTest._with_register_classes.<locals>.BasicNr   r   r   r   r   r   r   Basic{       rR   c                   @  rP   )z5MappedTest._with_register_classes.<locals>.ComparableNrQ   r   r   r   r   
Comparable~   rS   rT   N)r!   r   r   rR   rT   )r*   fnrO   rR   rT   r   rM   r   r:   l   s   
z!MappedTest._with_register_classesc                 C  s   | j dkrt  d S d S r7   )r<   r   clear_mappersr   r   r   r   r1      s   
z!MappedTest._teardown_each_mappersc                 C  s   | j dkr| j  d S d S r7   )r9   r!   r4   r   r   r   r   r2      s   
z!MappedTest._teardown_each_classesc                 C     d S r   r   r5   r   r   r   r;         zMappedTest.setup_classesc                 C  rW   r   r   r5   r   r   r   r@      rX   zMappedTest.setup_mappers)r   r   r   r9   r<   r!   __annotations__r	   r   r+   r3   classmethodr)   r'   r(   r.   r-   r=   r:   r1   r2   r;   r@   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  rW   r   r   r5   r   r   r   r&      rX   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>._DeclBase2   mysqlZmariadbZoraclerD   rE   c                   s,   d usJ | | j < t jdi | d S )Nr   rF   )r*   kwrI   r   r   rH      s   
zQDeclarativeMappedTest._with_register_classes.<locals>._DeclBase.__init_subclass__rK   )r   r   r   r
   TableZ__table_cls__rB   rA   strsaStringZwith_variantZtype_annotation_maprH   rL   r   r*   rJ   rN   r   	_DeclBase   s    
rd   )r!   r   ZDeclarativeBasicrG   r:   rB   ZtablesZrun_create_tablesZ
create_allr	   db)r*   rU   rd   rN   rc   r   r:      s   z,DeclarativeMappedTest._with_register_classes)	r   r   r   r9   r<   rZ   r&   r:   rL   r   r   rN   r   r[      s    
r[   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_eventsZMapperEvents_clearZInstanceEventsZSessionEventsZInstrumentationEventsZQueryEventsr   r   r   r   _remove_listeners   s   



z)RemoveORMEventsGlobally._remove_listenersN)r   r   r   r	   r   ri   r   r   r   r   rf      s    
rf   c                  K  sF   |  dd |  dd | dtj}tj|fi | }t| |S )NZ	autoflushTZexpire_on_commitbind)
setdefaultpopr	   re   r   Session_fixture_sessionsadd)r^   rj   sessr   r   r   r      s   
r   c                   C  s   t   t  d S r   )r   r0   rn   r4   r   r   r   r   r0      s   r0   c                 C  s   t   t  d S r   )r0   r   rV   r5   r   r   r   stop_test_class_inside_fixtures   s   rq   c                   C  s   t rt  d S d S r   )rn   r0   r   r   r   r   
after_test   s   
rr   )#
__future__r   typingr   Z
sqlalchemyra   baser   sqlr    r   r	   r
   entitiesr   r   utilr   r   r   r   rg   r   r   ZAssertsExecutionResultsr   r[   rf   setrn   r   r0   rq   rr   r   r   r   r   <module>   s0   x$