
    [h0                        d dl Z d dlZd dl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Z
d'd	Z G d
 d          Zd'dZd'dZ G d d          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Zej        Zd Zd Zd Zd Zd Zd'dZd  Zd'd!Zd" Zd'd#Z d'd$Z!d'd%Z"d& Z#dS )(    N   )config   )util)	decorator)inspect_getfullargspecc                 v    t                      }t          | |          }|j                            |           |S N)compound_as_predicateskipsadd	predicatereasonrulepreds       l/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/sqlalchemy/testing/exclusions.pyskip_ifr      3    ::DF++DJNN4K    c                 v    t                      }t          | |          }|j                            |           |S r
   )r   r   failsr   r   s       r   fails_ifr      r   r   c                       e Zd Zd Zd Zd Zd Zd Zed             Z	d Z
d Zd	 Zd
 Zej        d             Zd ZddZddZdS )r   c                 R    t                      | _        t                      | _        d S r
   )setr   r   selfs    r   __init__zcompound.__init__#   s    UU
UU


r   c                 ,    |                      |          S r
   )r   r   others     r   __add__zcompound.__add__'   s    xxr   c                     t                      }|j                            | j                   |j                            | j                   |S r
   )r   r   updater   )r   r   s     r   as_skipszcompound.as_skips*   s@    zz
$*%%%
$*%%%r   c                 $   t                      }|j                            | j                   |j                            | j                   |D ]@}|j                            |j                   |j                            |j                   A|S r
   r   r   r&   r   )r   otherscopyr#   s       r   r   zcompound.add0   s    zz
$*%%%
$*%%% 	+ 	+EJek***Jek****r   c                     t                      }|j                            d | j        D                        |j                            d | j        D                        |S )Nc              3   4   K   | ]}t          |          V  d S r
   NotPredicate).0fails     r   	<genexpr>z compound.not_.<locals>.<genexpr><   *      DD,t,,DDDDDDr   c              3   4   K   | ]}t          |          V  d S r
   r.   )r0   skips     r   r2   z compound.not_.<locals>.<genexpr>=   r3   r   r)   )r   r+   s     r   not_zcompound.not_:   s^    zz
DDDDDDDD
DDDDDDDDr   c                 @    |                      t          j                  S r
   )enabled_for_configr   _currentr   s    r   enabledzcompound.enabled@   s    &&v777r   c                 f    | j                             | j                  D ]} ||          r dS dS )NFTr   unionr   )r   r   r   s      r   r8   zcompound.enabled_for_configD   sH    ))$*55 	 	Iy   uu 4r   c                 Z    fd| j                             | j                  D             S )Nc                 P    g | ]"} |          |                               #S  
_as_string)r0   r   r   s     r   
<listcomp>z4compound.matching_config_reasons.<locals>.<listcomp>L   sG     
 
 
y  
  ((
 
 
r   r<   r   r   s    `r   matching_config_reasonsz compound.matching_config_reasonsK   s@    
 
 
 
!Z--dj99
 
 
 	
r   c                     | j                             |j                    | j                            |j                   d S r
   )r   r&   r   r"   s     r   _extendzcompound._extendR   s8    
%+&&&
%+&&&&&r   c                      t          |d          r|j                                        |S t           fd            } ||          } |_        |S )N_sa_exclusion_extendc                 <     j         t          j        | g|R i |S r
   )_dor   r9   )fnargskwr   s      r   decoratez#compound.__call__.<locals>.decorate[   s)    48FOR=$==="===r   )hasattrrI   rG   r   )r   rL   rO   	decorateds   `   r   __call__zcompound.__call__V   sr    2-.. 	#++D111I		> 	> 	> 	> 
	> HRLL	)-	&r   c              #   L  K   t                      }|j                            | j                            | j                             	 d V  |                    t          j                   d S # t          $ r+}|	                    t          j        |           Y d }~d S d }~ww xY wr
   )
