ó
    ùÞ jO  ã                   óÚ   • 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 S\5      rS rg)é    N)ÚABCÚabstractmethodgü©ñÒMbà?gü©ñÒMb€?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    ÚG/var/www/html/gaurav/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    € Ü�4—9‘9˜dŸj™j¨1¨h©;Ñ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   rD   )ÚrandomÚuniformrE   r=   r>   r   s     r   r   ÚFullJitterBackoff.computeG   s+   € Ü�~Š~˜a¤ T§Y¡Y°·
±
¸QÀ¹[Ñ0HÓ!IÓJÐJr   rG   rH   r	   r   r   rL   rL   <   s;   † Ù*à$/¸|ñ ˜Eð °uð ÐPTõ ðK ð K¨÷ Kr   rL   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)ÚEqualJitterBackofféK   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      -   $ )NrD   r   )rE   r=   r>   rQ   rR   )r   r   Útemps      r   r   ÚEqualJitterBackoff.computeV   s:   € Ü�4—9‘9˜dŸj™j¨1¨h©;Ñ6Ó7¸!Ñ;ˆØ”f—n’n Q¨Ó-Ñ-Ð-r   rG   rH   r	   r   r   rU   rU   K   s8   † Ù+à$/¸|ñ ˜Eð °uð ÐPTõ ð. ð .¨÷ .r   rU   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`   rQ   rR   rE   r=   )r   r   Úmax_backoffrZ   s       r   r   Ú!DecorrelatedJitterBackoff.computej   sP   € Ü˜$Ÿ*™* d×&<Ñ&<¸qÑ&@ÓAˆÜ�~Š~˜dŸj™j¨+Ó6ˆÜ!$ T§Y¡Y°Ó!5ˆÔØ×%Ñ%Ð%r   )r>   r=   r`   r2   )r   r   r   r   r   rI   rJ   r   r%   r   r   r   r   r	   r   r   r]   r]   [   s=   † Ù2à$/¸|ñ #˜Eð #°uð #ÐPTõ #ô#ð& ð &¨÷ &r   r]   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)ÚExponentialWithJitterBackofféq   z-Exponential backoff upon failure, with jitterr7   r8   r   Nc                 ó   • Xl         X l        gr:   r<   r?   s      r   r%   Ú%ExponentialWithJitterBackoff.__init__t   rA   r   r   c                 óz   • [        U R                  [        R                  " 5       U R                  -  SU-  -  5      $ rC   )rE   r=   rQ   r>   r   s     r   r   Ú$ExponentialWithJitterBackoff.compute|   s+   € Ü�4—9‘9œfŸmšm›o°·
±
Ñ:¸QÀ¹[ÑHÓIÐIr   rG   rH   r	   r   r   rj   rj   q   s;   † Ù7à$/¸|ñ ˜Eð °uð ÐPTõ ðJ ð J¨÷ Jr   rj   c                  ó   • [        5       $ r(   )rU   r	   r   r   Údefault_backoffrq   €   s   € ÜÓÐr   )rQ   Úabcr   r   rI   rJ   r   r   r+   r5   rL   rU   r]   rj   rq   r	   r   r   Ú<module>rs      s€   ðÛ ß #ð €à€ô�cô ô"�oô ô�ô ô8˜ô 8ôK˜ô Kô.˜ô .ô & ô &ô,J ?ô Jó r   