
    Zj2                    0   d dl mZ d dlmZ 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dS )    )annotations)Callable)SequenceN   )
assertions)config)eq_)drop_all_tables_from_metadata)picklers   )Column)func)Integer)select)Table)DeclarativeBase)MappedAsDataclassregistryc                  D   e Zd ZU dZded<   dZded<   dZded<   dZded	<   d
Zded<   ded<   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D                       d              ZdS )"TestBase ztuple[str, ...]__requires____unsupported_on__Nztuple[str, ...] | str | None__only_on__z#Sequence[Callable[[], bool]] | None__skip_if__Fbool"__leave_connections_for_teardown____backend__c                    |s
J |            d S Nr   )selfvalmsgs      d/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/sqlalchemy/testing/fixtures/base.pyassert_zTestBase.assert_6   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.nocache9   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.   )	r0   r   r)   r1   begin_connection_fixture_connection	is_activerollbackclose)r"   r2   r3   transs       r%   
connectionzTestBase.connectionG   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>.goa   sA    OOF### *!!&)))))* *r'   )F)allr:   )r"   rD   rrB   rC   s      @@r%   close_result_when_finishedz#TestBase.close_result_when_finished\   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"   rM   regs      r%   r   zTestBase.registryr   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>.BaserI   rJ   rK   rL   N	__name__
__module____qualname__rM   rO   rP   rQ   rR   rN   _mds   r%   BaserW      sN        HYRY[[--BIbMM7Ix #r'   r^   )r   r   rS   r"   rM   r^   r]   s      @r%   	decl_basezTestBase.decl_base   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>.BaserI   rJ   rK   NrX   r\   s   r%   r^   rc      sL        HYRY[[--BIbMM7I #r'   r^   )r   r   r   rS   r_   s      @r%   dc_decl_basezTestBase.dc_decl_base   sh      	 	 	 	 	 	 	$o 	 	 	 


r'   c              #     K   |V  d S r!   r   )r"   future_enginer<   s      r%   future_connectionzTestBase.future_connection   s      
 r'   c              #     K   d V  d S r!   r   )r"   s    r%   rf   zTestBase.future_engine   s      r'   c              #  f   K   ddl m 	 	 	 dfd	}|V  j                            d           d S )Nr   )enginesFc                F    |i }d|d<                        | ||          S )Nfixturescope)urloptionsasyncio)testing_engine)rn   ro   rp   rj   s      r%   gen_testing_enginez3TestBase.testing_engine.<locals>.gen_testing_engine   s?    
 (GG)) *   r'   rl   )NNF) rj   testing_reaper_drop_testing_engines)r"   rr   rj   s     @r%   rq   zTestBase.testing_engine   sm       	 	 	 	 	 	 !   44Y?????r'   c                    fd}|S )Nc                     d| d<    di | S )NTrp   r   r   )kwrq   s    r%   rD   z)TestBase.async_testing_engine.<locals>.go   s"     ByM!>''B'''r'   r   )r"   rq   rD   s    ` r%   async_testing_enginezTestBase.async_testing_engine   s#    	( 	( 	( 	( 	( 	r'   )paramsc              #     K   |j         V  d S r!   )param)r"   requests     r%   r   zTestBase.picklers   s      m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)sqlr   MetaDatainstancerM   r7   in_transactionget_transactionr9   r6   r
   r   r)   )r"   r}   r   rM   r;   s        r%   rM   zTestBase.metadata   s/      	"!!!!!??$$$,!% +	?.==??	? 3BBDDENN/5577  -<                   
 *(FI>>>>>s   B==CCc              #  J   K   ddl m d fd}|V  J j        = d S )Nr   r   c                B    | j         s
J d            | j        <   | S )Nzname is required)nameimpls)dialect_clsr   r   s    r%   rD   z'TestBase.thirdparty_dialect.<locals>.go   s2    #D++++++#.HN4 r'   )dialectsr   r   )r"   rD   r   r   s     @@r%   thirdparty_dialectzTestBase.thirdparty_dialect   sd      ((((((	 	 	 	 	 	 N4   r'   c                ,    g | ]}d D ]}dD ]}|||fS ))noneexecuter6   TFr   ).0r9   second_operationbegin_nesteds       r%   
<listcomp>zTestBase.<listcomp>   s`     
 
 
$@
 
 !!	
 
  '6
 
 
 
 
r'   r   c                    |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      r6      r   r      )r6   r   requirements
savepointsenabled	skip_testr   r   insertr9   commitr   expect_raises_messagerP   excInvalidRequestErrorhasattrr	   scalarr   r   countselect_fromr1   )subjecttrans_on_subjectexecute_on_subjectr;   nested_transexpected_committedr3   r   r9   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)r|   r   r   r   r0   r   r)   create)	r"   r}   rM   r2   r   r   r9   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!   )rY   rZ   r[   r   __annotations__r   r   r   r   r&   r   rl   r,   r4   r<   rG   r   r`   rd   rg   rf   rq   ry   r   rM   r   r   r   r'   r%   r   r      s         %'L&&&& +-,,,, 15K4444 8<K;;;;
 05&4444    V^+ + + V^   V^  ( V^  * V^
 
 
 ^    ^  ^    ^  V^   V^   V^@ @ @* V^   V^88::&&&  '& V^? ? ?. V^! ! !" V^
 
)
 
 

 
 
 
 
  r'   r   c                      e Zd ZdZdS )FutureEngineMixinz alembic's suite still using thisN)rY   rZ   r[   __doc__r   r'   r%   r   r     s        ****r'   r   )
__future__r   collections.abcr   r   
sqlalchemyrP   rs   r   r   r	   utilr
   r   r   r   r   r   r   ormr   r   r   mark_base_test_classr   r7   r   r   r'   r%   <module>r      s   # " " " " " $ $ $ $ $ $ $ $ $ $ $ $                       0 0 0 0 0 0                                     " " " " " " $ $ $ $ $ $       ^ ^ ^ ^ ^ ^ ^ ^B "& + + + + + + + + + +r'   