
    h_2                     z   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#y)(    N   )config   )util)	decorator)inspect_getfullargspecc                 h    t               }t        | |      }|j                  j                  |       |S N)compound_as_predicateskipsadd	predicatereasonrulepreds       FD:\EasyAligner\venv\Lib\site-packages\sqlalchemy/testing/exclusions.pyskip_ifr      *    :DF+DJJNN4K    c                 h    t               }t        | |      }|j                  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y)r   c                 @    t               | _        t               | _        y r
   )setr   r   selfs    r   __init__zcompound.__init__#   s    U
U
r   c                 $    | j                  |      S r
   )r   r   others     r   __add__zcompound.__add__'   s    xxr   c                     t               }|j                  j                  | j                         |j                  j                  | j                         |S r
   )r   r   updater   )r   r   s     r   as_skipszcompound.as_skips*   s:    z

$**%

$**%r   c                 P   t               }|j                  j                  | j                         |j                  j                  | j                         |D ]L  }|j                  j                  |j                         |j                  j                  |j                         N |S r
   r   r   r&   r   )r   otherscopyr#   s       r   r   zcompound.add0   sr    z

$**%

$**%EJJekk*JJekk*  r   c                     t               }|j                  j                  d | j                  D               |j                  j                  d | j                  D               |S )Nc              3   2   K   | ]  }t        |        y wr
   NotPredicate).0fails     r   	<genexpr>z compound.not_.<locals>.<genexpr><        D,t,   c              3   2   K   | ]  }t        |        y wr
   r.   )r0   skips     r   r2   z compound.not_.<locals>.<genexpr>=   r3   r4   r)   )r   r+   s     r   not_zcompound.not_:   sF    z

DDD

DDDr   c                 @    | j                  t        j                        S r
   )enabled_for_configr   _currentr   s    r   enabledzcompound.enabled@   s    &&v77r   c                 l    | j                   j                  | j                        D ]  } ||      s y y)NFT)r   unionr   r   r   r   s      r   r9   zcompound.enabled_for_configD   s/    ))$**5I  6 r   c                     | j                   j                  | j                        D cg c]  } ||      r|j                  |       c}S c c}w r
   )r   r=   r   
_as_stringr>   s      r   matching_config_reasonsz compound.matching_config_reasonsK   sO     "ZZ--djj9
9	    (9
 	
 
s    Ac                     | j                   j                  |j                          | j                  j                  |j                         y r
   )r   r&   r   r"   s     r   _extendzcompound._extendR   s.    

%++&

%++&r   c                      t        |d      r|j                  j                          |S t         fd       } ||      } |_        |S )N_sa_exclusion_extendc                 N     j                   t        j                  | g|i |S r
   )_dor   r:   )fnargskwr   s      r   decoratez#compound.__call__.<locals>.decorate[   s$    488FOOR=$="==r   )hasattrrE   rC   r   )r   rH   rK   	decorateds   `   r   __call__zcompound.__call__V   sR    2-.##++D1I		> 
	> RL	)-	&r   c              #   P  K   t               }|j                  j                  | j                  j	                  | j                               	 d  |j                  t        j                         y # t        $ r*}|j                  t        j                  |       Y d }~y d }~ww xY wwr
   )
r   r   r&   r   r=   _expect_successr   r:   	Exception_expect_failure)r   	all_failsexs      r   fail_ifzcompound.fail_ifc   sv     J	tzz//

;<	7 %%foo6  	;%%foor::	;s0   A	B&A0  B&0	B#9 BB&B##B&c                 j   | j                   D ]I  } ||      sdt        j                         d|j                  |      }t        j                  |       K 	  ||i |}| j                  ||j                         |S # t        $ r(}| j                  |||j                         Y d }~y d }~ww xY w)N'z' : )name)	r   r   get_current_test_namer@   	skip_testrP   __name__rQ   rR   )	r   cfgrH   rI   rJ   r6   msgreturn_valuerT   s	            r   rG   zcompound._doo   s    JJDCy002OOC(   % 	 t?r?L   2;; 7	  	<  br{{ ;;	<s   B 	B2
B--B2c           	          | j                   D ]/  } ||      st        |d|j                  |      d|d        y  |j                  t	        j
                         d         )Nz failed as expected (z):  r   )r   printr@   with_tracebacksysexc_info)r   r   rT   rX   r1   s        r   rR   zcompound._expect_failure   sW    JJDF|T__V4b:   ##CLLN1$566r   c           
          | j                   sy | j                   D ]>  } |      st        d|ddj                  fd| j                   D              d       y )NzUnexpected success for 'z' ( and c              3   @   K   | ]  }|j                          y wr
   r@   )r0   r1   r   s     r   r2   z+compound._expect_success.<locals>.<genexpr>   s      %@JDOOF3
