
    ؄_:                        d dl Z 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 d
dlmZ  G d de          Z G d de          Z G d de          Z G d de          Z G d dee          Z G d deeej                  Z G d de          Z G d de          ZdS )     N   )
assertions)configschema)drop_all_tables)BasicEntity)ComparableEntity)adict   )event)util)declarative_base)DeclarativeMeta)sort_tables_and_constraintsc                   f    e Zd ZdZdZdZdZdZddZd Z	d Z
 ej                    d             ZdS )TestBase Nc                     |s
J |            d S Nr   )selfvalmsgs      `/var/www/book.euthymeo.com/html/venv/lib/python3.11/site-packages/sqlalchemy/testing/fixtures.pyassert_zTestBase.assert_1   s    C    c                 R    t          | d          r|                                  d S d S )NsetUp)hasattrr   r   s    r   setupzTestBase.setup5   s/    4!! 	JJLLLLL	 	r   c                 R    t          | d          r|                                  d S d S )NtearDown)r   r#   r    s    r   teardownzTestBase.teardown9   s/    4$$ 	MMOOOOO	 	r   c              #   "  K   t           j                                        }|                                }	 |V  |                                 |                                 d S # |                                 |                                 w xY wr   )r   dbconnectbeginrollbackclose)r   conntranss      r   
connectionzTestBase.connection=   sz      y  ""

	JJJNNJJLLLLL NNJJLLLLs   A$ $*Br   )__name__
__module____qualname____whitelist____requires____unsupported_on____only_on____skip_if__r   r!   r$   r   fixturer-   r   r   r   r   r      s         M L  K K        V^    r   r   c                   h   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             Zed             Zed             Zed             Zd Zd	 Zd
 Zd Zd Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zd Zd Zed             Z dS )
TablesTestonceeachNc                 ~    |                                   |                                  |                                  d S r   )_init_class_setup_once_tables_setup_once_insertsclss    r   setup_classzTablesTest.setup_classq   s<       !!!!!r   c                 &   | j         dk    r| j        dk    rd| _        | j        dv sJ t                      | _        t                      | _        |                                 | _        t          j	                    | _
        | j        | j
        _        d S )Nr:   r9   )r:   N)run_define_tablesrun_create_tablesrun_insertsr   othertables
setup_bindbindsaMetaDatametadatar?   s    r   r<   zTablesTest._init_classy   s     F**$..(.%?n4444GG	WW
>>##{}}Hr   c                     | j         dk    r]|                                  | j                                        5 }|                     |           d d d            d S # 1 swxY w Y   d S d S Nr9   rE   _load_fixturesrI   r(   insert_data)r@   r+   s     r   r>   zTablesTest._setup_once_inserts   s    ?f$$   !! &T%%%& & & & & & & & & & & & & & & & & & %$   AA #A c                     | j         dk    rj|                     | j                   | j        dk    r| j                            | j                   | j                            | j        j                   d S d S rN   rC   define_tablesrL   rD   
create_allrI   rG   updater?   s    r   r=   zTablesTest._setup_once_tables   su     F**cl+++$..''111Jcl122222	 +*r   c                 H   | j         dk    rj|                     | j                   | j        dk    r| j                            | j                   | j                            | j        j                   d S | j        dk    r!| j                            | j                   d S d S Nr:   rT   r    s    r   _setup_each_tableszTablesTest._setup_each_tables   s    !V++t}---%//((333Kt}344444#v--M$$TY///// .-r   c                     | j         dk    r]|                                  | j                                        5 }|                     |           d d d            d S # 1 swxY w Y   d S d S rY   rO   )r   r+   s     r   _setup_each_insertszTablesTest._setup_each_inserts   s    v%%!!!"" 'd  &&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' &%rR   c           	         | j         dk    rX| j                                         | j        dk    rt	          | j        | j                   | j                                         n%| j        dk    rt	          | j        | j                   | j         dk    r| j        dk    r| j                                        5 }t          d t          | j        j                                                  D                       D ]q}	 |                    |                                           +# t          j        j        $ r0}t#          j        d|d|t&          j                   Y d }~jd }~ww xY w	 d d d            d S # 1 swxY w Y   d S d S d S )Nr:   c                     g | ]	\  }}||
S r   r   ).0tfkss      r   
<listcomp>z4TablesTest._teardown_each_tables.<locals>.<listcomp>   s-       $Q =	  )==r   zError emptying table z: )file)rC   rG   clearrD   r   rL   rI   run_deletesr'   reversedr   valuesexecutedeleterJ   exc
DBAPIErrorr   print_sysstderr)r   r+   tableexs       r   _teardown_each_tablesz TablesTest._teardown_each_tables   s   !V++K%//ty999M!!!!#v--DM49555 !V++0@F0J0J""$$ % (C M07799) )     EU\\^^44446,   >CeeRRH!$                          ,+0J0Js=   8AE;>'D&%E;&E*:&E% E;%E**E;;E?E?c                 V    |                                   |                                  d S r   )rZ   r\   r    s    r   r!   zTablesTest.setup   s,    !!!  """""r   c                 .    |                                   d S r   )rq   r    s    r   r$   zTablesTest.teardown   s    ""$$$$$r   c                     | j         rt          | j        | j                   | j        dk    r|                     | j                   d | j        _        | j        	d | _        d S d S rN   )rD   r   rL   rI   run_dispose_binddispose_bindrun_setup_bindr?   s    r   _teardown_once_metadata_bindz'TablesTest._teardown_once_metadata_bind   sk      	4CL#(3336))SX&&& )CHHH *)r   c                 .    |                                   d S r   )rx   r?   s    r   teardown_classzTablesTest.teardown_class   s    ((*****r   c                     t           j        S r   )r   r&   r?   s    r   rH   zTablesTest.setup_bind   s
    yr   c                     t          |d          r|                                 d S t          |d          r|                                 d S d S )Ndisposer*   )r   r}   r*   )r@   rI   s     r   rv   zTablesTest.dispose_bind   sR    4## 	LLNNNNNT7## 	JJLLLLL	 	r   c                     d S r   r   )r@   rL   s     r   rU   zTablesTest.define_tables       r   c                     i S r   r   r?   s    r   fixtureszTablesTest.fixtures   s    	r   c                     d S r   r   )r@   r-   s     r   rQ   zTablesTest.insert_data   r   r   c                 >    |                      | j        ||           d S r   )assert_sql_countrI   )r   countfns      r   
sql_count_zTablesTest.sql_count_   s"    diU33333r   c                 >    |                      | j        ||           d S r   )
assert_sqlrI   )r   	callable_
statementss      r   sql_eq_zTablesTest.sql_eq_   s     	9j99999r   c                    i i c}|                                                                  D ]X\  }t          |          dk     rt          t          j                  r| j                 |d         <   |dd         |<   Yt          | j        j        	                                          D ]M\  }vr| j
                                                            fd|         D                        NdS )z4Insert rows as represented by the fixtures() method.r   r   r   Nc                 V    g | ]%}t          t                   |                    &S r   )dictzip)r_   column_valuesheadersro   s     r   rb   z-TablesTest._load_fixtures.<locals>.<listcomp>  s?       % WU^];;<<  r   )r   itemslen
isinstancer   string_typesrG   r   rL   rg   rI   rh   insert)r@   rowsdatara   r   ro   s       @@r   rP   zTablesTest._load_fixtures   s7    B<<>>//11 	# 	#KE44yy1}}%!233 *
5)!!WGENqrr(DKK5L&&((
 
 	 	JE3 }G##H    )-e     	 	r   )!r.   r/   r0   rw   rC   rD   rE   re   ru   rI   rL   rG   rF   classmethodrA   r<   r>   r=   rZ   r\   rq   r!   r$   rx   rz   rH   rv   rU   r   rQ   r   r   rP   r   r   r   r8   r8   X   s         N   K K DHFE" " [" % % [% & & [& 3 3 [30 0 0' ' '  :# # #% % % 
 
 [
 + + [+   [   [   [   [   [4 4 4: : :   [  r   r8   c                   D     e Zd Zej        d             Zd Z fdZ xZS )RemovesEventsc                     t                      S r   )setr    s    r   
_event_fnszRemovesEvents._event_fns  s    uur   c                 h    | j                             |||f           t          j        |||fi | d S r   )r   addr   listen)r   targetnamer   kws        r   event_listenzRemovesEvents.event_listen  sA    VT2.///VT2,,,,,,,r   c                     | j         D ]}t          j        |  t          t          |           }t          |d          r|                                 d S d S )Nr$   )r   r   removesuperr   r   r$   )r   keysuper_	__class__s      r   r$   zRemovesEvents.teardown  se    ? 	 	CL#}d++6:&& 	OO	 	r   )	r.   r/   r0   r   memoized_propertyr   r   r$   __classcell__r   s   @r   r   r     sd        	  - - -        r   r   c                   $    e Zd Zed             ZdS )_ORMTestc                     t           j        j                                         t           j                                         d S r   )rJ   ormsessionclose_all_sessionsclear_mappersr?   s    r   rz   z_ORMTest.teardown_class$  s2    
))+++
r   N)r.   r/   r0   r   rz   r   r   r   r   r   #  s-          [  r   r   c                       e Zd ZdS )ORMTestNr.   r/   r0   r   r   r   r   r   *  s        Dr   r   c                       e Zd ZdZdZdZed             Zed             Zd Z	d Z
ed             Zed	             Zed
             Zd Zd Zed             Zd Zd Zed             Zed             ZdS )
MappedTestr9   r:   Nc                    |                                   | j        t                      | _        |                                  |                                  |                                  |                                  d S r   )r<   classesr   r=   _setup_once_classes_setup_once_mappersr>   r?   s    r   rA   zMappedTest.setup_class7  ss    ;''CK   !!!!!!!!!!!r   c                 V    |                                   |                                  d S r   )_teardown_once_classrx   r?   s    r   rz   zMappedTest.teardown_classC  s,      """((*****r   c                     |                                   |                                  |                                  |                                  d S r   )rZ   _setup_each_classes_setup_each_mappersr\   r    s    r   r!   zMappedTest.setupH  sP    !!!  """  """  """""r   c                     t           j        j                                         |                                  |                                  |                                  d S r   )rJ   r   r   r   _teardown_each_mappers_teardown_each_classesrq   r    s    r   r$   zMappedTest.teardownN  sT    
))+++##%%%##%%%""$$$$$r   c                 j    | j                                          t                                           d S r   )r   rd   r   rz   r?   s    r   r   zMappedTest._teardown_once_classT  s.    !!!!!r   c                 T    | j         dk    r|                     | j                   d S d S rN   run_setup_classes_with_register_classessetup_classesr?   s    r   r   zMappedTest._setup_once_classesY  5     F**&&s'899999 +*r   c                 T    | j         dk    r|                     | j                   d S d S rN   run_setup_mappersr   setup_mappersr?   s    r   r   zMappedTest._setup_once_mappers^  r   r   c                 T    | j         dk    r|                     | j                   d S d S rY   r   r    s    r   r   zMappedTest._setup_each_mappersc  5    !V++''(:;;;;; ,+r   c                 T    | j         dk    r|                     | j                   d S d S rY   r   r    s    r   r   zMappedTest._setup_each_classesg  r   r   c                    | j          G fddt                    } G d dt          j        |t                              } G d dt
          |          } G 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                       e Zd Z fdZdS )6MappedTest._with_register_classes.<locals>.FindFixturec                 L    | |<   t                               | |||           d S r   )type__init__r@   	classnamebasesdict_cls_registrys       r   r   z?MappedTest._with_register_classes.<locals>.FindFixture.__init__u  s+    *-Y'c9eU;;;;;r   Nr.   r/   r0   r   r   s   r   FindFixturer   t  s.        < < < < < < <r   r   c                       e Zd ZdS )0MappedTest._with_register_classes.<locals>._BaseNr   r   r   r   _Baser   y          Dr   r   c                       e Zd ZdS )0MappedTest._with_register_classes.<locals>.BasicNr   r   r   r   Basicr   |  r   r   r   c                       e Zd ZdS )5MappedTest._with_register_classes.<locals>.ComparableNr   r   r   r   
Comparabler     r   r   r   N)	r   r   r   with_metaclassobjectr	   r
   r   r   )r@   r   r   r   r   r   r   s         @r   r   z!MappedTest._with_register_classesk  s     {	< 	< 	< 	< 	< 	< 	<$ 	< 	< 	<
	 	 	 	 	D'V<< 	 	 		 	 	 	 	K 	 	 		 	 	 	 	)5 	 	 	 	#
r   c                 \    | j         dk    r t          j                                         d S d S rN   )r   rJ   r   r   r    s    r   r   z!MappedTest._teardown_each_mappers  s4     !V++F  """"" ,+r   c                 R    | j         dk    r| j                                         d S d S rN   )r   r   rd   r    s    r   r   z!MappedTest._teardown_each_classes  s2    !V++L      ,+r   c                     d S r   r   r?   s    r   r   zMappedTest.setup_classes  r   r   c                     d S r   r   r?   s    r   r   zMappedTest.setup_mappers  r   r   )r.   r/   r0   r   r   r   r   rA   rz   r!   r$   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   .  sW        G	" 	" [	" + + [+# # #% % % " " [" : : [: : : [:< < << < <   [4# # #! ! !   [   [  r   r   c                   L     e Zd ZdZdZed             Ze fd            Z xZS )DeclarativeMappedTestr9   c                     d S r   r   r?   s    r   r=   z(DeclarativeMappedTest._setup_once_tables  r   r   c                 j   | j          G fddt                    } G d dt                    }t          | j        ||          }|| _        t          t          |                               |           | j        j	        r-| j
        r(| j                            t          j                   d S d S d S )Nc                       e Zd Z fdZdS )LDeclarativeMappedTest._with_register_classes.<locals>.FindFixtureDeclarativec                 @    | |<   t          j        | |||           d S r   )r   r   r   s       r   r   zUDeclarativeMappedTest._with_register_classes.<locals>.FindFixtureDeclarative.__init__  s*    *-Y'(iFFFFFr   Nr   r   s   r   FindFixtureDeclarativer     s5        G G G G G G Gr   r   c                       e Zd Zej        ZdS )FDeclarativeMappedTest._with_register_classes.<locals>.DeclarativeBasicN)r.   r/   r0   r   Table__table_cls__r   r   r   DeclarativeBasicr     s        "LMMMr   r   )rL   	metaclassr@   )r   r   r   r   rL   r   r   r   r   rG   rD   rV   r   r&   )r@   r   r   r   	_DeclBaser   r   s        @r   r   z,DeclarativeMappedTest._with_register_classes  s   {	G 	G 	G 	G 	G 	G 	G_ 	G 	G 	G
	) 	) 	) 	) 	)v 	) 	) 	) %\, 
 
 
	
  ) 	#S))@@DDD< 	/3#8 	/L##FI.....	/ 	/ 	/ 	/r   )	r.   r/   r0   r   r   r   r=   r   r   r   s   @r   r   r     si          [ / / / / [/ / / / /r   r   c                   Z    e Zd ZdxZZdZdZ ej        d          Z	d Z
ed             ZdS )ComputedReflectionFixtureTestNT)computed_columnstable_reflectionz[\[\]\(\)\s`'\"]*c                 \    | j                             d|                                          S )N )regexpsublower)r   texts     r   	normalizez'ComputedReflectionFixtureTest.normalize  s$    {r4((..000r   c                    ddl m} ddl m} ddlm} ddlm} ddlm}  |d| |d|d	
           |d|           |d| |d                     |d|d                      |d| |d|d	
           |d|           |d| |d                              }|j        j        j	        rE |d| |d|d	
           |d|           |d| |d                    t          j                  }|j        j        j	        rg|                     |d| |dd                               |j        j        j	        r+|                     |d| |dd                               |j        j        j	        ri|                     |d| |dd	                               |j        j        j	        r/|                     |d| |dd	                               d S d S d S )Nr   )Integer)testing)Column)Computed)r   computed_default_tableidT)primary_keynormalcomputed_colznormal + 42with_default42)server_defaultcomputed_column_tablecomputed_no_flagznormal / 42r   computed_virtualz
