
    [h/                       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  ej                     G d d                      Zda G d d          ZdS )    )annotationsN   )
assertions)config)eq_)drop_all_tables_from_metadata   )Column)func)Integer)select)Table)DeclarativeBase)MappedAsDataclass)registryc                     e Zd ZdZdZdZdZdZddZ e	j
                    d             Z e	j
                    d             Z e	j
                    d             Z e	j
                    d             Z e	j
                    d	             Ze	j
        d
             Ze	j
        d             Z e	j
                    d             Z e	j
                    d             Z e	j
                    d             Z e	j
                    d             Z e	j
                    d             Z e	j
        d dD                       d             ZdS )TestBase NFc                    |s
J |            d S Nr   )selfvalmsgs      o/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/sqlalchemy/testing/fixtures/base.pyassert_zTestBase.assert_0   s    C    c              #  x   K   t           j        j        }d t           j        _        d V  |t           j        _        d S r   )r   db_compiled_cache)r   _caches     r   nocachezTestBase.nocache3   s3      *$(	!$*	!!!r   c              #     K   t          | dd           pt          j        }|                                5 }|V  d d d            d S # 1 swxY w Y   d S Nbind)getattrr   r   connect)r   engconns      r   connection_no_transzTestBase.connection_no_trans:   s      dFD))6VY[[]] 	dJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA
A
c              #    K   t          | dd           pt          j        }|                                }|                                }|a|V  d a|j        r|                                 |                                 d S r#   )	r%   r   r   r&   begin_connection_fixture_connection	is_activerollbackclose)r   r'   r(   transs       r   
connectionzTestBase.connectionA   s|       dFD))6VY{{}}

)-&


)-&? 	NN 	

r   c              #     K   g g dfd	}|V  D ]}	 |                                  #  Y xY wD ]}	 |                                 #  Y xY wd S )NFc                d                         |            |r                     |            d S d S r   )append)resultconsumeto_close
to_consumes     r   goz/TestBase.close_result_when_finished.<locals>.go[   sA    OOF### *!!&)))))* *r   )F)allr/   )r   r9   rr7   r8   s      @@r   close_result_when_finishedz#TestBase.close_result_when_finishedV   s      
	* 	* 	* 	* 	* 	* 	*
  	 	A 	 	A						 	s   .2AAc           
   #     K   t          |t          t          j                                        t          j        d          ddd          i          }|V  |                                 d S )N2   mysqlmariadboracle)metadatatype_annotation_map)r   strsaStringwith_variantdispose)r   rB   regs      r   r   zTestBase.registryl   sj      RY[[--IbMM7Ix !
 
 
 			r   c              #  t   K   | G fddt                     }|V  |j                                         d S )Nc                  ~    e Zd Z Ze ej                                         ej        d          ddd          iZdS ) TestBase.decl_base.<locals>.Baser>   r?   r@   rA   N	__name__
__module____qualname__rB   rD   rE   rF   rG   rC   _mds   r   BaserL   }   sN        HYRY[[--BIbMM7Ix #r   rS   )r   r   rH   r   rB   rS   rR   s      @r   	decl_basezTestBase.decl_basey   se      	 	 	 	 	 	 	? 	 	 	 


r   c              #     K   | G fddt           t                    }|V  |j                                         d S )Nc                  |    e Zd Z Ze ej                                         ej        d          dd          iZdS )#TestBase.dc_decl_base.<locals>.Baser>   r?   r@   NrM   rQ   s   r   rS   rX      sL        HYRY[[--BIbMM7I #r   rS   )r   r   r   rH   rT   s      @r   dc_decl_basezTestBase.dc_decl_base   sh      	 	 	 	 	 	 	$o 	 	 	 


r   c              #     K   |V  d S r   r   )r   future_enginer1   s      r   future_connectionzTestBase.future_connection   s      
 r   c              #     K   d V  d S r   r   )r   s    r   r[   zTestBase.future_engine   s      r   c              #  l   K   ddl m 	 	 	 	 	 	 dfd	}|V  j                            d           d S )Nr   )enginesFc                J    |i }d|d<                        | ||||          S )Nfixturescope)urloptionsasynciotransfer_staticpool
share_pool)testing_engine)rc   rd   futurere   rf   rg   r_   s         r   gen_testing_enginez3TestBase.testing_engine.<locals>.gen_testing_engine   sE     (GG))$7% *   r   ra   )NNNFFF) r_   testing_reaper_drop_testing_engines)r   rj   r_   s     @r   rh   zTestBase.testing_engine   sv        %	 	 	 	 	 	& !   44Y?????r   c                    fd}|S )Nc                     d| d<    di | S )NTre   r   r   )kwrh   s    r   r9   z)TestBase.async_testing_engine.<locals>.go   s"     ByM!>''B'''r   r   )r   rh   r9   s    ` r   async_testing_enginezTestBase.async_testing_engine   s#    	( 	( 	( 	( 	( 	r   c              #    K   ddl m} |                                }||j        _        |V  |j        `t
          rt
                                          rvt
                                          }|                                 t
          	                                5  t          |t
                     ddd           dS # 1 swxY w Y   dS t          |t          j                   dS )z>Provide bound MetaData for a single test, dropping afterwards.r	   )schemaN)sqlrs   MetaDatainstancerB   r,   in_transactionget_transactionr.   r+   r   r   r   )r   requestrs   rB   r0   s        r   rB   zTestBase.metadata   s/      	"!!!!!??$$$,!% +	?.==??	? 3BBDDENN/5577  -<                   
 *(FI>>>>>s   B==CCc                ,    g | ]}d D ]}dD ]}|||fS ))noneexecuter+   TFr   ).0r.   second_operationbegin_nesteds       r   