r   r   r&   r   r=   _expect_successr   r9   	Exception_expect_failure)r   	all_failsexs      r   fail_ifzcompound.fail_ifc   s      JJ	tz//
;;<<<	7EEE %%fo66666  	; 	; 	;%%for:::::::::	;s   	A. .
B#8 BB#c                 d   | j         D ]M} ||          r@dt          j                    d|                    |          }t          j        |           N	  ||i |}|                     ||j                   |S # t          $ r(}|                     |||j                   Y d }~d S d }~ww xY w)N'z' : )name)	r   r   get_current_test_namerB   	skip_testrT   __name__rU   rV   )	r   cfgrL   rM   rN   r5   msgreturn_valuerX   s	            r   rK   zcompound._doo   s    J 	& 	&DtCyy & &02222OOC(((  %%%	 2t?r??L   2; 777	  	< 	< 	<  br{ ;;;;;;;;;	<s   A= =
B/B**B/blockc           	          | j         D ];} ||          r.t          |d|                    |          d|d            d S <|                    t	          j                    d                   )Nz failed as expected (z):  r   )r   printrB   with_tracebacksysexc_info)r   r   rX   r\   r1   s        r   rV   zcompound._expect_failure   s    J 	7 	7DtF|| ttT__V4444bbb:    ##CLNN1$5666r   c           
          | j         sd S | j         D ]G} |          r:t          d|dd                    fd| j         D                       d          Hd S )NzUnexpected success for 'z' ( and c              3   B   K   | ]}|                               V  d S r
   rA   )r0   r1   r   s     r   r2   z+compound._expect_success.<locals>.<genexpr>   s@       % %8<DOOF33% % % % % %r   ))r   AssertionErrorjoin)r   r   r\   r1   s    `  r   rT   zcompound._expect_success   s    z 	FJ 
	 
	DtF|| 	$n  % % % %@D
% % %      	
	 
	r   N)rc   )r_   
__module____qualname__r    r$   r'   r   r6   propertyr:   r8   rE   rG   rR   
contextlibcontextmanagerrY   rK   rV   rT   r@   r   r   r   r   "   s                  8 8 X8  
 
 
' ' '   	7 	7 	7     "	7 	7 	7 	7     r   r   c                 Z    t          |           } t          t          |           |          S r
   )r   r   r/   r   r   s     r   only_ifrw      s'    i((I<	**F333r   c                 Z    t          |           } t          t          |           |          S r
   )r   r   r/   rv   s     r   succeeds_ifry      s'    i((IL++V444r   c                   6    e Zd Zedd            ZddZddZdS )		PredicateNc                 X    t          |t                    r                     |j        |          S t          |t                    r|r|j        ||_        |S t          |t          t          f          rt           fd|D             |          S t          |t                    r	t          | S t          |t                    rt          j        d|          }|st          d|z            |                    d          }|                    d          }|                    d          r?t          d |                    d                              d          D                       nd }t          ||||	          S t#          |          rt%          ||          S J d|z              )Nc                 :    g | ]}                     |          S r@   )as_predicate)r0   r   clss     r   rC   z*Predicate.as_predicate.<locals>.<listcomp>   s'    >>>D!!$''>>>r   z.([\+\w]+)\s*(?:(>=|==|!=|<=|<|>)\s*([\d\.]+))?z(Couldn't locate DB name in predicate: %rr   r      c              3   4   K   | ]}t          |          V  d S r
   )int)r0   ds     r   r2   z)Predicate.as_predicate.<locals>.<genexpr>   s(      AAc!ffAAAAAAr   .)descriptionFzunknown predicate type: %s)
isinstancer   r~   r8   r{   r   listr   OrPredicatetupleSpecPredicatestrrematch
ValueErrorgroupsplitcallableLambdaPredicate)r   r   r   tokensdbopspecs   `      r   r~   zPredicate.as_predicate   s   i**  	C##I$@+NNN	9-- 	C 4y4<(3	%	D#;// 	C>>>>I>>>   	5)) 	C ),,	3'' 	CXA9 F   >J   aBaB <<??AAfll1oo&;&;C&@&@AAAAAA  !R;GGGGi   	C"9k:::B6BBBBr   Fc                      | |          }|r| }| j         |r|j        j                                        nd|r|j        j                                        nd|rdnd|rdnddz  S )Nz<no driver>z<no database>zdoesn't supportzdoes support)driverdatabasedoesnt_supportdoes_support)r   r   urlget_driver_nameget_backend_name)r   r   negatebool_s       r   _format_descriptionzPredicate._format_description   s    V 	JE39L	--///} 5;O	..00038L//n.3JNN9J	#
 	#
 	
 		
