o
    h                     @   s   d dl Z d dlZd dlmZ ejrd 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                   @   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 )	stop_basez(Abstract base class for stop strategies.retry_stater   returnc                 C   s   d S N selfr   r   r   C/var/www/html/ai/venv/lib/python3.10/site-packages/tenacity/stop.py__call__   s   zstop_base.__call__otherstop_allc                 C   
   t | |S r   )r   r
   r   r   r   r   __and__"      
zstop_base.__and__stop_anyc                 C   r   r   )r   r   r   r   r   __or__%   r   zstop_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   r   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   z+Stop if any of the stop condition is valid.stopsr   Nc                 G   
   || _ d S r   r   r
   r   r   r   r   __init__/   r   zstop_any.__init__r   r   c                       t  fdd| jD S )Nc                 3       | ]}| V  qd S r   r   .0xr   r   r   	<genexpr>3       z$stop_any.__call__.<locals>.<genexpr>)anyr   r	   r   r'   r   r   2      zstop_any.__call__r   r   r   r   r   r!   r   r   r   r   r   r   r   ,       r   c                   @   r   )r   z*Stop if all the stop conditions are valid.r   r   Nc                 G   r   r   r   r    r   r   r   r!   9   r   zstop_all.__init__r   r   c                    r"   )Nc                 3   r#   r   r   r$   r'   r   r   r(   =   r)   z$stop_all.__call__.<locals>.<genexpr>)allr   r	   r   r'   r   r   <   r+   zstop_all.__call__r,   r   r   r   r   r   6   r-   r   c                   @   s"   e Zd ZdZdddefddZdS )_stop_neverzNever stop.r   r   r   c                 C   s   dS )NFr   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                   @   s,   e Zd ZdZdddZdd	defd
dZdS )stop_when_event_setz!Stop when the given event is set.eventthreading.Eventr   Nc                 C   r   r   )r1   )r
   r1   r   r   r   r!   M   r   zstop_when_event_set.__init__r   r   c                 C   s
   | j  S r   )r1   is_setr	   r   r   r   r   P   r   zstop_when_event_set.__call__)r1   r2   r   N)r   r   r   r   r!   r   r   r   r   r   r   r0   J   s    
r0   c                   @   r   )stop_after_attemptz.Stop when the previous attempt >= max_attempt.max_attempt_numberr   Nc                 C   r   r   )r5   )r
   r5   r   r   r   r!   W   r   zstop_after_attempt.__init__r   r   c                 C   s   |j | jkS r   )attempt_numberr5   r	   r   r   r   r   Z   s   zstop_after_attempt.__call__)r   r   r   r   intr!   r   r   r   r   r   r   r4   T   r-   r4   c                   @   s6   e Zd ZdZdejddfddZdddefd	d
ZdS )stop_after_delayz3Stop when the time from the first attempt >= limit.	max_delayr   Nc                 C   s   t || _d S r   )r   
to_secondsr9   )r
   r9   r   r   r   r!   a   s   zstop_after_delay.__init__r   r   c                 C   s   |j d u r	td|j | jkS )Nz4__call__() called but seconds_since_start is not set)seconds_since_startRuntimeErrorr9   r	   r   r   r   r   d   s   
zstop_after_delay.__call__)	r   r   r   r   r   time_unit_typer!   r   r   r   r   r   r   r8   ^   s    r8   )r   typingtenacityr   TYPE_CHECKING	threadingr   ABCr   UnionCallabler   	StopBaseTr   r   r/   
stop_neverr0   r4   r8   r   r   r   r   <module>   s   



