Ë
    §Œj¥  ã                   óÚ   — 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 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    úW/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/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                   óH   — e Zd ZdZdeddfd„Zdefd„Zde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   c                 ó.   — t        | j                  f«      S ©N)Úhashr   r	   s    r   Ú__hash__zConstantBackoff.__hash__"   s   € Ü�T—]‘]Ð$Ó%Ð%r   c                 ó`   — t        |t        «      st        S | j                  |j                  k(  S r!   )Ú
isinstancer   ÚNotImplementedr   ©r
   Úothers     r   Ú__eq__zConstantBackoff.__eq__%   s%   € Ü˜%¤Ô1Ü!Ð!à�}‰} §¡Ñ.Ð.r   r   c                 ó   — | j                   S r!   r   r   s     r   r   zConstantBackoff.compute+   s   € Ø�}‰}Ðr   )r   r   r   r   r   r   r   r#   Úboolr)   r   r   r   r   r   r      sC   „ Ù'ð  ð  ¨$ó  ð&˜#ó &ð/˜tó /ð ð ¨ô 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__2   s   ø€ Ü‰Ñ˜Õr   ©r   N)r   r   r   r   r   Ú__classcell__)r1   s   @r   r-   r-   /   s   ø„ Ù!÷ñ r   r-   c                   óN   — e Zd ZdZeefdedefd„Zdefd„Z	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
   r6   r7   s      r   r   zExponentialBackoff.__init__9   ó   € ð
 ˆŒ	Øˆ�
r   r   c                 óD   — t        | j                  | j                  f«      S r!   ©r"   r=   r<   r	   s    r   r#   zExponentialBackoff.__hash__A   ó   € Ü�T—Z‘Z §¡Ð+Ó,Ð,r   c                 ó–   — t        |t        «      st        S | j                  |j                  k(  xr | j                  |j                  k(  S r!   )r%   r5   r&   r=   r<   r'   s     r   r)   zExponentialBackoff.__eq__D   ó8   € Ü˜%Ô!3Ô4Ü!Ð!à�z‰z˜UŸ[™[Ñ(ÒD¨T¯Y©Y¸%¿*¹*Ñ-DÐDr   r   c                 óN   — t        | j                  | j                  d|z  z  «      S ©Né   )Úminr<   r=   r   s     r   r   zExponentialBackoff.computeJ   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   r   r5   r5   6   sJ   „ Ù*à$/¸|ñ ˜Eð °uó ð-˜#ó -ðE˜tó Eð8 ð 8¨ô 8r   r5   c                   óR   — e Zd ZdZeefdededdfd„Zdefd„Z	de
fd„Zd	edefd
„Zy)ÚFullJitterBackoffz Full jitter backoff upon failurer6   r7   r   Nc                 ó    — || _         || _        yr9   r;   r>   s      r   r   zFullJitterBackoff.__init__Q   r?   r   c                 óD   — t        | j                  | j                  f«      S r!   rA   r	   s    r   r#   zFullJitterBackoff.__hash__Y   rB   r   c                 ó–   — t        |t        «      st        S | j                  |j                  k(  xr | j                  |j                  k(  S r!   )r%   rM   r&   r=   r<   r'   s     r   r)   zFullJitterBackoff.__eq__\   s8   € Ü˜%Ô!2Ô3Ü!Ð!à�z‰z˜UŸ[™[Ñ(ÒD¨T¯Y©Y¸%¿*¹*Ñ-DÐDr   r   c           	      óv   — t        j                  dt        | j                  | j                  d|z  z  «      «      S )Nr   rG   )ÚrandomÚuniformrH   r<   r=   r   s     r   r   zFullJitterBackoff.computeb   s+   € Ü�~‰~˜a¤ T§Y¡Y°·
±
¸QÀ¹[Ñ0HÓ!IÓJÐJr   rI   r   r   r   rM   rM   N   sU   „ Ù*à$/¸|ñ ˜Eð °uð ÐPTó ð-˜#ó -ðE˜tó EðK ð K¨ô Kr   rM   c                   óR   — e Zd ZdZeefdededdfd„Zdefd„Z	de
fd„Zd	edefd
„Zy)ÚEqualJitterBackoffz!Equal jitter backoff upon failurer6   r7   r   Nc                 ó    — || _         || _        yr9   r;   r>   s      r   r   zEqualJitterBackoff.__init__i   r?   r   c                 óD   — t        | j                  | j                  f«      S r!   rA   r	   s    r   r#   zEqualJitterBackoff.__hash__q   rB   r   c                 ó–   — t        |t        «      st        S | j                  |j                  k(  xr | j                  |j                  k(  S r!   )r%   rU   r&   r=   r<   r'   s     r   r)   zEqualJitterBackoff.__eq__t   rD   r   r   c                 ó†   — t        | j                  | j                  d|z  z  «      dz  }|t        j                  d|«      z   S )NrG   r   )rH   r<   r=   rR   rS   )r
   r   Útemps      r   r   zEqualJitterBackoff.computez   s:   € Ü�4—9‘9˜dŸj™j¨1¨h©;Ñ6Ó7¸!Ñ;ˆØ”f—n‘n Q¨Ó-Ñ-Ð-r   rI   r   r   r   rU   rU   f   sR   „ Ù+à$/¸|ñ ˜Eð °uð ÐPTó ð-˜#ó -ðE˜tó Eð. ð .¨ô .r   rU   c                   óZ   — e Zd ZdZeefdededdfd„Zdefd„Z	de
