
    {<i5                        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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)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       b/home/www/utuvibe.miabetepe.com/venv/lib/python3.12/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                 R    t               }t        |       }||f|j                  |<   |S r
   )r   r   warns)r   
expressionassert_r   r   s        r   warns_ifr   "   s+    :D#D"G,DJJtKr   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d Zej                   d        Zd ZddZddZy)r   c                 N    t               | _        t               | _        i | _        y r
   )setr   r   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_skips2   s:    z

$**%

$**%r   c                    t               }|j                  j                  | j                         |j                  j                  | j                         |j                  j                  | j                         |D ]q  }|j                  j                  |j                         |j                  j                  |j                         |j                  j                  |j                         s |S r
   )r   r   r+   r   r   )r$   otherscopyr(   s       r   r   zcompound.add8   s    z

$**%

$**%

$**% 	+EJJekk*JJekk*JJekk*	+ r   c           	      v   t               }|j                  j                  d | j                  D               |j                  j                  d | j                  D               |j                  j                  | j                  j                         D ci c]  \  }}t        |      | c}}       |S c c}}w )Nc              3   2   K   | ]  }t        |        y wr
   NotPredicate).0fails     r   	<genexpr>z compound.not_.<locals>.<genexpr>F        D,t,D   c              3   2   K   | ]  }t        |        y wr
   r2   )r4   skips     r   r6   z compound.not_.<locals>.<genexpr>G   r7   r8   )r   r   r+   r   r   itemsr3   )r$   r/   warnelements       r   not_zcompound.not_D   s    z

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

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

 &*ZZ%5%5%7!D' T"G+	
 s   B5
c                 @    | j                  t        j                        S r
   )enabled_for_configr   _currentr#   s    r   enabledzcompound.enabledP   s    &&v77r   c                 l    | j                   j                  | j                        D ]  } ||      s y y)NFT)r   unionr   r$   r   r   s      r   r@   zcompound.enabled_for_configT   s4    ))$**5 	I 	 r   c                     | j                   j                         D cg c]  \  }\  }} ||      r| c}}}S c c}}}w r
   )r   r;   )r$   r   r   messager   s        r   matching_warningszcompound.matching_warnings[   sG     261A1A1C
 
-	-GW  
 	
 
s   ;c                     | j                   j                  | j                        D cg c]  } ||      r|j                  |       c}S c c}w r
   )r   rD   r   
_as_stringrE   s      r   matching_config_reasonsz compound.matching_config_reasonsb   sJ     "ZZ--djj9
    (
 	
 
s    Ac                     | j                   j                  |j                          | j                  j                  |j                         | j                  j                  |j                         y r
   )r   r+   r   r   r'   s     r   _extendzcompound._extendi   sD    

%++&

%++&

%++&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   rA   )fnargskwr$   s      r   decoratez#compound.__call__.<locals>.decorates   s$    488FOOR=$="==r   )hasattrrO   rM   r   )r$   rR   rU   	decorateds   `   r   __call__zcompound.__call__n   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   rD   _expect_successr   rA   	Exception_expect_failure)r$   	all_failsexs      r   fail_ifzcompound.fail_if{   sv     J	tzz//

;<	7 %%foo6  	;%%foor::	;s0   A	B&A0  B&0	B#9 BB&B##B&c                 *     j                   D ]I  } ||      sdt        j                         d|j                  |      }t        j                  |       K  j
                  r'ddlm t        j                   fd       } |       }nt        j                         }	 |5   ||i |}	d d d         j                  ||j                         	S # 1 sw Y   (xY w# t        $ r(}
 j                  ||
|j                         Y d }
~
y d }
~
ww xY w)N'z' : r   )expect_warningsc               3      K   t        j                         5 } j                  j                         D ]  \  }}| j	                   ||               d  d d d        y # 1 sw Y   y xY ww)N)r   )
contextlib	ExitStackr   valuesenter_context)stackr   r   rb   r$   s      r   _expect_warningsz&compound._do.<locals>._expect_warnings   sg     ))+ u/3zz/@/@/B +
G+++JH   s   A-A A!	A-!A*&A-)name)r   r   get_current_test_namerJ   	skip_testr   
assertionsrb   rd   contextmanagernullcontextrZ   __name__r[   r\   )r$   cfgrR   rS   rT   r:   msgri   ctxreturn_valuer^   rb   s   `          @r   rQ   zcompound._do   s    JJ 	&DCy002OOC(   %	& ::3&& ' #$C((*C	  /!42/
   2;; 7/ / 	<  br{{ ;;	<s0   #C! %	C.C! CC! !	D*DDc           	          | j                   D ]/  } ||      st        |d|j                  |      d|d        y  |j                  t	        j
                         d         )Nz failed as expected (z):  r   )r   printrJ   with_tracebacksysexc_info)r$   r   r^   rj   r5   s        r   r\   zcompound._expect_failure   s\    JJ 	7DF|T__V4b: 	7 ##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
   rJ   )r4   r5   r   s     r   r6   z+compound._expect_success.<locals>.<genexpr>   s      %8<DOOF3%s   ))r   AssertionErrorjoin)r$   r   rj   r5   s    `  r   rZ   zcompound._expect_success   s[    zzJJ 
	DF|$  %@D

%  
	r   N)block)rp   
__module____qualname__r%   r)   r,   r   r>   propertyrB   r@   rH   rK   rM   rX   rd   rn   r_   rQ   r\   rZ    r   r   r   r   )   sr    


 8 8

