
    g                    H   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e      Z G d dee	ej2                        Z G d de      Z G d d      Z e       Zd Zd Z d Z!d Z"y)    )annotations)AnyN   )TestBase)
TablesTest   )
assertions)config)schema)BasicEntity)ComparableEntity)adict   )orm)DeclarativeBase)events)registryc                  0    e Zd Zej                  d        Zy)ORMTestc                    t               S N)fixture_sessionselfs    ^/var/www/html/AdoubleTech/venv/lib/python3.12/site-packages/sqlalchemy/testing/fixtures/orm.pyr   zORMTest.fixture_session   s          N)__name__
__module____qualname__r
   fixturer    r   r   r   r      s    ^^! !r   r   c                     e Zd ZU dZdZdZded<    ej                  dd      d	        Z	 ej                  dd
      d        Z
ed        Zed        Zed        Zd Zd Zed        Zed        Zd Zd Zed        Zed        Zy)
MappedTestonceeachNr   classesTclass)autousescopec              #  B  K   | j                   }|j                          |j                  t               |_        |j	                          |j                          |j                          |j                          d  |j                          |j                          y w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   clss     r   _setup_tables_test_classz#MappedTest._setup_tables_test_class*   sw     nn;;'CK !!!  "((*s   BBfunctionc              #  0  K   | j                          | j                          | j                          | j                          d  t        j
                  j                          | j                          | j                          | j                          y w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   s    r   _setup_tables_test_instancez&MappedTest._setup_tables_test_instance<   sm     !  "  "  "&&(##%##%""$s   BBc                8    | j                   j                          y r   )r&   clearr3   s    r   r1   zMappedTest._teardown_once_classJ   s    r   c                Z    | j                   dk(  r| j                  | j                         y y Nr$   run_setup_classes_with_register_classessetup_classesrC   s    r   r.   zMappedTest._setup_once_classesN   s)      F*&&s'8'89 +r   c                    | j                   dk(  r9| j                         \  | _        | _        | j	                  | j
                         y y rE   )run_setup_mappers_generate_registrymapper_registrymapperrH   setup_mappersrC   s    r   r/   zMappedTest._setup_once_mappersS   sA      F*.1.D.D.F+C&&s'8'89 +r   c                    | j                   dk7  r1| j                         \  | j                  _        | j                  _        | j                   dk(  r| j                  | j                         y y )Nr$   r%   )rK   rL   r+   rM   rN   rH   rO   r   s    r   r9   zMappedTest._setup_each_mappersY   s`    !!V+ '').% !!V+''(:(:; ,r   c                Z    | j                   dk(  r| j                  | j                         y y )Nr%   rF   r   s    r   r8   zMappedTest._setup_each_classesc   s)    !!V+''(:(:; ,r   c                J    t        | j                        }||j                  fS )N)metadata)r   _tables_metadatamap_imperatively)r3   decls     r   rL   zMappedTest._generate_registryg   s#    !5!56T****r   c                    | j                    G fdd      } G d dt        |      } G d dt        |      }|| _        || _         |        y)zRun 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d fdZ xZS )0MappedTest._with_register_classes.<locals>._Basec                H    J | | j                   <   t        | 	          y r   r   super__init_subclass__)r3   r+   cls_registrys    r   r]   zBMappedTest._with_register_classes.<locals>._Base.__init_subclass__v   s(    #///-0S\\*)+r   returnNone)r   r   r   r]   __classcell__)r+   r^   s   @r   _BaserY   u   s    , ,r   rc   c                      e Zd Zy)0MappedTest._with_register_classes.<locals>.BasicNr   r   r   r!   r   r   Basicre   {       r   rg   c                      e Zd Zy)5MappedTest._with_register_classes.<locals>.ComparableNrf   r!   r   r   
Comparablerj   ~   rh   r   rk   N)r&   r   r   rg   rk   )r3   fnrc   rg   rk   r^   s        @r   rH   z!MappedTest._with_register_classesl   sJ     {{	, 	,	K 		)5 	 	#
r   c                L    | j                   dk7  rt        j                          y y rE   )rK   r   clear_mappersr   s    r   r=   z!MappedTest._teardown_each_mappers   s#     !!V+ ,r   c                X    | j                   dk7  r| j                  j                          y y rE   )rG   r&   rB   r   s    r   r>   z!MappedTest._teardown_each_classes   s%    !!V+LL  ,r   c                     y r   r!   rC   s    r   rI   zMappedTest.setup_classes       r   c                     y r   r!   rC   s    r   rO   zMappedTest.setup_mappers   rq   r   )r   r   r   rG   rK   r&   __annotations__r
   r    r4   r@   classmethodr1   r.   r/   r9   r8   rL   rH   r=   r>   rI   rO   r!   r   r   r#   r#   !   s     GSV^^D0+ 1+" V^^D
3% 4%   : : : :
<< + +  0 !    r   r#   c                  @     e Zd ZdZdZed        Ze fd       Z xZS )DeclarativeMappedTestr$   c                     y r   r!   rC   s    r   r-   z(DeclarativeMappedTest._setup_once_tables   rq   r   c                     j                    G  fddt              }| _        t           |        j
                  j                  r7 j                  r* j
                  j                  t        j                         y y y )Nc                       e Zd Zej                  ZW j                  Ze e	j                         j                   e	j                  d      ddd      iZd fdZ xZS )?DeclarativeMappedTest._with_register_classes.<locals>._DeclBase2   mysqlmariadboraclec                J    J | | j                   <   t        |   di | y )Nr!   r[   )r3   kwr+   r^   s     r   r]   zQDeclarativeMappedTest._with_register_classes.<locals>._DeclBase.__init_subclass__   s-    #///-0S\\*)/B/r   r_   )r   r   r   r   Table__table_cls__rT   rS   strsaStringwith_varianttype_annotation_mapr]   rb   )r+   r3   r^   s   @r   	_DeclBaserz      sT    "LLM++HYRYY[--BIIbM7Ix#0 0r   r   )r&   r   DeclarativeBasicr\   rH   rT   tablesrun_create_tables
create_allr
   db)r3   rl   r   r^   r+   s   `  @r   rH   z,DeclarativeMappedTest._with_register_classes   si    {{	0 	0  ) 	&r*&&3+@+@  ++FII6 ,A&r   )	r   r   r   rG   rK   rt   r-   rH   rb   )r+   s   @r   rv   rv      s5      7 7r   rv   c                  >    e Zd Z ej                  d      d        Zy)RemoveORMEventsGloballyT)r(   c              #  @  K   d  t         j                  j                          t         j                  j                          t         j                  j                          t         j
                  j                          t         j                  j                          y wr   )