r   c                     t                      r
   )NotImplementedErrorr   r   r   s      r   rB   zPredicate._as_string   s    !###r   r
   F)NF)r_   rp   rq   classmethodr~   r   rB   r@   r   r   r{   r{      s_        !C !C !C [!CF
 
 
 
$ $ $ $ $ $r   r{   c                   $    e Zd ZddZd ZddZdS )BooleanPredicateNc                 ,    || _         |pd|z  | _        d S )Nz
boolean %s)valuer   )r   r   r   s      r   r    zBooleanPredicate.__init__   s!    
&>,*>r   c                     | j         S r
   )r   rD   s     r   rR   zBooleanPredicate.__call__   s
    zr   Fc                 0    |                      ||          S )Nr   r   r   s      r   rB   zBooleanPredicate._as_string   s    ''v'>>>r   r
   r   r_   rp   rq   r    rR   rB   r@   r   r   r   r      sK        ? ? ? ?  ? ? ? ? ? ?r   r   c            	           e Zd ZddZej        ej        ej        ej        ej	        ej
        ej        d dZd Zd	dZdS )
r   Nc                 >    || _         || _        || _        || _        d S r
   )r   r   r   r   )r   r   r   r   r   s        r   r    zSpecPredicate.__init__   s%    	&r   c                 2    | |d         k    o| |d         k    S )Nr   r   r@   )valpairs     r   <lambda>zSpecPredicate.<lambda>   s    SDG^%FtAw r   )<>z==z!=z<=z>=inbetweenc                 z   |dS |j         }d| j         v r| j                             d          \  }}n	| j         d }}|r|j        |k    rdS ||j        |k    rdS | j        Z|
