
    Ri                     <    S SK r S SKJr  S SKJrJr   " S S5      rg)    N)sleep)ConnectionErrorTimeoutErrorc                   R    \ rS rSrSr\\\R                  44S jr	S\
4S jrS rSrg)	Retry   z0Retry a specific number of times after a failurec                 (    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)selfbackoffretriessupported_errorss       ]/var/www/html/backend/Backoffice_Marketplace/venv/lib/python3.13/site-packages/redis/retry.py__init__Retry.__init__
   s      !1    specified_errorsc                 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   c                 >   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   dofail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
   N)__name__
__module____qualname____firstlineno____doc__r   r   sockettimeoutr   listr   r$   __static_attributes__ r   r   r   r      s+    : *<H	2"
 
#r   r   )r+   timer   redis.exceptionsr   r   r   r/   r   r   <module>r2      s      :/# /#r   