+
     hi  c                   s    ^ RI t ^ RIHtHt RtRt ! R R]4      t ! R R]4      t ! R	 R
]4      t ! R R]4      t	 ! R R]4      t
 ! R R]4      t ! R R]4      tR tR# )    N)ABCabstractmethodgMb?gMb?c                   sF   a  ] tR t^
t o RtR t]V 3R lR l4       tRtV t	R# )AbstractBackoffzBackoff interfacec                    R# )z|
Reset internal state before an operation.
`reset` is called once at the beginning of
every call to `Retry.call_with_retry`
N self   &2/usr/lib/python3.14/site-packages/redis/backoff.pyresetZAbstractBackoff.reset   s     	    c                &   < V ^8  d   QhRS[ RS[/#    failuresreturnZintfloatZformat__classdict__   "r	   __annotate__ZAbstractBackoff.__annotate__   s        r   c                r   )z'Compute backoff in seconds upon failureNr   r   r      &&r	   computeZAbstractBackoff.compute   s     	r   r   N)
__name__
__module____qualname____firstlineno____doc__r
   r   r   __static_attributes____classdictcell__r      @r	   r   r   
   s!       r   r   c                   sH   a  ] tR t^t o RtV 3R lR ltV 3R lR ltRtV tR# )ConstantBackoffzConstant backoff upon failurec                s$   < V ^8  d   QhRS[ RR/# )r   backoffr   Nr   r   r   r	   r   ConstantBackoff.__annotate__   s          $  r   c                s    Wn         R# )z"`backoff`: backoff time in secondsNZ_backoff)r   r$   r   r	   __init__ZConstantBackoff.__init__   s    r   c                r   r   r   r   r   r	   r   r&   "   s        r   c                s    V P                   # Nr'   r   r   r	   r   ZConstantBackoff.compute"   s    }}r   r'   N)	r   r   r   r   r   r(   r   r   r    r!   r"   r	   r#   r#      s     '    r   r#   c                   sB   a a ] tR t^&t oRtV3R lV 3R lltRtVtV ;t# )	NoBackoffzNo backoff upon failurec                   < V ^8  d   QhRR/# r   r   Nr   r   r   r	   r   ZNoBackoff.__annotate__)   s      $ r   c                s&   < \         SV `  ^ 4       R# r    N)Zsuperr(   )r   	__class__s   &r	   r(   ZNoBackoff.__init__)   s    r   r   )	r   r   r   r   r   r(   r   r    Z__classcell__)r.   r   s   @@r	   r*   r*   &   s     !  r   r*   c                   sP   a  ] tR t^-t o Rt]]3V 3R lR lltV 3R lR ltRt	V t
R# )ExponentialBackoffz Exponential backoff upon failurec                s&   < V ^8  d   QhRS[ RS[ /# )r   capbaser%   r   r   r	   r   ExponentialBackoff.__annotate__0   s      E u r   c                    Wn         W n        R# zM
`cap`: maximum backoff time in seconds
`base`: base backoff time in seconds
N_cap_baser   r0   r1      &&&r	   r(   ZExponentialBackoff.__init__0       
 	
r   c                r   r   r   r   r   r	   r   r2   8   s     8 8 8 8r   c                s^    \        V P                  V P                  ^V,          ,          4      # r   )minr6   r7   r   r   r	   r   ZExponentialBackoff.compute8   s     499djj1h;677r   r7   r6   Nr   r   r   r   r   DEFAULT_CAPDEFAULT_BASEr(   r   r   r    r!   r"   r	   r/   r/   -   s!     *$/|  8 8r   r/   c                   sP   a  ] tR t^<t o Rt]]3V 3R lR lltV 3R lR ltRt	V t
R# )FullJitterBackoffz Full jitter backoff upon failurec                *   < V ^8  d   QhRS[ RS[ RR/# r   r0   r1   r   Nr%   r   r   r	   r   FullJitterBackoff.__annotate__?   #      E u PT r   c                r3   r4   r5   r8   r9   r	   r(   ZFullJitterBackoff.__init__?   r:   r   c                r   r   r   r   r   r	   r   rD   G   s     K K K Kr   c           	     s    \         P                  ! ^ \        V P                  V P                  ^V,          ,          4      4      # )r    )randomuniformr<   r6   r7   r   r   r	   r   ZFullJitterBackoff.computeG   s+    ~~aTYY

Q[0H!IJJr   r=   Nr>   r!   r"   r	   rA   rA   <   s#     *$/|  K Kr   rA   c                   sP   a  ] tR t^Kt o Rt]]3V 3R lR lltV 3R lR ltRt	V t
R# )EqualJitterBackoffz!Equal jitter backoff upon failurec                rB   rC   r%   r   r   r	   r   EqualJitterBackoff.__annotate__N   rE   r   c                r3   r4   r5   r8   r9   r	   r(   ZEqualJitterBackoff.__init__N   r:   r   c                r   r   r   r   r   r	   r   rI   V   s     . . . .r   c                s    \        V P                  V P                  ^V,          ,          4      ^,          pV\        P                  ! ^ V4      ,           # r;   )r<   r6   r7   rF   rG   )r   r   temps   && r	   r   ZEqualJitterBackoff.computeV   s:    499djj1h;67!;fnnQ---r   r=   Nr>   r!   r"   r	   rH   rH   K   s!     +$/|  . .r   rH   c                   sb   a  ] tR t^[t o Rt]]3V 3R lR lltV 3R lR ltV 3R lR lt	Rt
V tR	# )
DecorrelatedJitterBackoffz(Decorrelated jitter backoff upon failurec                rB   rC   r%   r   r   r	   r   &DecorrelatedJitterBackoff.__annotate__^   s#     # #E #u #PT #r   c                s,    Wn         W n        ^ V n        R# r4   )r6   r7   _previous_backoffr8   r9   r	   r(   Z"DecorrelatedJitterBackoff.__init__^   s    
 	
!"r   c                r+   r,   r   r   r   r	   r   rL   g   s     # #t #r   c                s    ^ V n         R# r-   )rM   r   r   r	   r
   ZDecorrelatedJitterBackoff.resetg   s
    !"r   c                r   r   r   r   r   r	   r   rL   j   s     & & & &r   c                s    \        V P                  V P                  ^,          4      p\        P                  ! V P                  V4      p\        V P                  V4      V n        V P                  # )i   )Zmaxr7   rM   rF   rG   r<   r6   )r   r   Zmax_backoffrJ   s   &&  r	   r   Z!DecorrelatedJitterBackoff.computej   sP    $**d&<&<q&@A~~djj+6!$TYY!5%%%r   )r7   r6   rM   N)r   r   r   r   r   r?   r@   r(   r
   r   r   r    r!   r"   r	   rK   rK   [   s+     2$/| # ## #& &r   rK   c                  s    \        4       # r)   )rH   r   r   r	   default_backoffrN   q   s    r   )rF   Zabcr   r   r?   r@   r   r#   r*   r/   rA   rH   rK   rN   r   r   r	   <module>rO      sr     # c "o  8 8K K. . & &, r   