<listcomp>zTestBase.<listcomp>   s`     
 
 
$@
 
 !!	
 
  '6
 
 
 
 
r   r}   )paramsc                    |j         \  t          d|t          dt                              t	          | dd           pt
          j        }                    |           fd}|S )Ntestdatar$   c           	     	   |                                  5 }rt          j        j        j        st          j        d           |r|                                 }n|                                }|5  |r+|                     
                                ddi           n*|                    
                                ddi           r|	                                 n|
                                 	dk    rt          j        t          j        j        d          5  	dk    rX|r+|                     
                                ddi           n\|                    
                                ddi           n1	dk    r+|r|                                  n|                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |r,|                     
                                dd	i           n|                    
                                dd	i           n|r+|                     
                                ddi           n*|                    
                                ddi           |r,r| 	                                 n@| 
                                 n+r|	                                 n|
                                 	dk    rt          j        t          j        j        d          5  	dk    rX|r+|                     
                                ddi           n|                    
                                ddi           nq	dk    r:t!          |d          r|                                  nF|                                   n1	d
k    r+|r|                                  n|                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d}r|dz  }s|dz  }|rVt#          |                     t'          t)          j                                                  
                    |           d S |                                 5 }t#          |                    t'          t)          j                                                  
                    |           d d d            d S # 1 swxY w Y   d S )Nzsavepoints not enabledr   
   r{   zCan't operate on closed transaction inside context manager.  Please complete the context manager before emitting further commands.r|      r+      r   r      )r+   r   requirements
savepointsenabled	skip_testr   r|   insertr.   commitr   expect_raises_messagerE   excInvalidRequestErrorhasattrr   scalarr   r   countselect_fromr&   )subjecttrans_on_subjectexecute_on_subjectr0   nested_transexpected_committedr(   r   r.   r   ts          r   run_testz4TestBase.trans_ctx_manager_fixture.<locals>.run_test   sQ    ^9E ]9!.9A C()ABBB) <'.';';'='=','9'9';';% $= $=- D#OOAHHJJEEEE!MM!((**vrlCCC $ 2(113333(//111+v55!+!A " :!D" " = = $4y#@#@'9 %P(/,-HHJJ)* )* )* )* ).ahhjj62,(O(O(O(O%5%@%@'9 %=(/(<(<(>(>(>(>(-(:(:(<(<(<'= = = = = = = = = = = = = = =#$= $= $= $= $= $= $= $= $= $= $= $= $= $= $=R * @

VRLAAAAahhjj62,???? * @

VRLAAAAahhjj62,???' 	+# -#,,....#NN,,,,# +!NN,,,,!LLNNN'611'=F6@  9 9  09<<#5 !L$+OOAHHJJ$M$M$M$M$)MM!((**vrl$K$K$K$K!1W!<!<#*5'#:#: !4$)KKMMMM$+MMOOOO!1^!C!C#5 !9$+$8$8$:$:$:$:$)$6$6$8$8$8+9 9 9 9 9 9 9 9 9 9 9 9 9 9 9S^9 ^9 ^9 ^9 ^9 ^9 ^9 ^9 ^9 ^9 ^9 ^9 ^9 ^9 ^9@ "# ( #a'" ( #a'"! 
NN6$*,,#7#7#C#CA#F#FGG&    
 __&& $F4:<<$8$8$D$DQ$G$GHH*                   s   AP1B-GBF:.G:F>>GF>GPG	PG	D8PCO-!P-O1	1P4O1	5PPPAS--S14S1)paramr   r
   r   r%   r   r   create)	r   ry   rB   r'   r   r   r.   r   r   s	        @@@@r   trans_ctx_manager_fixturez"TestBase.trans_ctx_manager_fixture   s     4;=0"L&(F67$;$;<<dFD))6VY	u	 u	 u	 u	 u	 u	 u	 u	n r   r   )rN   rO   rP   __requires____unsupported_on____only_on____skip_if__"__leave_connections_for_teardown__r   r   ra   r!   r)   r1   r<   r   rU   rY   r\   r[   rh   rq   rB   r   r   r   r   r   r      sX        L  K K
 */&    V^+ + + V^   V^  ( V^  * V^
 
 
 ^    ^  ^    ^  V^   V^   V^@ @ @4 V^   V^? ? ?. V^
 
)
 
 

 
 
 
 
  r   r   c                      e Zd ZdZdS )FutureEngineMixinz alembic's suite still using thisN)rN   rO   rP   __doc__r   r   r   r   r   m  s        ****r   r   )
__future__r   
sqlalchemyrE   rk   r   r   r   utilr   r
   r   r   r   r   ormr   r   r   mark_base_test_classr   r,   r   r   r   r   <module>r      s   # " " " " "                       0 0 0 0 0 0                               " " " " " " $ $ $ $ $ $       K K K K K K K K\
 "& + + + + + + + + + +r   