s   ))r   AssertionErrorjoin)r   r   rX   r1   s    `  r   rP   zcompound._expect_success   sV    zzJJDF|$  %@D

%   r   N)block)r[   
__module____qualname__r    r$   r'   r   r7   propertyr;   r9   rA   rC   rN   
contextlibcontextmanagerrU   rG   rR   rP    r   r   r   r   "   sl     8 8
' 	7 	7 "	7r   r   c                 B    t        |       } t        t        |       |      S r
   )r   r   r/   r   r   s     r   only_ifru      s    i(I<	*F33r   c                 B    t        |       } t        t        |       |      S r
   )r   r   r/   rt   s     r   succeeds_ifrw      s    i(IL+V44r   c                   .    e Zd Zedd       ZddZddZy)	PredicateNc                    t        |t              r| j                  |j                  |      S t        |t              r|r|j
                  ||_        |S t        |t        t        f      r)t        |D cg c]  }| j                  |       c}|      S t        |t              rt        | S t        |t              rt        j                  d|      }|st        d|z        |j                  d      }|j                  d      }|j                  d      r0t        d |j                  d      j!                  d      D              nd }t        ||||      S t#        |      rt%        ||      S J d	|z         c c}w )
Nz.([\+\w]+)\s*(?:(>=|==|!=|<=|<|>)\s*([\d\.]+))?z(Couldn't locate DB name in predicate: %rr   r      c              3   2   K   | ]  }t        |        y wr
   )int)r0   ds     r   r2   z)Predicate.as_predicate.<locals>.<genexpr>   s     A&@c!f&@r4   .)descriptionzunknown predicate type: %s)
isinstancer   as_predicater9   ry   r   listr   OrPredicatetupleSpecPredicatestrrematch
ValueErrorgroupsplitcallableLambdaPredicate)clsr   r   r   tokensdbopspecs           r   r   zPredicate.as_predicate   sd   i*##I$@$@+NN	9-y44<(3	%	D#;/4=>ID!!$'I>  	5) ),,	3'XXA9F  >J  aBaB <<? Afll1o&;&;C&@AA  !R;GGi "9k::B6BB51 ?s   3E6c                      | |      }|r| }| j                   |r$|j                  j                  j                         nd|r$|j                  j                  j	                         nd|rdnd|rddz  S 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		--/} 5;		..038/n.3N	#
 	
 		
 :K	#
 	
 		
r   c                     t               r
   )NotImplementedErrorr   r   r   s      r   r@   zPredicate._as_string   s    !##r   r
   F)NF)r[   rm   rn   classmethodr   r   r@   rr   r   r   ry   ry      s!    !C !CF
$r   ry   c                   "    e Zd ZddZd ZddZy)BooleanPredicateNc                 .    || _         |xs d|z  | _        y )Nz
boolean %s)valuer   )r   r   r   s      r   r    zBooleanPredicate.__init__   s    
&>,*>r   c                     | j                   S r
   )r   r   r   s     r   rN   zBooleanPredicate.__call__   s    zzr   c                 (    | j                  ||      S )Nr   r   r   s      r   r@   zBooleanPredicate._as_string   s    ''v'>>r   r
   r   r[   rm   rn   r    rN   r@   rr   r   r   r   r      s    ??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y)	r   Nc                 <    || _         || _        || _        || _        y r
   )r   r   r   r   )r   r   r   r   r   s        r   r    zSpecPredicate.__init__   s    	&r   c                 &    | |d   k\  xr | |d   k  S )Nr   r   rr   )valpairs     r   <lambda>zSpecPredicate.<lambda>   s    SDG^%FtAw%Fr   )<>z==z!=z<=z>=inbetweenc                    |y|j                   }d| j                   v r| j                   j                  d      \  }}n| j                   d }}|r|j                  |k7  ry||j                  |k7  ry| j                  f|J d       t        |      }t        | j                  d      xr | j                  xs | j                  | j                     } ||| j                        S y)NF+z%DBAPI version specs not supported yetrN   T)	r   r   rX   r   r   _server_versionrL   _opsr   )r   r   enginedialectr   versionopers          r   rN   zSpecPredicate.__call__   s    >$''>"ggmmC0OGV"ggtVGv{{g-&--6"977>J#JJ>%f-G,8NDIIdgg<N  ++r   c                 :   | j                   | 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 r`   )r   r   r   r   r   r   s      r   r@   zSpecPredicate._as_string  s}    '++F33WW_$''))dgg~%)-$''499EE%)WWdggtyyAAr   NNNr   )r[   rm   rn   r    operatorltgteqnelegecontainsr   rN   r@   rr   r   r   r   r      sQ    ' [[[[kkkkkkkkF	D6Br   r   c                   "    e Zd ZddZd ZddZy)r   Nc                     t              }|d   sfd| _        n| _        |xs d| _        |xs i | _        |r|| _        y j
                  rj
                  | _        y d| _        y )Nr   c                             S r
   rr   )r   lambda_s    r   r   z*LambdaPredicate.__init__.<locals>.<lambda>*  s    gir   rr   zcustom function)r   r   rI   rJ   r   __doc__)r   r   r   rI   rJ   r   s    `    r   r    zLambdaPredicate.__init__'  s^    %g.Aw/DL"DLJB	(*D__&D0Dr   c                 $    | j                  |      S r
   )r   r   s     r   rN   zLambdaPredicate.__call__6  s    ||F##r   c                 $    | j                  |      S r
   r   r   s      r   r@   zLambdaPredicate._as_string9  s    ''//r   r   r   r   rr   r   r   r   r   &  s    1$0r   r   c                   "    e Zd ZddZd ZddZy)r/   Nc                      || _         || _        y r
   )r   r   )r   r   r   s      r   r    zNotPredicate.__init__>  s    "&r   c                 &    | j                  |       S r
   )r   r   s     r   rN   zNotPredicate.__call__B  s    >>&)))r   c                 z    | j                   r| j                  ||       S | j                  j                  ||       S r
   )r   r   r   r@   r   s      r   r@   zNotPredicate._as_stringE  s9    ++FJ??>>,,VZ@@r   r
   r   r   rr   r   r   r/   r/   =  s    '*Ar   r/   c                   0    e Zd ZddZd ZddZd ZddZy)	r   Nc                      || _         || _        y r
   )
predicatesr   )r   r   r   s      r   r    zOrPredicate.__init__M  s    $&r   c                 :    | j                   D ]  } ||      s y y)NTF)r   )r   r   r   s      r   rN   zOrPredicate.__call__Q  s    OODF| $ r   c                 ^    rd}nd}|j                  fd| j                  D              S )Nrf   z or c              3   D   K   | ]  }|j                           yw)r   Nrh   )r0   pr   r   s     r   r2   z(OrPredicate._eval_str.<locals>.<genexpr>\  s"       
9HAALLL/s    )rk   r   )r   r   r   conjunctions    `` r   	_eval_strzOrPredicate._eval_strW  s4    !K K  
9= 
 
 	
r   c                 h    | j                   d| j                  |      z   S | j                  |d      S )NzNot Tr   )r   r   r   r   s     r   _negation_strzOrPredicate._negation_str`  s7    'D44V<<<>>&>66r   c                     |r| j                  |      S | j                  | j                  |      S | j                  |      S r
   )r   r   r   r   r   s      r   r@   zOrPredicate._as_stringf  sB    %%f--+//77~~f--r   r
   r   )r[   rm   rn   r    rN   r   r   r@   rr   r   r   r   r   L  s    '
7.r   r   c                 D     t        | ||      t        j                        S r
   )r   r   r:   )r   r   r   s      r   _is_excludedr   s  s    &=R&v77r   c                 |    | j                         }t        | j                  dd      }|d}|j                          |S )z#Return a server_version_info tuple.server_version_infoNrr   )connectgetattrr   close)r   connr   s      r   r   r   w  s;     >>Dfnn&;TBGJJLNr   c                  d    t        | D cg c]  }t        j                  |       c}      S c c}w r
   r   ry   r   dbsr   s     r   db_specr     s*    SASr	..r2SABBAs   -c                  ,    t        t        dd            S )NFzmark as executer   r   rr   r   r   openr     s    #E+<=>>r   c                  ,    t        t        dd            S )NTzmarked as skipr   rr   r   r   closedr     s    #D*:;<<r   c                 4    t        t        d| xs d            S )NTzexpected to failr   r   )r   s    r   r   r     s    $T6+G5GHIIr   c                  ,    t        t        dd            S )NTzFuture featurer   rr   r   r   futurer     s    $T+;<==r   c                     t        | |      S r
   )r   r   r   s     r   fails_onr     s    Br   c            
      v    t        t        | D cg c]  }t        j                  |       c}            S c c}w r
   )rw   r   ry   r   r   s     r   fails_on_everything_exceptr     s/    {#M2I$:$:2$>#MNOO#Ms   6c                     t        | |      S r
   )r   r   s     r   r6   r6     s    2vr   c                     t        t        t        j                  |       D cg c]  }t        j                  ||       c}            S c c}w r
   )ru   r   r   to_listry   r   )r   r   r   s      r   only_onr     sD    :>,,s:KL:KBY##B/:KL	
 Ls   A
c                 0    t        t        | ||      |      S r
   )r   r   )r   r   r   r   s       r   excluder    s    =R.77r   c           	          |sJ d        t        |D cg c]  }t        j                  |       c}      |       S c c}w )Nzno queries sent!r   )r   queriesquerys      r   againstr    sD    &&&7L;7K7%	..u57KL Ks   <
r
   )$rp   r   r   rc    r   r   r   util.compatr   r   r   r   ru   rw   ry   r   r   r   r/   r   r   r   r   r   r   r   r   r   r   r   r   r6   r   r  r  rr   r   r   <module>r     s      	 
    0w wt4
5
5$ 5$p	?y 	?9BI 9Bx0i 0.A9 A!.) !.H &&8	C?=J> P8r   