
    j                    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    F/tmp/pip-target-jj7clzyk/lib/python/sqlalchemy/testing/fixtures/orm.pyr   zORMTest.fixture_session   s          N)__name__
__module____qualname__r
   fixturer    r   r   r   r      s    ^^! !r   r   c                  2   e Zd ZU dZdZdZded<    ej                  dd      ej                  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              #  *  K   | j                          | j                  t               | _        | j                          | j	                          | j                          | j                          d  | j                          | j                          y wr   )	_init_classr&   r   _setup_once_tables_setup_once_classes_setup_once_mappers_setup_once_inserts_teardown_once_class_teardown_once_metadata_bindclss    r   _setup_tables_test_classz#MappedTest._setup_tables_test_class*   sp      	;;'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&   clearr2   s    r   r0   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_classesr2   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 rD   )run_setup_mappers_generate_registrymapper_registrymapperrG   setup_mappersr2   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%   )rJ   rK   	__class__rL   rM   rG   rN   r   s    r   r9   zMappedTest._setup_each_mappersY   s`    !!V+ '').% !!V+''(:(:; ,r   c                Z    | j                   dk(  r| j                  | j                         y y )Nr%   rE   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   rK   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   rP   cls_registrys    r   r]   zBMappedTest._with_register_classes.<locals>._Base.__init_subclass__v   s(    #///-0S\\*)+r   returnNone)r   r   r   r]   __classcell__)rP   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   rG   z!MappedTest._with_register_classesl   sJ     {{	, 	,	K 		)5 	 	#
r   c                L    | j                   dk7  rt        j                          y y rD   )rJ   r   clear_mappersr   s    r   r=   z!MappedTest._teardown_each_mappers   s#     !!V+ ,r   c                X    | j                   dk7  r| j                  j                          y y rD   )rF   r&   rB   r   s    r   r>   z!MappedTest._teardown_each_classes   s%    !!V+LL  ,r   c                     y r   r!   r2   s    r   rH   zMappedTest.setup_classes       r   c                     y r   r!   r2   s    r   rN   zMappedTest.setup_mappers   rq   r   )r   r   r   rF   rJ   r&   __annotations__r
   r    fixture_classmethodr4   r@   classmethodr0   r-   r.   r9   r8   rK   rG   r=   r>   rH   rN   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!   r2   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   kwrP   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   )rP   r3   r^   s   @r   	_DeclBaser{      sT    "LLM++HYRYY[--BIIbM7Ix#0 0r   r   )r&   r   DeclarativeBasicr\   rG   rT   tablesrun_create_tables
create_allr
   db)r3   rl   r   r^   rP   s   `  @r   rG   z,DeclarativeMappedTest._with_register_classes   si    {{	0 	0  ) 	&r*&&3+@+@  ++FII6 ,A&r   )	r   r   r   rF   rJ   ru   r,   rG   rb   )rP   s   @r   rw   rw      s5      7 7r   rw   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   r2   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#   rw   r   setr   r   r<   r   r   r!   r   r   <module>r      s    #        " '   " ' !h !u*j&H&H up!7J !7H( ( E 
r   