o
    Ëý°jõ  ã                   @   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                   @   s<   e Zd ZdZejdddefdd„ƒZdd	d
„Zddd„Z	dS )Ú
retry_basez)Abstract base class for retry strategies.Úretry_stater   Úreturnc                 C   s   d S ©N© ©Úselfr   r   r   ú�/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/retry.pyÚ__call__   s   zretry_base.__call__ÚotherÚ	retry_allc                 C   ó
   t | |ƒS r   )r   ©r	   r   r   r   r
   Ú__and__    ó   
zretry_base.__and__Ú	retry_anyc                 C   r   r   )r   r   r   r   r
   Ú__or__#   r   zretry_base.__or__N)r   r   r   r   )r   r   r   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚabcÚabstractmethodÚboolr   r   r   r   r   r   r
   r      s    
r   c                   @   ó"   e Zd ZdZdddefdd„ZdS )Ú_retry_neverz-Retry strategy that never rejects any result.r   r   r   c                 C   ó   dS ©NFr   r   r   r   r
   r   *   ó   z_retry_never.__call__N©r   r   r   r   r   r   r   r   r   r
   r   '   ó    r   c                   @   r   )Ú_retry_alwaysz.Retry strategy that always rejects any result.r   r   r   c                 C   r   ©NTr   r   r   r   r
   r   4   r   z_retry_always.__call__Nr    r   r   r   r
   r"   1   r!   r"   c                   @   s@   e Zd ZdZdejegef ddfdd„Zdddefd	d
„Z	dS )Úretry_if_exceptionzARetry strategy that retries if an exception verifies a predicate.Ú	predicater   Nc                 C   ó
   || _ d S r   ©r%   ©r	   r%   r   r   r
   Ú__init__>   r   zretry_if_exception.__init__r   r   c                 C   s   |j jr|  |j  ¡ ¡S dS r   ©ÚoutcomeÚfailedr%   Ú	exceptionr   r   r   r
   r   A   ó   zretry_if_exception.__call__)
r   r   r   r   ÚtypingÚCallableÚBaseExceptionr   r)   r   r   r   r   r
   r$   ;   s    r$   c                       óN   e Zd ZdZefdejeje ej	eje df f ddf‡ fdd„Z
‡  ZS )Úretry_if_exception_typez=Retries if an exception has been raised of one or more types.Úexception_types.r   Nc                    ó   ˆ | _ tƒ  ‡ fdd„¡ d S )Nc                    s
   t | ˆ ƒS r   ©Ú