fd„Zdd	„Zd
edefd„Zy)ÚDecorrelatedJitterBackoffz(Decorrelated jitter backoff upon failurer6   r7   r   Nc                 ó.   — || _         || _        d| _        y)r:   r   N)r<   r=   Ú_previous_backoffr>   s      r   r   z"DecorrelatedJitterBackoff.__init__‚   s   € ð
 ˆŒ	ØˆŒ
Ø!"ˆÕr   c                 óD   — t        | j                  | j                  f«      S r!   rA   r	   s    r   r#   z"DecorrelatedJitterBackoff.__hash__‹   rB   r   c                 ó–   — t        |t        «      st        S | j                  |j                  k(  xr | j                  |j                  k(  S r!   )r%   r\   r&   r=   r<   r'   s     r   r)   z DecorrelatedJitterBackoff.__eq__Ž   s8   € Ü˜%Ô!:Ô;Ü!Ð!à�z‰z˜UŸ[™[Ñ(ÒD¨T¯Y©Y¸%¿*¹*Ñ-DÐDr   c                 ó   — d| _         y r/   )r^   r	   s    r   r   zDecorrelatedJitterBackoff.reset”   s
   € Ø!"ˆÕr   r   c                 óÖ   — t        | j                  | j                  dz  «      }t        j                  | j                  |«      }t        | j                  |«      | _        | j                  S )Né   )Úmaxr=   r^   rR   rS   rH   r<   )r
   r   Úmax_backoffrZ   s       r   r   z!DecorrelatedJitterBackoff.compute—   sP   € Ü˜$Ÿ*™* d×&<Ñ&<¸qÑ&@ÓAˆÜ�~‰~˜dŸj™j¨+Ó6ˆÜ!$ T§Y¡Y°Ó!5ˆÔØ×%Ñ%Ð%r   r2   )r   r   r   r   rJ   rK   r   r   r   r#   r+   r)   r   r   r   r   r   r\   r\      sW   „ Ù2à$/¸|ñ #˜Eð #°uð #ÐPTó #ð-˜#ó -ðE˜tó Eó#ð& ð &¨ô &r   r\   c                   óR   — e Zd ZdZeefdededdfd„Zdefd„Z	de
fd„Zd	edefd
„Zy)ÚExponentialWithJitterBackoffz-Exponential backoff upon failure, with jitterr6   r7   r   Nc                 ó    — || _         || _        yr9   r;   r>   s      r   r   z%ExponentialWithJitterBackoff.__init__¡   r?   r   c                 óD   — t        | j                  | j                  f«      S r!   rA   r	   s    r   r#   z%ExponentialWithJitterBackoff.__hash__©   rB   r   c                 ó–   — t        |t        «      st        S | j                  |j                  k(  xr | j                  |j                  k(  S r!   )r%   rg   r&   r=   r<   r'   s     r   r)   z#ExponentialWithJitterBackoff.__eq__¬   s8   € Ü˜%Ô!=Ô>Ü!Ð!à�z‰z˜UŸ[™[Ñ(ÒD¨T¯Y©Y¸%¿*¹*Ñ-DÐDr   r   c                 óx   — t        | j                  t        j                  «       | j                  z  d|z  z  «      S rF   )rH   r<   rR   r=   r   s     r   r   z$ExponentialWithJitterBackoff.compute²   s+   € Ü�4—9‘9œfŸm™m›o°·
±
Ñ:¸QÀ¹[ÑHÓIÐIr   rI   r   r   r   rg   rg   ž   sU   „ Ù7à$/¸|ñ ˜Eð °uð ÐPTó ð-˜#ó -ðE˜tó EðJ ð J¨ô Jr   rg   c                  ó   — t        «       S r!   )rU   r   r   r   Údefault_backoffrm   ¶   s   € ÜÓÐr   )rR   Úabcr   r   rJ   rK   r   r   r-   r5   rM   rU   r\   rg   rm   r   r   r   Ú<module>ro      s€   ðÛ ß #ð €à€ô�cô ô"�oô ô(�ô ô8˜ô 8ô0K˜ô Kô0.˜ô .ô2& ô &ô>J ?ô Jó0 r   