U
    +|jW  ã                   @   sø   d dl Z d dlZd dlmZ e e j¡G dd„ deƒƒZG dd„ deƒZeƒ Z	G dd„ deƒZ
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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dS )é    N)Úsixc                   @   s.   e Zd ZdZejdd„ ƒZdd„ Zdd„ ZdS )	Ú
retry_basez)Abstract base class for retry strategies.c                 C   s   d S ©N© ©ÚselfÚretry_stater   r   úbC:\Users\snmko\Desktop\web_content\django_cbt\venv\Lib\site-packages\pip/_vendor/tenacity/retry.pyÚ__call__   s    zretry_base.__call__c                 C   s
   t | |ƒS r   )Ú	retry_all©r   Úotherr   r   r	   Ú__and__!   s    zretry_base.__and__c                 C   s
   t | |ƒS r   )Ú	retry_anyr   r   r   r	   Ú__or__$   s    zretry_base.__or__N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚabcÚabstractmethodr
   r   r   r   r   r   r	   r      s
   
r   c                   @   s   e Zd ZdZdd„ ZdS )Ú_retry_neverz-Retry strategy that never rejects any result.c                 C   s   dS ©NFr   r   r   r   r	   r
   +   s    z_retry_never.__call__N©r   r   r   r   r
   r   r   r   r	   r   (   s   r   c                   @   s   e Zd ZdZdd„ ZdS )Ú_retry_alwaysz.Retry strategy that always rejects any result.c                 C   s   dS ©NTr   r   r   r   r	   r
   5   s    z_retry_always.__call__Nr   r   r   r   r	   r   2   s   r   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Úretry_if_exceptionzARetry strategy that retries if an exception verifies a predicate.c                 C   s
   || _ d S r   ©Ú	predicate©r   r   r   r   r	   Ú__init__?   s    zretry_if_exception.__init__c                 C   s    |j jr|  |j  ¡ ¡S dS d S r   ©ÚoutcomeÚfailedr   Ú	exceptionr   r   r   r	   r
   B   s    zretry_if_exception.__call__N©r   r   r   r   r    r
   r   r   r   r	   r   <   s   r   c                       s$   e Zd ZdZef‡ fdd„	Z‡  ZS )Úretry_if_exception_typez=Retries if an exception has been raised of one or more types.c                    s"   ˆ | _ tt| ƒ ‡ fdd„¡ d S )Nc                    s
   t | ˆ ƒS r   ©Ú
isinstance©Úe©Úexception_typesr   r	   Ú<lambda>O   ó    z2retry_if_exception_type.__init__.<locals>.<lambda>)r,   Úsuperr&   r    ©r   r,   ©Ú	__class__r+   r	   r    L   s    

ÿz retry_if_exception_type.__init__)r   r   r   r   Ú	Exceptionr    Ú__classcell__r   r   r1   r	   r&   I   s   r&   c                       s,   e Zd ZdZef‡ fdd„	Zdd„ Z‡  ZS )Úretry_unless_exception_typez:Retries until an exception is raised of one or more types.c                    s"   ˆ | _ tt| ƒ ‡ fdd„¡ d S )Nc                    s   t | ˆ ƒ S r   r'   r)   r+   r   r	   r-   Y   r.   z6retry_unless_exception_type.__init__.<locals>.<lambda>)r,   r/   r5   r    r0   r1   r+   r	   r    V   s    

