a
    ibòfõ  ã                   @   s  d dl Z d dlZd dlZejr*d dlmZ G dd„ de jƒ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G dd„ deƒZdS )é    N)ÚRetryCallStatec                   @   sF   e Zd ZdZejdedœdd„ƒZd ddœdd	„Zd d
dœdd„Z	dS )Ú
retry_basez)Abstract base class for retry strategies.r   ©Úretry_stateÚreturnc                 C   s   d S ©N© ©Úselfr   r   r   úW/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/pip/_vendor/tenacity/retry.pyÚ__call__   s    zretry_base.__call__Ú	retry_all)Úotherr   c                 C   s
   t | |ƒS r   )r   ©r
   r   r   r   r   Ú__and__    s    zretry_base.__and__Ú	retry_anyc                 C   s
   t | |ƒS r   )r   r   r   r   r   Ú__or__#   s    zretry_base.__or__N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚabcÚabstractmethodÚboolr   r   r   r   r   r   r   r      s
   r   c                   @   s    e Zd ZdZdedœdd„ZdS )Ú_retry_neverz-Retry strategy that never rejects any result.r   r   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   r   '   s   r   c                   @   s    e Zd ZdZdedœdd„ZdS )Ú_retry_alwaysz.Retry strategy that always rejects any result.r   r   c                 C   s   dS ©NTr   r	   r   r   r   r   4   s    z_retry_always.__call__Nr   r   r   r   r   r   1   s   r   c                   @   s<   e Zd ZdZejegef ddœdd„Zdedœdd	„Z	dS )
Úretry_if_exceptionzARetry strategy that retries if an exception verifies a predicate.N©Ú	predicater   c                 C   s
   || _ d S r   ©r!   ©r
   r!   r   r   r   Ú__init__>   s    zretry_if_exception.__init__r   r   c                 C   s    |j jr|  |j  ¡ ¡S dS d S r   ©ÚoutcomeÚfailedr!   Ú	exceptionr	   r   r   r   r   A   s    zretry_if_exception.__call__)
r   r   r   r   ÚtypingÚCallableÚBaseExceptionr   r$   r   r   r   r   r   r   ;   s   r   c                       sL   e Zd ZdZefejeje ej	eje df f ddœ‡ fdd„Z
‡  ZS )Úretry_if_exception_typez=Retries if an exception has been raised of one or more types..N©Úexception_typesr   c                    s   ˆ | _ tƒ  ‡ fdd„¡ d S )Nc                    s
   t | ˆ ƒS r   ©Ú
isinstance©Úe©r.   r   r   Ú<lambda>S   ó    z2retry_if_exception_type.__init__.<locals>.<lambda>©r.   Úsuperr$   ©r
   r.   ©Ú	__class__r3   r   r$   K   s    z retry_if_exception_type.__init__©r   r   r   r   Ú	Exceptionr)   ÚUnionÚTyper+   ÚTupler$   Ú__classcell__r   r   r9   r   r,   H   s   ûÿÿúr,   c                       sL   e Zd ZdZefejeje ej	eje df f ddœ‡ fdd„Z
‡  ZS )Úretry_if_not_exception_typezARetries except an exception has been raised of one or more types..Nr-   c                    s   ˆ | _ tƒ  ‡ fdd„¡ d S )Nc                    s   t | ˆ ƒ S r   r/   r1   r3   r   r   r4   a   r5   z6retry_if_not_exception_type.__init__.<locals>.<lambda>r6   r8   r9   r3   r   r$   Y   s    z$retry_if_not_exception_type.__init__r;   r   r   r9   r   rA   V   s   ûÿÿúrA   c                       s\   e Zd ZdZefejeje ej	eje df f ddœ‡ fdd„Z
dedœd	d
„Z‡  ZS )Úretry_unless_exception_typez:Retries until an exception is raised of one or more types..Nr-   c                    s   ˆ | _ tƒ  ‡ fdd„¡ d S )Nc                    s   t | ˆ ƒ S r   r/   r1   r3   r   r   r4   o   r5   z6retry_unless_exception_type.__init__.<locals>.<lambda>r6   r8   r9   r3   r   r$   g   s    z$retry_unless_exception_type.__init__r   r   c                 C   s   |j jsdS |  |j  ¡ ¡S r   r%   r	   r   r   r   r   q   s    z$retry_unless_exception_type.__call__)r   r   r   r   r<   r)   r=   r>   r+   r?   r$   r   r   r@   r   r   r9   r   rB   d   s   ûÿÿú
rB   c                   @   s>   e Zd ZdZejejgef ddœdd„Zdedœdd	„Z	dS )
Úretry_if_resultz+Retries if the result verifies a predicate.Nr    c                 C   s
   || _ d S r   r"   r#   r   r   r   r$   {   s    zretry_if_result.__init__r   r   c                 C   s    |j js|  |j  ¡ ¡S dS d S r   ©r&   r'   r!   Úresultr	   r   r   r   r   ~   s    zretry_if_result.__call__©
