
    )Jf                     D    d dl Z d dlmZ d dlmZmZ  G d d          ZdS )    N)sleep)ConnectionErrorTimeoutErrorc                   >    e Zd ZdZeeej        ffdZde	fdZ
d ZdS )Retryz0Retry a specific number of times after a failurec                 0    || _         || _        || _        dS )a'  
        Initialize a `Retry` object with a `Backoff` object
        that retries a maximum of `retries` times.
        `retries` can be negative to retry forever.
        You can specify the types of supported errors which trigger
        a retry with the `supported_errors` parameter.
        N)_backoff_retries_supported_errors)selfbackoffretriessupported_errorss       N/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/redis/retry.py__init__zRetry.__init__
   s       !1    specified_errorsc                 r    t          t          | j        t          |          z                       | _        dS )zM
        Updates the supported errors with the specified error types
        N)tuplesetr   )r   r   s     r   update_supported_errorszRetry.update_supported_errors   s8     "'&/?)@)@@AA"
 "
r   c                 .   | j                                          d}	 	  |            S # | j        $ ra}|dz  } ||           | j        dk    r|| j        k    r|| j                             |          }|dk    rt          |           Y d}~nd}~ww xY wz)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   T   N)r	   resetr   r
   computer   )r   dofailfailureserrorr   s         r   call_with_retryzRetry.call_with_retry#   s     	
	#	#rtt) # # #AU=A%%(T]*B*BK-//99Q;;'NNN#
	#s   	( 
BABBN)__name__
__module____qualname____doc__r   r   sockettimeoutr   listr   r     r   r   r   r      sf        :: *<H	2 2 2 2"
 
 
 
 
# # # # #r   r   )r%   timer   redis.exceptionsr   r   r   r(   r   r   <module>r+      sj           : : : : : : : :/# /# /# /# /# /# /# /# /# /#r   