a
    [g0                     @   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
d9d
dZG dd dZd:ddZd;d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d<d(d)Zd*d+ Zd=d,d-Zd.d/ Zd>d0d1Z d?d2d3Z!d@d4d5Z"d6d7 Z#dS )A    N   config   )util)	decorator)inspect_getfullargspecc                 C   s    t  }t| |}|j| |S N)compound_as_predicateskipsadd	predicatereasonrulepred r   k/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/sqlalchemy/testing/exclusions.pyskip_if   s    
r   c                 C   s    t  }t| |}|j| |S r	   )r
   r   failsr   r   r   r   r   fails_if   s    
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
   |  |S r	   )r   r   otherr   r   r   __add__'   s    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   s   | ]}t |V  qd S r	   NotPredicate.0failr   r   r   	<genexpr><       z compound.not_.<locals>.<genexpr>c                 s   s   | ]}t |V  qd S 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   r,   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>r/   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   r-   )fnargskwr   r   r   decorate[   s    z#compound.__call__.<locals>.decorate)hasattrr7   r6   r   )r   r9   r<   Z	decoratedr   r   r   __call__V   s    
zcompound.__call__c              
   c   sj   t  }|j| j| j z
d V  W n2 tyX } z|tj| W Y d }~nd }~0 0 |	tj d S r	   )
r
   r   r   r   r0   	Exception_expect_failurer   r-   _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 n6 ty| } z| j|||jd W Y d }~nd }~0 0 | j||jd |S d S )Nz	'%s' : %s)name)	r   r   Zget_current_test_namer2   Z	skip_testr?   r@   __name__rA   )	r   cfgr9   r:   r;   r*   msgZreturn_valuerB   r   r   r   r8   o   s    
(zcompound._doblockc                 C   sF   | j D ](}||rtd||||f   qBq|t d d S )Nz%s failed as expected (%s): %s r   )r   printr2   with_tracebacksysexc_info)r   r   rB   rD   r'   r   r   r   r@      s    
zcompound._expect_failurec              	      sH   | j s
d S | j D ]2}| 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	   r1   r%   r   r   r   r(      s   z+compound._expect_success.<locals>.<genexpr>)r   AssertionErrorjoin)r   r   rD   r'   r   r   r   rA      s    
zcompound._expect_successN)rH   )rH   )rE   
__module____qualname__r   r   r    r   r+   propertyr.   r,   r5   r6   r>   
contextlibcontextmanagerrC   r8   r@   rA   r   r   r   r   r
   "   s    



r
   c                 C   s   t | } tt| |S r	   )r   r   r$   r   r   r   r   r   only_if   s    rV   c                 C   s   t | } tt| |S r	   )r   r   r$   rU   r   r   r   succeeds_if   s    rW   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:|r6|jd u r6||_|S t |ttfr`t fdd|D |S t |t	rrt
| S t |trtd|}|std| |d}|d}|drt	dd	 |dd
D nd }t
||||dS t| rt||S dsJ d| d S )Nc                    s   g | ]}  |qS r   )as_predicate)r&   r   clsr   r   r3      r)   z*Predicate.as_predicate.<locals>.<listcomp>z.([\+\w]+)\s*(?:(>=|==|!=|<=|<|>)\s*([\d\.]+))?z(Couldn't locate DB name in predicate: %rr   r      c                 s   s   | ]}t |V  qd S r	   )int)r&   dr   r   r   r(      r)   z)Predicate.as_predicate.<locals>.<genexpr>.)descriptionFzunknown predicate type: %s)
isinstancer
   rY   r,   rX   r`   listr   OrPredicatetupleSpecPredicatestrrematch
ValueErrorgroupsplitcallableLambdaPredicate)r[   r   r`   tokensdbopspecr   rZ   r   rY      s<    





 

zPredicate.as_predicateFc                 C   sV   | |}|r| }| j |r&|jj nd|r8|jj nd|rBdnd|rLdndd S )Nz<no driver>z<no database>zdoesn't supportzdoes support)driverZdatabaseZdoesnt_supportZdoes_support)r`   ro   urlZget_driver_nameZget_backend_name)r   r   negateZbool_r   r   r   _format_description   s    

zPredicate._format_descriptionc                 C   s
   t  d S r	   )NotImplementedErrorr   r   rt   r   r   r   r2      s    zPredicate._as_string)N)F)NF)rE   rP   rQ   classmethodrY   ru   r2   r   r   r   r   rX      s   #
rX   c                   @   s(   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)valuer`   )r   rz   r`   r   r   r   r      s    zBooleanPredicate.__init__c                 C   s   | j S r	   )rz   r4   r   r   r   r>      s    zBooleanPredicate.__call__Fc                 C   s   | j ||dS )Nrt   ru   rw   r   r   r   r2      s    zBooleanPredicate._as_string)N)FrE   rP   rQ   r   r>   r2   r   r   r   r   ry      s   
ry   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 )re   Nc                 C   s   || _ || _|| _|| _d S r	   )ro   rp   rq   r`   )r   ro   rp   rq   r`   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>   r)   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  }}|rL|j|krLdS |d urb|j|krbdS | jd ur|d u s|J dt|}t| jdr| jp| j| j }||| jS dS d S )NF+z%DBAPI version specs not supported yetr>   T)	ro   rk   rD   rr   rp   _server_versionr=   _opsrq   )r   r   enginedialectrr   versionoperr   r   r   r>      s"    