r   r   r   r   r)   r*   ÚAnyr   r$   r   r   r   r   r   rC   x   s   rC   c                   @   s>   e Zd ZdZejejgef ddœdd„Zdedœdd	„Z	dS )
Úretry_if_not_resultz*Retries if the result refutes a predicate.Nr    c                 C   s
   || _ d S r   r"   r#   r   r   r   r$   ˆ   s    zretry_if_not_result.__init__r   r   c                 C   s"   |j js|  |j  ¡ ¡ S dS d S r   rD   r	   r   r   r   r   ‹   s    zretry_if_not_result.__call__rF   r   r   r   r   rH   …   s   rH   c                       s8   e Zd ZdZdeje eje ddœ‡ fdd„Z‡  ZS )Úretry_if_exception_messagez2Retries if an exception message equals or matches.N©ÚmessageÚmatchr   c                    s‚   ˆ r|rt | jj› d�ƒ‚ˆ r8ttdœ‡ fdd„}|}n:|r`t |¡‰ttdœ‡fdd„}|}nt | jj› d�ƒ‚tƒ  |¡ d S )Nz.() takes either 'message' or 'match', not both)r(   r   c                    s   ˆ t | ƒkS r   )Ústr©r(   )rK   r   r   Úmessage_fnc    s    z8retry_if_exception_message.__init__.<locals>.message_fncc                    s   t ˆ  t| ƒ¡ƒS r   )r   rL   rM   rN   )Úprogr   r   Ú	match_fnc§   s    z6retry_if_exception_message.__init__.<locals>.match_fncz3() missing 1 required argument 'message' or 'match')	Ú	TypeErrorr:   r   r+   r   ÚreÚcompiler7   r$   )r
   rK   rL   rO   r!   rQ   r9   )rK   rP   r   r$   •   s    
z#retry_if_exception_message.__init__)NN)	r   r   r   r   r)   ÚOptionalrM   r$   r@   r   r   r9   r   rI   ’   s     ýürI   c                       sH   e Zd ZdZd
eje eje ddœ‡ fdd„Zdedœdd	„Z	‡  Z
S )Úretry_if_not_exception_messagez5Retries until an exception message equals or matches.NrJ   c                    s&   t ƒ  ||¡ | j‰ ‡ fdd„| _d S )Nc                     s   ˆ | i |¤Ž S r   r   )Úargs_Úkwargs_©Úif_predicater   r   r4   ¼   r5   z9retry_if_not_exception_message.__init__.<locals>.<lambda>)r7   r$   r!   )r
   rK   rL   r9   rY   r   r$   ´   s    z'retry_if_not_exception_message.__init__r   r   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__)NN)r   r   r   r   r)   rU   rM   r$   r   r   r@   r   r   r9   r   rV   ±   s     ýü
rV   c                   @   s0   e Zd ZdZeddœdd„Zdedœdd	„ZdS )
r   z1Retries if any of the retries condition is valid.N©Úretriesr   c                 G   s
   || _ d S r   ©r\   ©r
   r\   r   r   r   r$   Ç   s    zretry_any.__init__r   r   c                    s   t ‡ fdd„| jD ƒƒS )Nc                 3   s   | ]}|ˆ ƒV  qd S r   r   ©Ú.0Úr©r   r   r   Ú	<genexpr>Ë   r5   z%retry_any.__call__.<locals>.<genexpr>)Úanyr\   r	   r   rb   r   r   Ê   s    zretry_any.__call__©r   r   r   r   r   r$   r   r   r   r   r   r   r   Ä   s   r   c                   @   s0   e Zd ZdZeddœdd„Zdedœdd	„ZdS )
r   z/Retries if all the retries condition are valid.Nr[   c                 G   s
   || _ d S r   r]   r^   r   r   r   r$   Ñ   s    zretry_all.__init__r   r   c                    s   t ‡ fdd„| jD ƒƒS )Nc                 3   s   | ]}|ˆ ƒV  qd S r   r   r_   rb   r   r   rc   Õ   r5   z%retry_all.__call__.<locals>.<genexpr>)Úallr\   r	   r   rb   r   r   Ô   s    zretry_all.__call__re   r   r   r   r   r   Î   s   r   )r   rS   r)   ÚTYPE_CHECKINGÚpip._vendor.tenacityr   ÚABCr   r   Úretry_neverr   Úretry_alwaysr   r,   rA   rB   rC   rH   rI   rV   r   r   r   r   r   r   Ú<module>   s&   