'
 	7 	7  D	7r   r   c                 B    t        |       } t        t        |       |      S r
   )r   r   r3   r   r   s     r   only_ifr      s    i(I<	*F33r   c                 B    t        |       } t        t        |       |      S r
   )r   r   r3   r   s     r   succeeds_ifr      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)r4   ds     r   r6   z)Predicate.as_predicate.<locals>.<genexpr>   s     Ac!fAr8   .)descriptionzunknown predicate type: %s)
isinstancer   as_predicater@   r   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   s`   i*##I$@$@+NN	9-y44<(3	%	D#;/4=>D!!$'>  	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   rJ   zPredicate._as_string  s    !##r   r
   F)NF)rp   r   r   classmethodr   r   rJ   r   r   r   r   r      s!    !C !CF
$r   r   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   rX   zBooleanPredicate.__call__  s    zzr   c                 (    | j                  ||      S )Nr   r   r   s      r   rJ   zBooleanPredicate._as_string  s    ''v'>>r   r
   r   rp   r   r   r%   rX   rJ   r   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   r   )valpairs     r   <lambda>zSpecPredicate.<lambda>"  s    SDG^%FtAw r   )<>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 yetrX   T)	r   r   rj   r   r   _server_versionrV   _opsr   )r$   r   enginedialectr   versionopers          r   rX   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 rv   )r   r   r   r   r   r   s      r   rJ   zSpecPredicate._as_string@  s}    '++F33WW_$''))dgg~%)-$''499EE%)WWdggtyyAAr   NNNr   )rp   r   r   r%   operatorltgteqnelegecontainsr   rX   rJ   r   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
   r   )r   lambda_s    r   r   z*LambdaPredicate.__init__.<locals>.<lambda>S  s	    gi r   r   zcustom function)r   r   rS   rT   r   __doc__)r$   r   r   rS   rT   r   s    `    r   r%   zLambdaPredicate.__init__P  s^    %g.Aw/DL"DLJB	(*D__&D0Dr   c                 $    | j                  |      S r
   )r   r   s     r   rX   zLambdaPredicate.__call___  s    ||F##r   c                 $    | j                  |      S r
   r   r   s      r   rJ   zLambdaPredicate._as_stringb  s    ''//r   r   r   r   r   r   r   r   r   O  s    1$0r   r   c                   "    e Zd ZddZd ZddZy)r3   Nc                      || _         || _        y r
   )r   r   )r$   r   r   s      r   r%   zNotPredicate.__init__g  s    "&r   c                 &    | j                  |       S r
   )r   r   s     r   rX   zNotPredicate.__call__k  s    >>&)))r   c                 z    | j                   r| j                  ||       S | j                  j                  ||       S r
   )r   r   r   rJ   r   s      r   rJ   zNotPredicate._as_stringn  s9    ++FJ??>>,,VZ@@r   r
   r   r   r   r   r   r3   r3   f  s    '*Ar   r3   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__v  s    $&r   c                 :    | j                   D ]  } ||      s y y)NTF)r   )r$   r   r   s      r   rX   zOrPredicate.__call__z  s$    OO 	DF|	 r   c                 ^    rd}nd}|j                  fd| j                  D              S )Nr|   z or c              3   D   K   | ]  }|j                           yw)r   Nr~   )r4   pr   r   s     r   r6   z(OrPredicate._eval_str.<locals>.<genexpr>  s#       
45ALLL/ 
s    )r   r   )r$   r   r   conjunctions    `` r   	_eval_strzOrPredicate._eval_str  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   rJ   zOrPredicate._as_string  sB    %%f--+//77~~f--r   r
   r   )rp   r   r   r%   rX   r   r   rJ   r   r   r   r   r   u  s    '
7.r   r   c                 D     t        | ||      t        j                        S r
   )r   r   rA   )r   r   r   s      r   _is_excludedr     s    &=R&v77r   c                 |    | j                         }t        | j                  dd      }|d}|j                          |S )z#Return a server_version_info tuple.server_version_infoNr   )connectgetattrr   close)r   connr   s      r   r   r     s;     >>Dfnn&;TBGJJLNr   c                  d    t        | D cg c]  }t        j                  |       c}      S c c}w r
   r   r   r   dbsr   s     r   db_specr    s&    SAr	..r2ABBAs   -c                  ,    t        t        dd            S )NFzmark as executer   r   r   r   r   openr    s    #E+<=>>r   c                 ,    t        t        d|             S )NTr  r   s    r   closedr    s    #D&122r   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	  r   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
   )r   r   r   r   r   s     r   fails_on_everything_exceptr    s+    {#M2I$:$:2$>#MNOO#Ms   6c                     t        | |      S r
   )r   r  s     r   r:   r:     s    2vr   c                     t        t        t        j                  |       D cg c]  }t        j                  ||       c}            S c c}w r
   )r   r   r   to_listr   r   )r   r   r   s      r   only_onr    s>    :>,,s:KLBY##B/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    s@    &&&7L;7K%	..u5KL Ks   <
r
   )zmarked as skip)%rd   r   r   ry    r   r   r   util.compatr   r   r   r   r   r   r   r   r   r   r   r3   r   r   r   r   r   r  r  r  r   r  r  r  r:   r  r  r  r   r   r   <module>r     s      	 
    0Y Yx4
5
5$ 5$p	?y 	?9BI 9Bx0i 0.A9 A!.) !.H &&8	C?3J> P8r   