o
    E6dO2                     @   s`  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	 d8dd	Z
d8d
dZG dd dZd8ddZd8ddZG dd dZG dd deZG dd deZG dd deZG dd deZG dd deZejZdd Zd d! Zd"d# Zd$d% Zd&d' Zd8d(d)Zd*d+ Zd8d,d-Zd.d/ Zd8d0d1Z d8d2d3Z!d8d4d5Z"d6d7 Z#dS )9    N   config   )util)	decorator)inspect_getfullargspecc                 C       t  }t| |}|j| |S N)compound_as_predicateskipsadd	predicatereasonrulepred r   tC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\sqlalchemy/testing/exclusions.pyskip_if      
r   c                 C   r	   r
   )r   r   failsr   r   r   r   r   fails_if   r   r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zedd Z	dd Z
dd Zdd Zdd Zejdd Zdd ZdddZdddZdS ) r   c                 C   s   t  | _t  | _d S r
   )setr   r   selfr   r   r   __init__#   s   zcompound.__init__c                 C   
   |  |S r
   )r   r   otherr   r   r   __add__'      
zcompound.__add__c                 C   s&   t  }|j| j |j| j |S r
   )r   r   updater   )r   r   r   r   r   as_skips*   s   zcompound.as_skipsc                 G   sL   t  }|j| j |j| j |D ]}|j|j |j|j q|S r
   r   r   r#   r   )r   Zotherscopyr    r   r   r   r   0   s   zcompound.addc                 C   s:   t  }|jdd | jD  |jdd | jD  |S )Nc                 s       | ]}t |V  qd S r
   NotPredicate.0failr   r   r   	<genexpr><       z compound.not_.<locals>.<genexpr>c                 s   r'   r
   r(   )r+   skipr   r   r   r-   =   r.   r%   )r   r&   r   r   r   not_:   s   zcompound.not_c                 C   s   |  tjS r
   )enabled_for_configr   _currentr   r   r   r   enabled@   s   zcompound.enabledc                 C   s&   | j | jD ]	}||r dS qdS )NFTr   unionr   )r   r   r   r   r   r   r1   D   s
   zcompound.enabled_for_configc                    s    fdd| j | jD S )Nc                    s   g | ]}| r|  qS r   
_as_string)r+   r   r   r   r   
<listcomp>L   s    z4compound.matching_config_reasons.<locals>.<listcomp>r4   r   r   r   r   r   matching_config_reasonsK   s   
z compound.matching_config_reasonsc                 C   s    | j |j  | j|j d S r
   )r   r#   r   r   r   r   r   _extendR   s   zcompound._extendc                    s<   t |dr|j  |S t fdd}||} |_|S )N_sa_exclusion_extendc                    s    j tj| g|R i |S r
   )_dor   r2   )fnargskwr   r   r   decorate[   s   z#compound.__call__.<locals>.decorate)hasattrr<   r;   r   )r   r>   rA   Z	decoratedr   r   r   __call__V   s   
zcompound.__call__c              
   c   sn    t  }|j| j| j zd V  W n ty. } z|tj| W Y d }~d S d }~ww |	tj d S r
   )
r   r   r#   r   r5   	Exception_expect_failurer   r2   _expect_success)r   Z	all_failsexr   r   r   fail_ifc   s   
zcompound.fail_ifc           	   
   O   s   | j D ]}||rdt ||f }t| qz	||i |}W n ty? } z| j|||jd W Y d }~d S d }~ww | j||jd |S )Nz	'%s' : %s)name)	r   r   Zget_current_test_namer7   Z	skip_testrD   rE   __name__rF   )	r   cfgr>   r?   r@   r/   msgreturn_valuerG   r   r   r   r=   o   s    

 zcompound._doblockc                 C   sD   | j D ]}||rtd||||f   d S q|t d )Nz%s failed as expected (%s): %s r   )r   printr7   with_tracebacksysexc_info)r   r   rG   rI   r,   r   r   r   rE      s   
zcompound._expect_failurec              	      sH   | j sd S | j D ]}| r!td|d fdd| j D f qd S )Nz Unexpected success for '%s' (%s) and c                 3   s    | ]}|  V  qd S r
   r6   r*   r   r   r   r-      s    

z+compound._expect_success.<locals>.<genexpr>)r   AssertionErrorjoin)r   r   rI   r,   r   r   r   rF      s   
zcompound._expect_successN)rN   )rJ   
__module____qualname__r   r!   r$   r   r0   propertyr3   r1   r:   r;   rC   
contextlibcontextmanagerrH   r=   rE   rF   r   r   r   r   r   "   s"    



r   c                 C      t | } tt| |S r
   )r   r   r)   r   r   r   r   r   only_if      r]   c                 C   r[   r
   )r   r   r)   r\   r   r   r   succeeds_if   r^   r_   c                   @   s.   e Zd Zed	ddZd
ddZdddZdS )	PredicateNc                    s  t |tr |j|S t |tr|r|jd u r||_|S t |ttfr0t fdd|D |S t |t	r9t
| S t |trttd|}|sLtd| |d}|d}|drjt	dd	 |dd
D nd }t
||||dS t|r}t||S J d| )Nc                    s   g | ]}  |qS r   )as_predicate)r+   r   clsr   r   r8          z*Predicate.as_predicate.<locals>.<listcomp>z.([\+\w]+)\s*(?:(>=|==|!=|<=|<|>)\s*([\d\.]+))?z(Couldn't locate DB name in predicate: %rr   r      c                 s   r'   r
   )int)r+   dr   r   r   r-      r.   z)Predicate.as_predicate.<locals>.<genexpr>.)descriptionFzunknown predicate type: %s)
isinstancer   ra   r1   r`   ri   listr   OrPredicatetupleSpecPredicatestrrematch
ValueErrorgroupsplitcallableLambdaPredicate)rc   r   ri   tokensdbopspecr   rb   r   ra      s<   





 
zPredicate.as_predicateFc                 C   s\   | |}|r	| }| j |r|jj nd|r|jj nd|r!dnd|r)dd S dd S )Nz<no driver>z<no database>zdoesn't supportzdoes support)driverZdatabaseZdoesnt_supportZdoes_support)ri   rx   urlZget_driver_nameZget_backend_name)r   r   negateZbool_r   r   r   _format_description   s   
zPredicate._format_descriptionc                 C   s   t  r
   )NotImplementedErrorr   r   r}   r   r   r   r7         zPredicate._as_stringr
   F)NF)rJ   rV   rW   classmethodra   r~   r7   r   r   r   r   r`      s
    
#r`   c                   @   (   e Zd Zd	ddZdd Zd
ddZdS )BooleanPredicateNc                 C   s   || _ |pd| | _d S )Nz
boolean %s)valueri   )r   r   ri   r   r   r   r      s   zBooleanPredicate.__init__c                 C   s   | j S r
   )r   r9   r   r   r   rC      r   zBooleanPredicate.__call__Fc                 C   s   | j ||dS )Nr}   r~   r   r   r   r   r7         zBooleanPredicate._as_stringr
   r   rJ   rV   rW   r   rC   r7   r   r   r   r   r          
