B
    !ke๖  ใ               @   sฬ   d dl Z d dlZd dlmZ ejr6d dlZd dlmZ G dd de jZej	eej
dgef f 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)ฺ_utils)ฺ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 )ฺ	stop_basez(Abstract base class for stop strategies.r   )ฺretry_stateฺreturnc             C   s   d S )Nฉ )ฺselfr   r   r   ๚P/home/ankuromar296_gmail_com/.local/lib/python3.7/site-packages/tenacity/stop.pyฺ__call__   s    zstop_base.__call__ฺstop_all)ฺotherr   c             C   s
   t | |S )N)r   )r   r   r   r   r	   ฺ__and__"   s    zstop_base.__and__ฺstop_anyc             C   s
   t | |S )N)r   )r   r   r   r   r	   ฺ__or__%   s    zstop_base.__or__N)
ฺ__name__ฺ
__module__ฺ__qualname__ฺ__doc__ฺabcฺabstractmethodฺboolr
   r   r   r   r   r   r	   r      s
   r   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+Stop if any of the stop condition is valid.N)ฺstopsr   c             G   s
   || _ d S )N)r   )r   r   r   r   r	   ฺ__init__/   s    zstop_any.__init__r   )r   r   c                s   t  fdd| jD S )Nc             3   s   | ]}| V  qd S )Nr   )ฺ.0ฺx)r   r   r	   ๚	<genexpr>3   s    z$stop_any.__call__.<locals>.<genexpr>)ฺanyr   )r   r   r   )r   r	   r
   2   s    zstop_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*Stop if all the stop conditions are valid.N)r   r   c             G   s
   || _ d S )N)r   )r   r   r   r   r	   r   9   s    zstop_all.__init__r   )r   r   c                s   t  fdd| jD S )Nc             3   s   | ]}| V  qd S )Nr   )r   r   )r   r   r	   r   =   s    z$stop_all.__call__.<locals>.<genexpr>)ฺallr   )r   r   r   )r   r	   r
   <   s    zstop_all.__call__)r   r   r   r   r   r   r   r
   r   r   r   r	   r   6   s   r   c               @   s    e Zd ZdZdedddZdS )ฺ_stop_neverzNever stop.r   )r   r   c             C   s   dS )NFr   )r   r   r   r   r	   r
   C   s    z_stop_never.__call__N)r   r   r   r   r   r
   r   r   r   r	   r   @   s   r   c               @   s0   e Zd ZdZdddddZdedd	d
ZdS )ฺstop_when_event_setz!Stop when the given event is set.zthreading.EventN)ฺeventr   c             C   s
   || _ d S )N)r    )r   r    r   r   r	   r   M   s    zstop_when_event_set.__init__r   )r   r   c             C   s
   | j  ก S )N)r    ฺis_set)r   r   r   r   r	   r
   P   s    zstop_when_event_set.__call__)r   r   r   r   r   r   r
   r   r   r   r	   r   J   s   r   c               @   s0   e Zd ZdZeddddZdeddd	ZdS )
ฺstop_after_attemptz.Stop when the previous attempt >= max_attempt.N)ฺmax_attempt_numberr   c             C   s
   || _ d S )N)r#   )r   r#   r   r   r	   r   W   s    zstop_after_attempt.__init__r   )r   r   c             C   s   |j | jkS )N)ฺattempt_numberr#   )r   r   r   r   r	   r
   Z   s    zstop_after_attempt.__call__)r   r   r   r   ฺintr   r   r
   r   r   r   r	   r"   T   s   r"   c               @   s2   e Zd ZdZejddddZdeddd	ZdS )
ฺstop_after_delayz3Stop when the time from the first attempt >= limit.N)ฺ	max_delayr   c             C   s   t  |ก| _d S )N)r   ฺ
to_secondsr'   )r   r'   r   r   r	   r   a   s    zstop_after_delay.__init__r   )r   r   c             C   s   |j d krtd|j | jkS )Nz4__call__() called but seconds_since_start is not set)ฺseconds_since_startฺRuntimeErrorr'   )r   r   r   r   r	   r
   d   s    
zstop_after_delay.__call__)	r   r   r   r   r   Ztime_unit_typer   r   r
   r   r   r   r	   r&   ^   s   r&   )r   ฺtypingฺtenacityr   ฺTYPE_CHECKINGฺ	threadingr   ฺABCr   ฺUnionฺCallabler   Z	StopBaseTr   r   r   ฺ
stop_neverr   r"   r&   r   r   r   r	   ฺ<module>   s   



