
    עiD1                       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                  2   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        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      a/sites/domain-asset-master/.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)allr1   )r   r;   rr9   r:   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   rD   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@   rA   rB   rC   N	__name__
__module____qualname__rD   rF   rG   rH   rI   rE   _mds   r   BaserN   ~   s;    HYRYY[--BIIbM7Ix#r   rU   )r   r   rJ   r   rD   rU   rT   s      @r   	decl_basezTestBase.decl_basez   s/     	? 	 
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@   rA   rB   NrO   rS   s   r   rU   rZ      s9    HYRYY[--BIIbM7I#r   rU   )r   r   r   rJ   rV   s      @r   dc_decl_basezTestBase.dc_decl_base   s2     	$o 	 
s   8;c              #     K   | y wr   r   )r   future_enginer3   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              #  j   K   ddl m 	 	 	 dfd	}| j                  j                  d       y w)Nr   )enginesc                >    |i }d|d<   j                  | ||      S )Nfixturescope)urloptionsasyncio)testing_engine)rf   rg   rh   rb   s      r   gen_testing_enginez3TestBase.testing_engine.<locals>.gen_testing_engine   s:    
 (GG)) *  r   rd   )NNF) rb   testing_reaper_drop_testing_engines)r   rj   rb   s     @r   ri   zTestBase.testing_engine   s6      	 ! 44Y?s   03c                    fd}|S )Nc                     d| d<    di | S )NTrh   r   r   )kwri   s    r   r;   z)TestBase.async_testing_engine.<locals>.go   s     ByM!'B''r   r   )r   ri   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)sqlrw   MetaDatainstancerD   r.   in_transactionget_transactionr0   r-   r   r   r    )r   ru   rw   rD   r2   s        r   rD   zTestBase.metadata   s      	"??$$,!% +.==?2BBDENN/557 -< 
 *(FII> s   B
CC$CC
Cc              #  V   K   ddl m d fd}| J j                  = y w)Nr
   r   c                P    | j                   sJ d       | j                  <   | S )Nzname is required)nameimpls)dialect_clsr   r   s    r   r;   z'TestBase.thirdparty_dialect.<locals>.go   s0    ##D+++4#.HNN4 r   )dialectsr   r   )r   r;   r   r   s     @@r   thirdparty_dialectzTestBase.thirdparty_dialect   s3     (	 NN4 s   %))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   insertr0   commitr   expect_raises_messagerG   excInvalidRequestErrorhasattrr   scalarr   r   countselect_fromr(   )subjecttrans_on_subjectexecute_on_subjectr2   nested_transexpected_committedr*   r   r0   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)rt   r   r   r   r'   r   r    create)	r   ru   rD   r)   r   r   r0   r   r   s	        @@@@r   trans_ctx_manager_fixturez"TestBase.trans_ctx_manager_fixture   s[     4;==0"L&(F67$;<dFD)6VYY	u	n r   r   )rP   rQ   rR   __requires____unsupported_on____only_on____skip_if__"__leave_connections_for_teardown__r   r   rd   r#   r+   r3   r>   r   rW   r[   r^   r]   ri   rq   r	   rD   r   r   ).0r0   r   r   s   0000r   r   r      s5    L  K K
 */& V^^+ + V^^  V^^ ( V^^ * V^^
 
 ^^    ^^    V^^  V^^  V^^@ @* V^^  V^^8:& ' V^^? ?. V^^! !" V^^ *
 
$@
 !!	
  '6
6
6



s   %Fr   c                      e Zd ZdZy)FutureEngineMixinz alembic's suite still using thisN)rP   rQ   rR   __doc__r   r   r   r   r     s    *r   r   )
__future__r   
sqlalchemyrG   rk   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       " $  \ \ \~
 "& + +r   