r   c                	   @   sP   e Zd ZdddZejejejejej	ej
ejdd dZdd Zdd
dZdS )rn   Nc                 C   s   || _ || _|| _|| _d S r
   )rx   ry   rz   ri   )r   rx   ry   rz   ri   r   r   r   r      s   
zSpecPredicate.__init__c                 C   s   | |d ko| |d kS )Nr   r   r   )valpairr   r   r   <lambda>       zSpecPredicate.<lambda>)<>z==z!=z<=z>=inZbetweenc                 C   s   |d u rdS |j }d| j v r| j d\}}n| j d }}|r&|j|kr&dS |d ur1|j|kr1dS | jd urW|d u s>J dt|}t| jdrK| jpP| j| j }||| jS dS )NF+z%DBAPI version specs not supported yetrC   T)	rx   rt   rI   r{   ry   _server_versionrB   _opsrz   )r   r   enginedialectr{   versionoperr   r   r   rC      s"   

zSpecPredicate.__call__Fc                 C   sb   | j d ur
| |S | jd u r|rd| j S d| j S |r'd| j| j| jf S d| j| j| jf S )Nznot %sz%sznot %s %s %sz%s %s %s)ri   r~   ry   rx   rz   r   r   r   r   r7     s   




zSpecPredicate._as_stringNNNr   )rJ   rV   rW   r   operatorltgteqnelegecontainsr   rC   r7   r   r   r   r   rn      s    
rn   c                   @   r   )rv   Nc                    sd   t  }|d s fdd| _n | _|pd| _|pi | _|r$|| _d S  jr- j| _d S d| _d S )Nr   c                    s     S r
   r   )rx   lambda_r   r   r   *  s    z*LambdaPredicate.__init__.<locals>.<lambda>r   zcustom function)r   r   r?   r@   ri   __doc__)r   r   ri   r?   r@   rz   r   r   r   r   '  s   