ÿz$retry_unless_exception_type.__init__c                 C   s   |j jsdS |  |j  ¡ ¡S r   r!   r   r   r   r	   r
   \   s    z$retry_unless_exception_type.__call__)r   r   r   r   r3   r    r
   r4   r   r   r1   r	   r5   S   s   r5   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Úretry_if_resultz+Retries if the result verifies a predicate.c                 C   s
   || _ d S r   r   r   r   r   r	   r    f   s    zretry_if_result.__init__c                 C   s    |j js|  |j  ¡ ¡S dS d S r   ©r"   r#   r   Úresultr   r   r   r	   r
   i   s    zretry_if_result.__call__Nr%   r   r   r   r	   r6   c   s   r6   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Úretry_if_not_resultz*Retries if the result refutes a predicate.c                 C   s
   || _ d S r   r   r   r   r   r	   r    s   s    zretry_if_not_result.__init__c                 C   s"   |j js|  |j  ¡ ¡ S dS d S r   r7   r   r   r   r	   r
   v   s    zretry_if_not_result.__call__Nr%   r   r   r   r	   r9   p   s   r9   c                       s"   e Zd ZdZd‡ fdd„	Z‡  ZS )Úretry_if_exception_messagez2Retries if an exception message equals or matches.Nc                    sv   ˆ r|rt d | jj¡ƒ‚ˆ r0‡ fdd„}|}n2|rPt |¡‰‡fdd„}|}nt d | jj¡ƒ‚tt| ƒ |¡ d S )Nz0{}() takes either 'message' or 'match', not bothc                    s   ˆ t | ƒkS r   )Ústr©r$   )Úmessager   r	   Úmessage_fnc‹   s    z8retry_if_exception_message.__init__.<locals>.message_fncc                    s   ˆ   t| ƒ¡S r   )Úmatchr;   r<   )Úprogr   r	   Ú	match_fnc’   s    z6retry_if_exception_message.__init__.<locals>.match_fncz5{}() missing 1 required argument 'message' or 'match')	Ú	TypeErrorÚformatr2   r   ÚreÚcompiler/   r:   r    )r   r=   r?   r>   r   rA   r1   )r=   r@   r	   r    €   s&    ÿÿ
ÿÿz#retry_if_exception_message.__init__)NN)r   r   r   r   r    r4   r   r   r1   r	   r:   }   s   r:   c                       s(   e Zd ZdZ‡ fdd„Zdd„ Z‡  ZS )Úretry_if_not_exception_messagez5Retries until an exception message equals or matches.c                    s*   t t| ƒj||Ž | j‰ ‡ fdd„| _d S )Nc                     s   ˆ | |Ž S r   r   )Úargs_Úkwargs_©Úif_predicater   r	   r-   §   r.   z9retry_if_not_exception_message.__init__.<locals>.<lambda>)r/   rF   r    r   )r   ÚargsÚkwargsr1   rI   r	   r    £   s    z'retry_if_not_exception_message.__init__c                 C   s   |j jsdS |  |j  ¡ ¡S r   r!   r   r   r   r	   r
   ©   s    z'retry_if_not_exception_message.__call__)r   r   r   r   r    r
   r4   r   r   r1   r	   rF       s   rF   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )r   z1Retries if any of the retries condition is valid.c                 G   s
   || _ d S r   ©Úretries©r   rN   r   r   r	   r    ²   s    zretry_any.__init__c                    s   t ‡ fdd„| jD ƒƒS )Nc                 3   s   | ]}|ˆ ƒV  qd S r   r   ©Ú.0Úr©r   r   r	   Ú	<genexpr>¶   s     z%retry_any.__call__.<locals>.<genexpr>)ÚanyrN   r   r   rS   r	   r
   µ   s    zretry_any.__call__Nr%   r   r   r   r	   r   ¯   s   r   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )r   z/Retries if all the retries condition are valid.c                 G   s
   || _ d S r   rM   rO   r   r   r	   r    ¼   s    zretry_all.__init__c                    s   t ‡ fdd„| jD ƒƒS )Nc                 3   s   | ]}|ˆ ƒV  qd S r   r   rP   rS   r   r	   rT   À   s     z%retry_all.__call__.<locals>.<genexpr>)ÚallrN   r   r   rS   r	   r
   ¿   s    zretry_all.__call__Nr%   r   r   r   r	   r   ¹   s   r   )r   rD   Úpip._vendorr   Úadd_metaclassÚABCMetaÚobjectr   r   Úretry_neverr   Úretry_alwaysr   r&   r5   r6   r9   r:   rF   r   r   r   r   r   r	   Ú<module>   s"   

#