normal + 2F)	persistedz
normal / 2computed_storedznormal - 42znormal * 42)r  r  r  r   r  r  r   requiresschemasenabledr   test_schemacomputed_columns_virtualappend_columncomputed_columns_stored)	r@   rL   r  r  r  r  r   r`   t2s	            r   rU   z+ComputedReflectionFixtureTest.define_tables  s   ######%%%%%%""""""$F4d333F8W%%F>7HH],C,CDDF>74@@@	
 	
 	
 E#F4d333F8W%%F%w0G0GHH
 
 #+ 	'tW$777x)))7HH]4K4KLL)  B 4< 	OO&H\U;;;    '/   F* ???    3; 	OO%H]d;;;    '/   F) $???     	 	 r   )r.   r/   r0   rE   re   __backend__r2   recompiler	  r  r   rU   r   r   r   r  r    si         $$K+K;LRZ,--F1 1 1 A A [A A Ar   r  )r)  rm   
sqlalchemyrJ   r  r   r   r   enginesr   entitiesr	   r
   r   r   r   ext.declarativer   r   r   r   r   r8   r   r   r   AssertsExecutionResultsr   r   r  r   r   r   <module>r0     s~   
			 



                       $ $ $ $ $ $ ! ! ! ! ! ! & & & & & &                   . . . . . . - - - - - - 0 0 0 0 0 0' ' ' ' 'v ' ' 'tw w w w w w w wt    F   "    v   	 	 	 	 	h 	 	 	i i i i i:z'I i i iX /  /  /  /  /J  /  /  /FM M M M MJ M M M M Mr   