
    ha0                       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 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)picklers   )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                   e             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/eduruby.in/venv/lib/python3.12/site-packages/sqlalchemy/testing/fixtures/base.pyassert_zTestBase.assert_1   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.nocache4   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.connectionB   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)allr0   )r   r:   rr8   r9   s      @@r   close_result_when_finishedz#TestBase.close_result_when_finishedW   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   rC   regs      r   r   zTestBase.registrym   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@   rA   rB   N	__name__
__module____qualname__rC   rE   rF   rG   rH   rD   _mds   r   BaserM   ~   s;    HYRYY[--BIIbM7Ix#r   rT   )r   r   rI   r   rC   rT   rS   s      @r   	decl_basezTestBase.decl_basez   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@   rA   NrN   rR   s   r   rT   rZ      s9    HYRYY[--BIIbM7I#r   rT   )r   r   r   rI   rU   s      @r   dc_decl_basezTestBase.dc_decl_base   s2     	$o 	 
s   8;c              #     K   | y wr   r   )r   future_enginer2   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)rf   rg   futurerh   ri   rj   rb   s         r   gen_testing_enginez3TestBase.testing_engine.<locals>.gen_testing_engine   s@     (GG))$7% *  r   rd   )NNNFFF) rb   testing_reaper_drop_testing_engines)r   rm   rb   s     @r   rk   zTestBase.testing_engine   s?       %	& ! 44Y?rW   c                    fd}|S )Nc                     d| d<    di | S )NTrh   r   r   )kwrk   s    r   r:   z)TestBase.async_testing_engine.<locals>.go   s     ByM!'B''r   r   )r   rk   r:   s    ` r   async_testing_enginezTestBase.async_testing_engine   s    	( 	r   )paramsc              #  (   K   |j                    y wr   )param)r   requests     r   r	   zTestBase.picklers   s     mms   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)sqlrz   MetaDatainstancerC   r-   in_transactionget_transactionr/   r,   r   r   r   )r   rx   rz   rC   r1   s        r   rC   zTestBase.metadata   s      	"??$$,!% +.==?2BBDENN/557 -< 
 *(FII> s   B
CC$CC
C)TF)noneexecuter,   c                    |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_messagerF   excInvalidRequestErrorhasattrr   scalarr   r   countselect_fromr'   )subjecttrans_on_subjectexecute_on_subjectr1   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)rw   r   r   r   r&   r   r   create)	r   rx   rC   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   )rO   rP   rQ   __requires____unsupported_on____only_on____skip_if__"__leave_connections_for_teardown__r   r   rd   r"   r*   r2   r=   r   rV   r[   r^   r]   rk   rt   r	   rC   r   ).0r/   r   r   s   0000r   r   r      s    L  K K
 */& V^^+ + V^^  V^^ ( V^^ * V^^
 
 ^^    ^^    V^^  V^^  V^^@ @4 V^^  V^^8:& ' V^^? ?. V^^ *
 
$@
 !!	
  '6
6
6



s   E:r   c                      e Zd ZdZy)FutureEngineMixinz alembic's suite still using thisN)rO   rP   rQ   __doc__r   r   r   r   r   r  s    *r   r   )
__future__r   
sqlalchemyrF   rn   r   r   r   utilr   r	   r   r   r   r   r   ormr   r   r   mark_base_test_classr   r-   r   r   r   r   <module>r      sn    #     0       " $  O O Od
 "& + +r   