
    hX                         d dl mZ d dlmZmZmZmZmZmZm	Z	 d dl
mZmZmZ d dlmZ  e	d          Zerd dlmZ  G d dee                   Zd	S )
    )sleep)TYPE_CHECKINGAny	AwaitableCallableTupleTypeTypeVar)ConnectionError
RedisErrorTimeoutError)AbstractRetryT)AbstractBackoffc            	            e Zd Zej        Zeeffdddedee	e
         df         f fdZdedefd	Zd
eg ee         f         dee
gef         defdZ xZS )Retrybackoffr   retriessupported_errors.c                 N    t                                          |||           d S N)super__init__)selfr   r   r   	__class__s       S/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/redis/asyncio/retry.pyr   zRetry.__init__   s(     	'+;<<<<<    otherreturnc                     t          |t                    st          S | j        |j        k    o9| j        |j        k    o)t          | j                  t          |j                  k    S r   )
isinstancer   NotImplemented_backoff_retriesset_supported_errors)r   r   s     r   __eq__zRetry.__eq__   sc    %'' 	"!! MU^+ L/LD*++s53J/K/KK	
r   dofailc                 V  K   | j                                          d}	 	  |             d{V S # | j        $ rm}|dz  } ||           d{V  | j        dk    r|| j        k    r|| j                             |          }|dk    rt          |           d{V  Y d}~nd}~ww xY w)a&  
        Execute an operation that might fail and returns its result, or
        raise the exception that was thrown depending on the `Backoff` object.
        `do`: the operation to call. Expects no argument.
        `fail`: the failure handler, expects the last error that was thrown
        r   TN   )r#   resetr&   r$   computer   )r   r(   r)   failureserrorr   s         r   call_with_retryzRetry.call_with_retry%   s       	
	)	)RTTzzzzzz!) ) ) )Ad5kk!!!!!!!=A%%(T]*B*BK-//99Q;;..((((((()
	)s   0 
B'A#B""B')__name__
__module____qualname__r   __hash__r   r   intr   r	   r   r   r   boolr'   r   r   r   r0   __classcell__)r   s   @r   r   r      s        %H :
		= 	="	= 	=  Z 0# 56		= 	= 	= 	= 	= 	=
C 
D 
 
 
 
)2y|+,)4<j\3=N4O)	
) ) ) ) ) ) ) )r   r   N)asyncior   typingr   r   r   r   r   r	   r
   redis.exceptionsr   r   r   redis.retryr   r   redis.backoffr   r    r   r   <module>r>      s          P P P P P P P P P P P P P P P P P P F F F F F F F F F F % % % % % %GCLL .-------) -) -) -) -)M*% -) -) -) -) -)r   