
    g/                        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y)    )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  cg c]  }dD ]  }dD ]  }|||f	   c}}}}       d        Zyc c}}}} w )TestBase NFc                    |sJ |       y Nr   )selfvalmsgs      _/var/www/html/AdoubleTech/venv/lib/python3.12/site-packages/sqlalchemy/testing/fixtures/base.pyassert_zTestBase.assert_0   s    Cs    c              #     K   t         j                  j                  }d t         j                  _        d  |t         j                  _        y wr   )r   db_compiled_cache)r   _caches     r   nocachezTestBase.nocache3   s0     **$(		!$*		!s   A
Ac              #     K   t        | dd       xs t        j                  }|j                         5 }| d d d        y # 1 sw Y   y xY wwNbind)getattrr   r   connect)r   engconns      r   connection_no_transzTestBase.connection_no_trans:   sA     dFD)6VYY[[] 	dJ	 	 	s   0AA 	A A	Ac              #     K   t        | dd       xs t        j                  }|j                         }|j	                         }|a| d a|j                  r|j                          |j                          y wr#   )	r%   r   r   r&   begin_connection_fixture_connection	is_activerollbackclose)r   r'   r(   transs       r   
connectionzTestBase.connectionA   sb      dFD)6VYY{{}

)-&
)-&??NN 	

s   A5A7c              #     K   g g dfd	}| D ]  }	 |j                           D ]  }	 |j                           y #  Y 3xY w#  Y "xY ww)Nc                P    j                  |        |rj                  |        y y r   )append)resultconsumeto_close
to_consumes     r   goz/TestBase.close_result_when_finished.<locals>.go[   s%    OOF#!!&) r   )F)allr/   )r   r9   rr7   r8   s      @@r   close_result_when_finishedz#TestBase.close_result_when_finishedV   sk     
	*
  	A	
  	A		s2   AAAAAA	AAAc           
   #     K   t        |t        t        j                         j	                  t        j                  d      ddd      i      }| |j                          y w)N2   mysqlmariadboracle)metadatatype_annotation_map)r   strsaStringwith_variantdispose)r   rB   regs      r   r   zTestBase.registryl   sO     RYY[--IIbM7Ix!
 	s   A A"c              #  p   K   | G fddt               }| |j                  j                          y w)Nc                  ~    e Zd ZW  Ze ej                         j                   ej                  d      ddd      iZy) TestBase.decl_base.<locals>.Baser>   r?   r@   rA   N	__name__
__module____qualname__rB   rD   rE   rF   rG   rC   _mds   r   BaserL   }   s;    HYRYY[--BIIbM7Ix#r   rS   )r   r   rH   r   rB   rS   rR   s      @r   	decl_basezTestBase.decl_basey   s/     	? 	 
   36c              #  z   K   | G fddt         t              }| |j                  j                          y w)Nc                  |    e Zd ZW  Ze ej                         j                   ej                  d      dd      iZy)#TestBase.dc_decl_base.<locals>.Baser>   r?   r@   NrM   rQ   s   r   rS   rY      s9    HYRYY[--BIIbM7I#r   rS   )r   r   r   rH   rT   s      @r   dc_decl_basezTestBase.dc_decl_base   s2     	$o 	 
s   8;c              #     K   | y wr   r   )r   future_enginer1   s      r   future_connectionzTestBase.future_connection   s     
    c              #     K   d  y wr   r   )r   s    r   r\   zTestBase.future_engine   s	     r^   c              #  p   K   ddl m 	 	 	 	 	 	 dfd	}| j                  j                  d       y w)Nr   )enginesc                B    |i }d|d<   j                  | ||||      S )Nfixturescope)urloptionsasynciotransfer_staticpool
share_pool)testing_engine)re   rf   futurerg   rh   ri   ra   s         r   gen_testing_enginez3TestBase.testing_engine.<locals>.gen_testing_engine   s@     (GG))$7% *  r   rc   )NNNFFF) ra   testing_reaper_drop_testing_engines)r   rl   ra   s     @r   rj   zTestBase.testing_engine   s?       %	& ! 44Y?rV   c                    fd}|S )Nc                     d| d<    di | S )NTrg   r   r   )kwrj   s    r   r9   z)TestBase.async_testing_engine.<locals>.go   s     ByM!'B''r   r   )r   rj   r9   s    ` r   async_testing_enginezTestBase.async_testing_engine   s    	( 	r   c              #    K   ddl m} |j                         }||j                  _        | |j                  `t
        rft
        j                         rRt
        j                         }|j                          t
        j                         5  t        |t
               ddd       yt        |t        j                         y# 1 sw Y   yxY ww)z>Provide bound MetaData for a single test, dropping afterwards.r	   )schemaN)sqlru   MetaDatainstancerB   r,   in_transactionget_transactionr.   r+   r   r   r   )r   requestru   rB   r0   s        r   rB   zTestBase.metadata   s      	"??$$,!% +.==?2BBDENN/557 -< 
 *(FII> s   B
CC$CC
C)TF)noneexecuter+   )paramsc                    |j                   \  t        d|t        dt                    t	        | dd       xs t
        j                  }j                  |       fd}|S )Ntestdatar$   c           	        | j                         5 }rt        j                  j                  j                  st        j
                  d       |r| j                         }n|j                         }|5  |r#| j                  
