U
    +|jƒ	  ã                   @   sš   d dl Z d dlmZ e e j¡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	ƒ 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 )	Ú	stop_basez(Abstract base class for stop strategies.c                 C   s   d S ©N© ©ÚselfÚretry_stater   r   úaC:\Users\snmko\Desktop\web_content\django_cbt\venv\Lib\site-packages\pip/_vendor/tenacity/stop.pyÚ__call__   s    zstop_base.__call__c                 C   s
   t | |ƒS r   )Ústop_all©r   Úotherr   r   r	   Ú__and__   s    zstop_base.__and__c                 C   s
   t | |ƒS r   )Ústop_anyr   r   r   r	   Ú__or__"   s    zstop_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d„ ZdS )r   z+Stop if any of the stop condition is valid.c                 G   s
   || _ d S r   ©Ústops©r   r   r   r   r	   Ú__init__)   s    zstop_any.__init__c                    s   t ‡ fdd„| jD ƒƒS )Nc                 3   s   | ]}|ˆ ƒV  qd S r   r   ©Ú.0Úx©r   r   r	   Ú	<genexpr>-   s     z$stop_any.__call__.<locals>.<genexpr>)Úanyr   r   r   r   r	   r
   ,   s    zstop_any.__call__N©r   r   r   r   r   r
   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*Stop if all the stop conditions are valid.c                 G   s
   || _ d S r   r   r   r   r   r	   r   3   s    zstop_all.__init__c                    s   t ‡ fdd„| jD ƒƒS )Nc                 3   s   | ]}|ˆ ƒV  qd S r   r   r   r   r   r	   r   7   s     z$stop_all.__call__.<locals>.<genexpr>)Úallr   r   r   r   r	   r
   6   s    zstop_all.__call__Nr!   r   r   r   r	   r   0   s   r   c                   @   s   e Zd ZdZdd„ ZdS )Ú_stop_neverzNever stop.c                 C   s   dS )NFr   r   r   r   r	   r
   =   s    z_stop_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d„ ZdS )Ústop_when_event_setz!Stop when the given event is set.c                 C   s
   || _ d S r   )Úevent)r   r%   r   r   r	   r   G   s    zstop_when_event_set.__init__c                 C   s
   | j  ¡ S r   )r%   Úis_setr   r   r   r	   r
   J   s    zstop_when_event_set.__call__Nr!   r   r   r   r	   r$   D   s   r$   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Ústop_after_attemptz.Stop when the previous attempt >= max_attempt.c                 C   s
   || _ d S r   )Úmax_attempt_number)r   r(   r   r   r	   r   Q   s    zstop_after_attempt.__init__c                 C   s   |j | jkS r   )Úattempt_numberr(   r   r   r   r	   r
   T   s    zstop_after_attempt.__call__Nr!   r   r   r   r	   r'   N   s   r'   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Ústop_after_delayz3Stop when the time from the first attempt >= limit.c                 C   s
   || _ d S r   )Ú	max_delay)r   r+   r   r   r	   r   [   s    zstop_after_delay.__init__c                 C   s   |j | jkS r   )Úseconds_since_startr+   r   r   r   r	   r
   ^   s    zstop_after_delay.__call__Nr!   r   r   r   r	   r*   X   s   r*   )r   Úpip._vendorr   Úadd_metaclassÚABCMetaÚobjectr   r   r   r#   Ú
stop_neverr$   r'   r*   r   r   r   r	   Ú<module>   s   




