Ë
    êU.ji  ã                   óÄ   — d dl Z d dlmZmZ dZdZ G d„ de«      Z G d„ de«      Z G d	„ d
e«      Z G d„ de«      Z	 G d„ de«      Z
 G d„ de«      Z G d„ de«      Zd„ Zy)é    N)ÚABCÚabstractmethodgü©ñÒMbà?gü©ñÒMb€?c                   ó0   — e Zd ZdZd„ Zededefd„«       Zy)ÚAbstractBackoffzBackoff interfacec                  ó   — y)zœ
        Reset internal state before an operation.
        `reset` is called once at the beginning of
        every call to `Retry.call_with_retry`
        N© ©Úselfs    úOC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\redis/backoff.pyÚresetzAbstractBackoff.reset   s   € ð 	ó    ÚfailuresÚreturnc                  ó   — y)z'Compute backoff in seconds upon failureNr   ©r
   r   s     r   ÚcomputezAbstractBackoff.compute   s   € ð 	r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚintÚfloatr   r   r   r   r   r   
   s,   „ Ùòð ð ð ¨ò ó ñr   r   c                   ó0   — e Zd ZdZdeddfd„Zdedefd„Zy)ÚConstantBackoffzConstant backoff upon failureÚbackoffr   Nc                 ó   — || _         y)z"`backoff`: backoff time in secondsN©Ú_backoff)r
   r   s     r   Ú__init__zConstantBackoff.__init__   s	   € àˆ�r   r   c                 ó   — | j                   S ©Nr   r   s     r   r   zConstantBackoff.compute"   s   € Ø�}‰}Ðr   )r   r   r   r   r   r   r   r   r   r   r   r   r      s+   „ Ù'ð  ð  ¨$ó  ð ð ¨ô r   r   c                   ó$   ‡ — e Zd ZdZdˆ fd„Zˆ xZS )Ú	NoBackoffzNo backoff upon failurec                 ó$   •— t         ‰| �  d«       y ©Nr   )Úsuperr   )r
   Ú	__class__s    €r   r   zNoBackoff.__init__)   s   ø€ Ü‰Ñ˜Õr   ©r   N)r   r   r   r   r   Ú__classcell__)r'   s   @r   r#   r#   &   s   ø„ Ù!÷ñ r   r#   c                   ó6   — e Zd ZdZeefdedefd„Zdedefd„Z	y)	ÚExponentialBackoffz Exponential backoff upon failureÚcapÚbasec                 ó    — || _         || _        y©úe
        `cap`: maximum backoff time in seconds
        `base`: base backoff time in seconds
        N©Ú_capÚ_base©r
   r,   r-   s      r   r   zExponentialBackoff.__init__0   ó   € ð
 ˆŒ	Øˆ�
r   r   r   c                 óN   — t        | j                  | j                  d|z  z  «      S )Né   )Úminr2   r3   r   s     r   r   zExponentialBackoff.compute8   s    € Ü�4—9‘9˜dŸj™j¨1¨h©;Ñ6Ó7Ð7r   N©
r   r   r   r   ÚDEFAULT_CAPÚDEFAULT_BASEr   r   r   r   r   r   r   r+   r+   -   s0   „ Ù*à$/¸|ñ ˜Eð °uó ð8 ð 8¨ô 8r   r+   c                   ó:   — e Zd ZdZeefdededdfd„Zdedefd„Z	y)	ÚFullJitterBackoffz Full jitter backoff upon failurer,   r-   r   Nc                 ó    — || _         || _        yr/   r1   r4   s      r   r   zFullJitterBackoff.__init__?   r5   r   r   c           	      óv   — t        j                  dt        | j                  | j                  d|z  z  «      «      S )Nr   r7   )ÚrandomÚuniformr8   r2   r3   r   s     r   r   zFullJitterBackoff.computeG   s+   € Ü�~‰~˜a¤ T§Y¡Y°·
±
¸QÀ¹[Ñ0HÓ!IÓJÐJr   r9   r   r   r   r=   r=   <   s;   „ Ù*à$/¸|ñ ˜Eð °uð ÐPTó ðK ð K¨ô Kr   r=   c                   ó:   — e Zd ZdZeefdededdfd„Zdedefd„Z	y)	ÚEqualJitterBackoffz!Equal jitter backoff upon failurer,   r-   r   Nc                 ó    — || _         || _        yr/   r1   r4   s      r   r   zEqualJitterBackoff.__init__N   r5   r   r   c                 ó†   — t        | j                  | j                  d|z  z  «      dz  }|t        j                  d|«      z   S )Nr7   r   )r8   r2   r3   r@   rA   )r
   r   Útemps      r   r   zEqualJitterBackoff.computeV   s:   € Ü�4—9‘9˜dŸj™j¨1¨h©;Ñ6Ó7¸!Ñ;ˆØ”f—n‘n Q¨Ó-Ñ-Ð-r   r9   r   r   r   rC   rC   K   s8   „ Ù+à$/¸|ñ ˜Eð °uð ÐPTó ð. ð .¨ô .r   rC   c                   óB   — e Zd ZdZeefdededdfd„Zd
d„Zde	defd	„Z
y)ÚDecorrelatedJitterBackoffz(Decorrelated jitter backoff upon failurer,   r-   r   Nc                 ó.   — || _         || _        d| _        y)r0   r   N)r2   r3   Ú_previous_backoffr4   s      r   r   z"DecorrelatedJitterBackoff.__init__^   s   € ð
 ˆŒ	ØˆŒ
Ø!"ˆÕr   c                 ó   — d| _         y r%   )rJ   r	   s    r   r   zDecorrelatedJitterBackoff.resetg   s
   € Ø!"ˆÕr   r   c                 óÖ   — t        | j                  | j                  dz  «      }t        j                  | j                  |«      }t        | j                  |«      | _        | j                  S )Né   )Úmaxr3   rJ   r@   rA   r8   r2   )r
   r   Úmax_backoffrF   s       r   r   z!DecorrelatedJitterBackoff.computej   sP   € Ü˜$Ÿ*™* d×&<Ñ&<¸qÑ&@ÓAˆÜ�~‰~˜dŸj™j¨+Ó6ˆÜ!$ T§Y¡Y°Ó!5ˆÔØ×%Ñ%Ð%r   r(   )r   r   r   r   r:   r;   r   r   r   r   r   r   r   r   rH   rH   [   s=   „ Ù2à$/¸|ñ #˜Eð #°uð #ÐPTó #ó#ð& ð &¨ô &r   rH   c                  ó   — t        «       S r!   )rC   r   r   r   Údefault_backoffrQ   q   s   € ÜÓÐr   )r@   Úabcr   r   r:   r;   r   r   r#   r+   r=   rC   rH   rQ   r   r   r   Ú<module>rS      sr   ðÛ ß #ð €à€ô�cô ô"�oô ô�ô ô8˜ô 8ôK˜ô Kô.˜ô .ô & ô &ó, r   