orm_eventsMapperEvents_clearInstanceEventsSessionEventsInstrumentationEventsQueryEventsr   s    r   _remove_listenersz)RemoveORMEventsGlobally._remove_listeners   sc     &&(!!((*  '')((//1%%'s   BBN)r   r   r   r
   r    r   r!   r   r   r   r      s    V^^D!( "(r   r   c                     | j                  dd       | j                  dd       | j                  dt        j                        }t	        j
                  |fi | }t        j                  |       |S )N	autoflushTexpire_on_commitbind)
setdefaultpopr
   r   r   Session_fixture_sessionsadd)r   r   sesss      r   r   r      sY    MM+t$MM$d+66&&))$D;;t"r"D$Kr   c                 T    t        j                          t        j                          y r   )r   r<   r   rB   r!   r   r   r<   r<      s    r   c                @    t                t        j                          y r   )r<   r   rn   rC   s    r   stop_test_class_inside_fixturesr      s    r   c                 &    t         rt                y y r   )r   r<   r!   r   r   
after_testr      s     r   )#
__future__r   typingr   
sqlalchemyr   baser   sqlr    r	   r
   r   entitiesr   r   utilr   r   r   r   r   r   r   AssertsExecutionResultsr#   rv   r   setr   r   r<   r   r   r!   r   r   <module>r      s    #        " '   " ' !h !u*j&H&H up!7J !7H( ( E 
r   