j                         ddi       n"|j                  
j                         ddi       r|j                          n|j                          	dk7  rt        j                  t        j                  j                  d      5  	dk(  rH|r#| j                  
j                         ddi       nK|j                  
j                         ddi       n(	dk(  r#|r| j                          n|j                          d d d        d d d        |r$| j                  
j                         dd	i       n|j                  
j                         dd	i       nt|r#| j                  
j                         ddi       n"|j                  
j                         ddi       |r$r| j                          n4| j                          n#r|j                          n|j                          	dk7  rt        j                  t        j                  j                  d      5  	dk(  rH|r#| j                  
j                         ddi       n~|j                  
j                         ddi       n[	dk(  r.t!        |d      r|j                          n9| j                          n(	d
k(  r#|r| j                          n|j                          d d d        d d d        d}r|dz  }s|dz  }|rFt#        | j%                  t'        t)        j*                               j-                  
            |       y | j/                         5 }t#        |j%                  t'        t)        j*                               j-                  
            |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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+      begin_nestedr      )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.   second_operationts          r   run_testz4TestBase.trans_ctx_manager_fixture.<locals>.run_test   s    ^9E!..99AA(()AB)'.';';'=','9'9';% $=-#OOAHHJE!MM!((*vrlC $(113(//1+v5!+!A!A " : :!D" = $4y#@'9(/,-HHJ)* ).ahhj62,(O%5%@'9(/(<(<(>(-(:(:(<'=#$=R *
VRLAahhj62,? *
VRLAahhj62,?'##,,.#NN,#!NN,!LLN'61'==FF66@ 9  09<#5$+OOAHHJ$M$)MM!((*vrl$K!1W!<#*5'#:$)KKM$+MMO!1^!C#5$+$8$8$:$)$6$6$8+9S^9@ "# #a'" #a'"!NN6$**,#7#C#CA#FG&
 __& $F4::<$8$D$DQ$GH* m= =#$= $=@9 9S^9 ^9` se   A"P;4BP"A6PP"DP;%B)P/P;AQPP""P,	'P;/P8	4P;;QQ)paramr   r
   r   r%   r   r   create)	r   r{   rB   r'   r   r   r.   r   r   s	        @@@@r   trans_ctx_manager_fixturez"TestBase.trans_ctx_manager_fixture   s[     4;==0"L&(F67$;<dFD)6VYY	u	n r   r   )rN   rO   rP   __requires____unsupported_on____only_on____skip_if__"__leave_connections_for_teardown__r   r   rc   r!   r)   r1   r<   r   rU   rZ   r]   r\   rj   rs   rB   r   ).0r.   r   r   s   0000r   r   r      s    L  K K
 */& V^^+ + V^^  V^^ ( V^^ * V^^
 
 ^^    ^^    V^^  V^^  V^^@ @4 V^^  V^^? ?. V^^ *
 
$@
 !!	
  '6
6
6



s   0Er   c                      e Zd ZdZy)FutureEngineMixinz alembic's suite still using thisN)rN   rO   rP   __doc__r   r   r   r   r   m  s    *r   r   )
__future__r   
sqlalchemyrE   rm   r   r   r   utilr   r
   r   r   r   r   ormr   r   r   mark_base_test_classr   r,   r   r   r   r   <module>r      sk    #     0      " $  K K K\
 "& + +r   