J d            t          |          }t          | j        d          r| j        p| j        | j                 } ||| j                  S dS )NF+z%DBAPI version specs not supported yetrR   T)	r   r   r\   r   r   _server_versionrP   _opsr   )r   r   enginedialectr   versionopers          r   rR   zSpecPredicate.__call__   s    >5$'>>"gmmC00OGVV"gtVG 	v{g--5&-6"9"957>>#J>>>%f--G,,8NDIdg<N  4+++4r   Fc                     | j         |                     |          S | j        |r
d| j        z  S d| j        z  S |rd| j        d| j        d| j        S | j        d| j        d| j        S )Nznot %sz%sznot re   )r   r   r   r   r   r   s      r   rB   zSpecPredicate._as_string  s    '++F333W_ &$'))dg~% B B)-$'''499EE%)WWWdgggtyyAAr   NNNr   )r_   rp   rq   r    operatorltgteqnelegecontainsr   rR   rB   r@   r   r   r   r      s        ' ' ' ' [[kkkkFF	 	D  6B B B B B Br   r   c                   $    e Zd ZddZd ZddZdS )r   Nc                     t                    }|d         sfd| _        n| _        |pd| _        |pi | _        |r	|| _        d S j        rj        | _        d S d| _        d S )Nr   c                                  S r
   r@   )r   lambda_s    r   r   z*LambdaPredicate.__init__.<locals>.<lambda>*  s    ggii r   r@   zcustom function)r   r   rM   rN   r   __doc__)r   r   r   rM   rN   r   s    `    r   r    zLambdaPredicate.__init__'  s    %g..Aw 	#////DLL"DLJB	( 	1*D_ 	1&D0Dr   c                 ,    |                      |          S r
   )r   rD   s     r   rR   zLambdaPredicate.__call__6  s    ||F###r   Fc                 ,    |                      |          S r
   r   r   s      r   rB   zLambdaPredicate._as_string9  s    ''///r   r   r   r   r@   r   r   r   r   &  sK        1 1 1 1$ $ $0 0 0 0 0 0r   r   c                   $    e Zd ZddZd ZddZdS )r/   Nc                 "    || _         || _        d S r
   )r   r   )r   r   r   s      r   r    zNotPredicate.__init__>  s    "&r   c                 .    |                      |           S r
   )r   rD   s     r   rR   zNotPredicate.__call__B  s    >>&))))r   Fc                 v    | j         r|                     ||           S | j                            ||           S r
   )r   r   r   rB   r   s      r   rB   zNotPredicate._as_stringE  s@     	A++FJ???>,,VZ@@@r   r
   r   r   r@   r   r   r/   r/   =  sQ        ' ' ' '* * *A A A A A Ar   r/   c                   2    e Zd ZddZd Zd	dZd Zd	dZdS )
r   Nc                 "    || _         || _        d S r
   )
predicatesr   )r   r   r   s      r   r    zOrPredicate.__init__M  s    $&r   c                 6    | j         D ]} ||          r dS dS )NTF)r   )r   r   r   s      r   rR   zOrPredicate.__call__Q  s4    O 	 	DtF|| ttur   Fc                 b    rd}nd}|                     fd| j        D                       S )Nrk   z or c              3   F   K   | ]}|                                V  dS )r   NrA   )r0   pr   r   s     r   r2   z(OrPredicate._eval_str.<locals>.<genexpr>\  sD        
  
45ALLL// 
  
  
  
  
  
r   )ro   r   )r   r   r   conjunctions    `` r   	_eval_strzOrPredicate._eval_strW  s]     	!!KK K  
  
  
  
  
9= 
  
  
 
 
 	
r   c                 n    | j         d|                     |          z   S |                     |d          S )NzNot Tr   )r   r   r   rD   s     r   _negation_strzOrPredicate._negation_str`  s:    'D44V<<<<>>&>666r   c                     |r|                      |          S | j        |                     |          S |                     |          S r
   )r   r   r   r   r   s      r   rB   zOrPredicate._as_stringf  sM     	.%%f---+//777~~f---r   r
   r   )r_   rp   rq   r    rR   r   r   rB   r@   r   r   r   r   L  sn        ' ' ' '  
 
 
 
7 7 7. . . . . .r   r   c                 J     t          | ||          t          j                  S r
   )r   r   r9   )r   r   r   s      r   _is_excludedr   s  s     &=R&&v777r   c                     |                                  }t          | j        dd          }|d}|                                 |S )z#Return a server_version_info tuple.server_version_infoNr@   )connectgetattrr   close)r   connr   s      r   r   r   w  sC     >>Dfn&;TBBGJJLLLNr   c                  4    t          d | D                       S )Nc                 B    g | ]}t                               |          S r@   r{   r~   r0   r   s     r   rC   zdb_spec.<locals>.<listcomp>  s&    AAAr	..r22AAAr   r   dbss    r   db_specr     s    AASAAABBBr   c                  <    t          t          dd                    S )NFzmark as executer   r   r@   r   r   openr     s    #E+<==>>>r   c                  <    t          t          dd                    S )NTzmarked as skipr   r@   r   r   closedr     s    #D*:;;<<<r   c                 @    t          t          d| pd                    S )NTzexpected to failr   r   )r   s    r   r   r     s!    $T6+G5GHHIIIr   c                  <    t          t          dd                    S )NTzFuture featurer   r@   r   r   futurer     s    $T+;<<===r   c                 "    t          | |          S r
   )r   r   r   s     r   fails_onr     s    Br   c                  N    t          t          d | D                                 S )Nc                 B    g | ]}t                               |          S r@   r   r   s     r   rC   z.fails_on_everything_except.<locals>.<listcomp>  s&    #M#M#M2I$:$:2$>$>#M#M#Mr   )ry   r   r   s    r   fails_on_everything_exceptr    s'    {#M#M#M#M#MNNOOOr   c                 "    t          | |          S r
   )r   r   s     r   r5   r5     s    2vr   c                 x    t          t          fdt          j        |           D                                 S )Nc                 F    g | ]}t                               |          S r@   r   )r0   r   r   s     r   rC   zonly_on.<locals>.<listcomp>  s)    LLLBY##B//LLLr   )rw   r   r   to_list)r   r   s    `r   only_onr    sC    LLLL$,s:K:KLLL	
 	
  r   c                 @    t          t          | ||          |          S r
   )r   r   )r   r   r   r   s       r   excluder    s    =R..777r   c                 ^    |s
J d             t          d |D                       |           S )Nzno queries sent!c                 B    g | ]}t                               |          S r@   r   )r0   querys     r   rC   zagainst.<locals>.<listcomp>  s&    KKK%	..u55KKKr   r   )r   queriess     r   againstr    sE    &&&&&&L;KK7KKKLL  r   r
   )$rs   r   r   rh    r   r   r   util.compatr   r   r   r   rw   ry   r{   r   r   r   r/   r   r~   r   r   r   r   r   r   r   r   r   r  r5   r  r  r  r@   r   r   <module>r     s        				 



                   0 0 0 0 0 0      w w w w w w w wt4 4 4 4
5 5 5 5
5$ 5$ 5$ 5$ 5$ 5$ 5$ 5$p	? 	? 	? 	? 	?y 	? 	? 	?9B 9B 9B 9B 9BI 9B 9B 9Bx0 0 0 0 0i 0 0 0.A A A A A9 A A A!. !. !. !. !.) !. !. !.H &8 8 8	 	 	C C C? ? ?= = =J J J J> > >       P P P      8 8 8 8    r   