isinstance©Úe©r4   r   r
   Ú<lambda>S   s   
 z2retry_if_exception_type.__init__.<locals>.<lambda>©r4   Úsuperr)   ©r	   r4   ©Ú	__class__r:   r
   r)   K   ó   z retry_if_exception_type.__init__©r   r   r   r   Ú	Exceptionr/   ÚUnionÚTyper1   ÚTupler)   Ú__classcell__r   r   r?   r
   r3   H   ó    ûÿÿþúr3   c                       r2   )Úretry_if_not_exception_typezARetries except an exception has been raised of one or more types.r4   .r   Nc                    r5   )Nc                    ó   t | ˆ ƒ S r   r6   r8   r:   r   r
   r;   a   ó    z6retry_if_not_exception_type.__init__.<locals>.<lambda>r<   r>   r?   r:   r
   r)   Y   rA   z$retry_if_not_exception_type.__init__rB   r   r   r?   r
   rI   V   rH   rI   c                       s`   e Zd ZdZefdejeje ej	eje df f ddf‡ fdd„Z
dd	defd
d„Z‡  ZS )Úretry_unless_exception_typez:Retries until an exception is raised of one or more types.r4   .r   Nc                    r5   )Nc                    rJ   r   r6   r8   r:   r   r
   r;   o   rK   z6retry_unless_exception_type.__init__.<locals>.<lambda>r<   r>   r?   r:   r
   r)   g   rA   z$retry_unless_exception_type.__init__r   r   c                 C   ó   |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   rC   r/   rD   rE   r1   rF   r)   r   r   rG   r   r   r?   r
   rL   d   s    ûÿÿþú
rL   c                   @   óB   e Zd ZdZdejejgef ddfdd„Zdddefd	d
„Z	dS )Úretry_if_resultz+Retries if the result verifies a predicate.r%   r   Nc                 C   r&   r   r'   r(   r   r   r
   r)   {   r   zretry_if_result.__init__r   r   c                 C   s   |j js|  |j  ¡ ¡S dS r   ©r+   r,   r%   Úresultr   r   r   r
   r   ~   r.   zretry_if_result.__call__©
r   r   r   r   r/   r0   ÚAnyr   r)   r   r   r   r   r
   rO   x   ó     rO   c                   @   rN   )Úretry_if_not_resultz*Retries if the result refutes a predicate.r%   r   Nc                 C   r&   r   r'   r(   r   r   r
   r)   ˆ   r   zretry_if_not_result.__init__r   r   c                 C   s   |j js|  |j  ¡ ¡ S dS r   rP   r   r   r   r
   r   ‹   s   zretry_if_not_result.__call__rR   r   r   r   r
   rU   …   rT   rU   c                       s@   e Zd ZdZ		ddeje deje ddf‡ 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�ƒ‚ˆ rdtdtf‡ fdd„}|}n|r2t |¡‰dtdtf‡fdd„}|}n	t | jj› d�ƒ‚tƒ  |¡ d S )	Nz.() takes either 'message' or 'match', not bothr-   r   c                    s   ˆ t | ƒkS r   )Ústr©r-   )rW   r   r
   Úmessage_fnc    s   z8retry_if_exception_message.__init__.<locals>.message_fncc                    s   t ˆ  t| ƒ¡ƒS r   )r   rX   rY   rZ   )Úprogr   r
   Ú	match_fnc§   s   z6retry_if_exception_message.__init__.<locals>.match_fncz3() missing 1 required argument 'message' or 'match')	Ú	TypeErrorr@   r   r1   r   ÚreÚcompiler=   r)   )r	   rW   rX   r[   r%   r]   r?   )rW   r\   r
   r)   •   s   
z#retry_if_exception_message.__init__©NN)	r   r   r   r   r/   ÚOptionalrY   r)   rG   r   r   r?   r
   rV   ’   s    ýþýürV   c                       sR   e Zd ZdZ		ddeje deje ddf‡ fdd„Zdd	defd
d„Z	‡  Z
S )Úretry_if_not_exception_messagez5Retries until an exception message equals or matches.NrW   rX   r   c                    s&   t ƒ  ||¡ | j‰ ‡ fdd„| _d S )Nc                     s   ˆ | i |¤Ž S r   r   )Úargs_Úkwargs_©Úif_predicater   r
   r;   ¼   s    z9retry_if_not_exception_message.__init__.<locals>.<lambda>)r=   r)   r%   )r	   rW   rX   r?   rf   r
   r)   ´   s   z'retry_if_not_exception_message.__init__r   r   c                 C   rM   r#   r*   r   r   r   r
   r   ¾   s   z'retry_if_not_exception_message.__call__ra   )r   r   r   r   r/   rb   rY   r)   r   r   rG   r   r   r?   r
   rc   ±   s    ýþýü
rc   c                   @   ó4   e Zd ZdZdeddfdd„Zdddefd	d
„ZdS )r   z1Retries if any of the retries condition is valid.Úretriesr   Nc                 G   r&   r   ©ri   ©r	   ri   r   r   r
   r)   Ç   r   zretry_any.__init__r   r   c                    ó   t ‡ fdd„| jD ƒƒS )Nc                 3   ó   � | ]}|ˆ ƒV  qd S r   r   ©Ú.0Úr©r   r   r
   Ú	<genexpr>Ë   ó   € z%retry_any.__call__.<locals>.<genexpr>)Úanyri   r   r   rq   r
   r   Ê   ó   zretry_any.__call__©r   r   r   r   r   r)   r   r   r   r   r   r
   r   Ä   ó    r   c                   @   rh   )r   z/Retries if all the retries condition are valid.ri   r   Nc                 G   r&   r   rj   rk   r   r   r
   r)   Ñ   r   zretry_all.__init__r   r   c                    rl   )Nc                 3   rm   r   r   rn   rq   r   r
   rr   Õ   rs   z%retry_all.__call__.<locals>.<genexpr>)Úallri   r   r   rq   r
   r   Ô   ru   zretry_all.__call__rv   r   r   r   r
   r   Î   rw   r   )r   r_   r/   ÚTYPE_CHECKINGÚpip._vendor.tenacityr   ÚABCr   r   Úretry_neverr"   Úretry_alwaysr$   r3   rI   rL   rO   rU   rV   rc   r   r   r   r   r   r
   Ú<module>   s(   