zLambdaPredicate.__init__c                 C   r   r
   r   r9   r   r   r   rC   6  r"   zLambdaPredicate.__call__Fc                 C   r   r
   r   r   r   r   r   r7   9  r"   zLambdaPredicate._as_stringr   r   r   r   r   r   r   rv   &  s    
rv   c                   @   r   )r)   Nc                 C      || _ || _d S r
   )r   ri   )r   r   ri   r   r   r   r   >     
zNotPredicate.__init__c                 C   s   |  | S r
   )r   r9   r   r   r   rC   B  s   zNotPredicate.__call__Fc                 C   s$   | j r
| || S | j|| S r
   )ri   r~   r   r7   r   r   r   r   r7   E  s   zNotPredicate._as_stringr
   r   r   r   r   r   r   r)   =  r   r)   c                   @   s:   e Zd ZdddZdd ZdddZd	d
 ZdddZdS )rl   Nc                 C   r   r
   )
predicatesri   )r   r   ri   r   r   r   r   M  r   zOrPredicate.__init__c                 C   s   | j D ]	}||r dS qdS )NTF)r   )r   r   r   r   r   r   rC   Q  s
   
zOrPredicate.__call__Fc                    s*   rd}nd}|  fdd| jD S )NrS   z or c                 3   s    | ]
}|j  d V  qdS )r   Nr6   )r+   pr   r}   r   r   r-   \  s    
z(OrPredicate._eval_str.<locals>.<genexpr>)rU   r   )r   r   r}   Zconjunctionr   r   r   	_eval_strW  s   zOrPredicate._eval_strc                 C   s&   | j d urd| | S | j|ddS )NzNot Tr   )ri   r~   r   r9   r   r   r   _negation_str`  s   
zOrPredicate._negation_strc                 C   s,   |r|  |S | jd ur| |S | |S r
   )r   ri   r~   r   r   r   r   r   r7   f  s
   



zOrPredicate._as_stringr
   r   )rJ   rV   rW   r   rC   r   r   r7   r   r   r   r   rl   L  s    

	rl   c                 C   s   t | ||tjS r
   )rn   r   r2   )rx   ry   rz   r   r   r   _is_excludeds     r   c                 C   s.   |   }t| jdd}|du rd}|  |S )z#Return a server_version_info tuple.Zserver_version_infoNr   )connectgetattrr   close)r   connr   r   r   r   r   w  s   r   c                  G   s   t dd | D S )Nc                 S      g | ]}t |qS r   r`   ra   r+   rx   r   r   r   r8     rd   zdb_spec.<locals>.<listcomp>rl   dbsr   r   r   db_spec  r   r   c                   C      t tddS )NFzmark as executer   r   r   r   r   r   open  r   r   c                   C   r   )NTzmarked as skipr   r   r   r   r   closed  r   r   c                 C   s   t td| pdS )NTzexpected to failr   r   r   r   r   r   r     r   r   c                   C   r   )NTzFuture featurer   r   r   r   r   future  r   r   c                 C   
   t | |S r
   )r   rx   r   r   r   r   fails_on  r"   r   c                  G   s   t tdd | D S )Nc                 S   r   r   r   r   r   r   r   r8     rd   z.fails_on_everything_except.<locals>.<listcomp>)r_   rl   r   r   r   r   fails_on_everything_except  s   r   c                 C   r   r
   )r   r   r   r   r   r/     r"   r/   c                    s    t t fddt| D S )Nc                    s   g | ]}t | qS r   r   r   r   r   r   r8     r   zonly_on.<locals>.<listcomp>)r]   rl   r   Zto_list)r   r   r   r   r   only_on  s
   r   c                 C   s   t t| |||S r
   )r   rn   )rx   ry   rz   r   r   r   r   exclude  r   r   c                 G   s"   |sJ dt dd |D | S )Nzno queries sent!c                 S   r   r   r   )r+   queryr   r   r   r8     rd   zagainst.<locals>.<listcomp>r   )r   Zqueriesr   r   r   against  s   r   r
   )$rY   r   rp   rQ    r   r   r   Zutil.compatr   r   r   r   r]   r_   r`   r   rn   rv   r)   rl   ra   r   r   r   r   r   r   r   r   r   r   r/   r   r   r   r   r   r   r   <module>   sB   


z
8<$




