
    Iii                         S SK r S SKJrJr  SrSr " S S\5      r " S S\5      r " S	 S
\5      r " S S\5      r	 " S S\5      r
 " S S\5      r " S S\5      rS rg)    N)ABCabstractmethodgMb?gMb?c                   :    \ rS rSrSrS r\S\S\4S j5       r	Sr
g)	AbstractBackoff
   zBackoff interfacec                     g)z|
Reset internal state before an operation.
`reset` is called once at the beginning of
every call to `Retry.call_with_retry`
N selfs    3/venv/lib/python3.13/site-packages/redis/backoff.pyresetAbstractBackoff.reset   s     	    failuresreturnc                     g)z'Compute backoff in seconds upon failureNr	   r   r   s     r   computeAbstractBackoff.compute   s     	r   r	   N)__name__
__module____qualname____firstlineno____doc__r   r   intfloatr   __static_attributes__r	   r   r   r   r   
   s,        r   r   c                   <    \ rS rSrSrS\SS4S jrS\S\4S jrS	r	g)
ConstantBackoff   zConstant backoff upon failurebackoffr   Nc                     Xl         g)z"`backoff`: backoff time in secondsN_backoff)r   r!   s     r   __init__ConstantBackoff.__init__   s    r   r   c                     U R                   $ Nr#   r   s     r   r   ConstantBackoff.compute"   s    }}r   r#   )
r   r   r   r   r   r   r%   r   r   r   r	   r   r   r   r      s+    '   $    r   r   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )	NoBackoff&   zNo backoff upon failurec                 $   > [         TU ]  S5        g Nr   )superr%   )r   	__class__s    r   r%   NoBackoff.__init__)   s    r   r	   r   N)r   r   r   r   r   r%   r   __classcell__)r0   s   @r   r+   r+   &   s    ! r   r+   c                   D    \ rS rSrSr\\4S\S\4S jjrS\	S\4S jr
S	rg
)ExponentialBackoff-   z Exponential backoff upon failurecapbasec                     Xl         X l        gM
`cap`: maximum backoff time in seconds
`base`: base backoff time in seconds
N_cap_baser   r7   r8   s      r   r%   ExponentialBackoff.__init__0       
 	
r   r   r   c                 N    [        U R                  U R                  SU-  -  5      $ )N   )minr=   r>   r   s     r   r   ExponentialBackoff.compute8   s     499djj1h;677r   r>   r=   Nr   r   r   r   r   DEFAULT_CAPDEFAULT_BASEr   r%   r   r   r   r	   r   r   r5   r5   -   s0    *$/| E u 8 8 8r   r5   c                   H    \ rS rSrSr\\4S\S\SS4S jjrS\	S\4S	 jr
S
rg)FullJitterBackoff<   z Full jitter backoff upon failurer7   r8   r   Nc                     Xl         X l        gr:   r<   r?   s      r   r%   FullJitterBackoff.__init__?   rA   r   r   c           	      x    [         R                  " S[        U R                  U R                  SU-  -  5      5      $ )Nr   rC   )randomuniformrD   r=   r>   r   s     r   r   FullJitterBackoff.computeG   s+    ~~aTYY

Q[0H!IJJr   rF   rG   r	   r   r   rK   rK   <   s;    *$/| E u PT K K Kr   rK   c                   H    \ rS rSrSr\\4S\S\SS4S jjrS\	S\4S	 jr
S
rg)EqualJitterBackoffK   z!Equal jitter backoff upon failurer7   r8   r   Nc                     Xl         X l        gr:   r<   r?   s      r   r%   EqualJitterBackoff.__init__N   rA   r   r   c                     [        U R                  U R                  SU-  -  5      S-  nU[        R                  " SU5      -   $ )NrC   r   )rD   r=   r>   rP   rQ   )r   r   temps      r   r   EqualJitterBackoff.computeV   s:    499djj1h;67!;fnnQ---r   rF   rG   r	   r   r   rT   rT   K   s8    +$/| E u PT . . .r   rT   c                   R    \ rS rSrSr\\4S\S\SS4S jjrSS jr	S	\
S\4S
 jrSrg)DecorrelatedJitterBackoff[   z(Decorrelated jitter backoff upon failurer7   r8   r   Nc                 *    Xl         X l        SU l        g)r;   r   N)r=   r>   _previous_backoffr?   s      r   r%   "DecorrelatedJitterBackoff.__init__^   s    
 	
!"r   c                     SU l         g r.   )r_   r
   s    r   r   DecorrelatedJitterBackoff.resetg   s
    !"r   r   c                     [        U R                  U R                  S-  5      n[        R                  " U R                  U5      n[        U R                  U5      U l        U R                  $ )N   )maxr>   r_   rP   rQ   rD   r=   )r   r   max_backoffrY   s       r   r   !DecorrelatedJitterBackoff.computej   sP    $**d&<&<q&@A~~djj+6!$TYY!5%%%r   )r>   r=   r_   r2   )r   r   r   r   r   rH   rI   r   r%   r   r   r   r   r	   r   r   r\   r\   [   s=    2$/| #E #u #PT ##& & &r   r\   c                      [        5       $ r(   )rT   r	   r   r   default_backoffri   q   s    r   )rP   abcr   r   rH   rI   r   r   r+   r5   rK   rT   r\   ri   r	   r   r   <module>rk      sr     # c "o  8 8K K. . & &, r   