zSpecPredicate.__call__Fc                 C   sh   | j d ur| |S | jd u r8|r,d| j S d| j S n,|rPd| j| j| jf S d| j| j| jf S d S )Nznot %sz%sznot %s %s %sz%s %s %s)r`   ru   rp   ro   rq   rw   r   r   r   r2     s    



zSpecPredicate._as_string)NNN)F)rE   rP   rQ   r   operatorltgteqnelegecontainsr   r>   r2   r   r   r   r   re      s   
re   c                   @   s(   e Zd Zd	ddZdd Zd
ddZdS )rm   Nc                    s`   t  }|d s  fdd| _n | _|p,d| _|p6i | _|rF|| _n jrV j| _nd| _d S )Nr   c                    s     S r	   r   )ro   lambda_r   r   r   *  r)   z*LambdaPredicate.__init__.<locals>.<lambda>r   zcustom function)r   r   r:   r;   r`   __doc__)r   r   r`   r:   r;   rq   r   r   r   r   '  s    


zLambdaPredicate.__init__c                 C   s
   |  |S r	   r   r4   r   r   r   r>   6  s    zLambdaPredicate.__call__Fc                 C   s
   |  |S r	   r|   rw   r   r   r   r2   9  s    zLambdaPredicate._as_string)NNN)Fr}   r   r   r   r   rm   &  s   
rm   c                   @   s(   e Zd Zd	ddZdd Zd
ddZdS )r$   Nc                 C   s   || _ || _d S r	   )r   r`   )r   r   r`   r   r   r   r   >  s    zNotPredicate.__init__c                 C   s   |  | S r	   )r   r4   r   r   r   r>   B  s    zNotPredicate.__call__Fc                 C   s(   | j r| || S | j|| S d S r	   )r`   ru   r   r2   rw   r   r   r   r2   E  s    zNotPredicate._as_string)N)Fr}   r   r   r   r   r$   =  s   
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 )rc   Nc                 C   s   || _ || _d S r	   )
predicatesr`   )r   r   r`   r   r   r   r   M  s    zOrPredicate.__init__c                 C   s   | j D ]}||r dS qdS )NTF)r   )r   r   r   r   r   r   r>   Q  s    
zOrPredicate.__call__Fc                    s*   r
d}nd}|  fdd| jD S )NrM   z or c                 3   s   | ]}|j  d V  qdS )r{   Nr1   )r&   pr   rt   r   r   r(   \  s   z(OrPredicate._eval_str.<locals>.<genexpr>)rO   r   )r   r   rt   Zconjunctionr   r   r   	_eval_strW  s    zOrPredicate._eval_strc                 C   s*   | j d urd| | S | j|ddS d S )NzNot Tr{   )r`   ru   r   r4   r   r   r   _negation_str`  s    
zOrPredicate._negation_strc                 C   s0   |r|  |S | jd ur"| |S | |S d S r	   )r   r`   ru   r   rw   r   r   r   r2   f  s
    


zOrPredicate._as_string)N)F)F)rE   rP   rQ   r   r>   r   r   r2   r   r   r   r   rc   L  s
   

	rc   c                 C   s   t | ||tjS r	   )re   r   r-   )ro   rp   rq   r   r   r   _is_excludeds  s    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   s   g | ]}t |qS r   rX   rY   r&   ro   r   r   r   r3     r)   zdb_spec.<locals>.<listcomp>rc   dbsr   r   r   db_spec  s    r   c                   C   s   t tddS )NFzmark as executer   ry   r   r   r   r   open  s    r   c                   C   s   t tddS )NTzmarked as skipr   r   r   r   r   closed  s    r   c                 C   s   t td| pdS )NTzexpected to failr   ry   r   r   r   r   r     s    r   c                   C   s   t tddS )NTzFuture featurer   r   r   r   r   future  s    r   c                 C   s
   t | |S r	   )r   ro   r   r   r   r   fails_on  s    r   c                  G   s   t tdd | D S )Nc                 S   s   g | ]}t |qS r   r   r   r   r   r   r3     r)   z.fails_on_everything_except.<locals>.<listcomp>)rW   rc   r   r   r   r   fails_on_everything_except  s    r   c                 C   s
   t | |S r	   )r   r   r   r   r   r*     s    r*   c                    s    t t fddt| D S )Nc                    s   g | ]}t | qS r   r   r   r   r   r   r3     r)   zonly_on.<locals>.<listcomp>)rV   rc   r   Zto_list)r   r   r   r   r   only_on  s
    r   c                 C   s   t t| |||S r	   )r   re   )ro   rp   rq   r   r   r   r   exclude  s    r   c                 G   s"   |sJ dt dd |D | S )Nzno queries sent!c                 S   s   g | ]}t |qS r   r   )r&   queryr   r   r   r3     r)   zagainst.<locals>.<listcomp>r   )r   Zqueriesr   r   r   against  s    r   )N)N)N)N)N)N)N)N)N)$rS   r   rg   rK    r   r   r   Zutil.compatr   r   r   r
   rV   rW   rX   ry   re   rm   r$   rc   rY   r   r   r   r   r   r   r   r   r   r   r*   r   r   r   r   r   r   r   <module>	   s@   

z

8<$




