
    Ii                         S SK r S SKJr  S SKJrJrJrJrJrJ	r	J
r
  S SKJrJr  \
" S5      r\(       a  S SKJr   " S S5      rg)	    N)sleep)TYPE_CHECKINGAnyCallableIterableTupleTypeTypeVar)ConnectionErrorTimeoutErrorT)AbstractBackoffc            	           \ rS rSrSr\\\R                  44SSS\	S\
\\   S4   4S jjrS	\\\      S
S4S jrS\/ \4   S\\/\4   S
\4S jrSrg)Retry   z0Retry a specific number of times after a failurebackoffr   retriessupported_errors.c                 (    Xl         X l        X0l        g)z
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)selfr   r   r   s       1/venv/lib/python3.13/site-packages/redis/retry.py__init__Retry.__init__   s    "  !1    specified_errorsreturnNc                 b    [        [        U R                  [        U5      -   5      5      U l        g)z=
Updates the supported errors with the specified error types
N)tuplesetr   )r   r   s     r   update_supported_errorsRetry.update_supported_errors%   s*     "'&&/?)@@A"
r   dofailc                 >   U R                   R                  5         Sn  U" 5       $ ! U R                   ad  nUS-  nU" U5        U R                  S:  a  X0R                  :  a  UeU R                   R	                  U5      nUS:  a  [        U5         SnAOSnAff = fM  )z
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      N)r   resetr   r   computer   )r   r&   r'   failureserrorr   s         r   call_with_retryRetry.call_with_retry/   s     		#t)) #AU==A%(]]*BK--//9Q;'N# s   & BABBr   )__name__
__module____qualname____firstlineno____doc__r   r   sockettimeoutintr   r	   	Exceptionr   r   r$   r   r   r   r.   __static_attributes__ r   r   r   r      s    : NN9
	2"2 2  Y 45	2*
 (i 9
	
#RUO# 	{C'(# 
	#r   r   )r5   timer   typingr   r   r   r   r   r	   r
   redis.exceptionsr   r   r   redis.backoffr   r   r:   r   r   <module>r?      s0      O O O :CL-9# 9#r   