
    keJi                        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dS )    N)ABCabstractmethodgMb?gMb?c                   8    e Zd ZdZd Zededefd            ZdS )AbstractBackoffzBackoff interfacec                     dS )z
        Reset internal state before an operation.
        `reset` is called once at the beginning of
        every call to `Retry.call_with_retry`
        N selfs    S/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/redis/backoff.pyresetzAbstractBackoff.reset   s	     	    failuresreturnc                     dS )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   
   sW                ^  r   r   c                   J    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
dS )
ConstantBackoffzConstant backoff upon failurebackoffr   Nc                     || _         dS )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                 Z    t          |t                    st          S | j        |j        k    S r!   )
isinstancer   NotImplementedr   r
   others     r   __eq__zConstantBackoff.__eq__%   s)    %1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      s        ''   $        &# & & & &/t / / / /       r   r   c                   $     e Zd ZdZd fdZ xZS )	NoBackoffzNo backoff upon failurer   Nc                 J    t                                          d           d S 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-   /   sC        !!         r   r-   c                   P    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d
S )ExponentialBackoffz Exponential backoff upon failurecapbasec                 "    || _         || _        dS 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                 8    t          | j        | j        f          S r!   r"   r=   r<   r	   s    r   r#   zExponentialBackoff.__hash__A       TZ+,,,r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r!   )r%   r5   r&   r=   r<   r'   s     r   r)   zExponentialBackoff.__eq__D   8    %!344 	"!!zU[(DTY%*-DDr   r   c                 B    t          | j        | j        d|z  z            S N   )minr<   r=   r   s     r   r   zExponentialBackoff.computeJ   s    49dj1h;6777r   Nr   r   r   r   DEFAULT_CAPDEFAULT_BASEr   r   r   r#   r+   r)   r   r   r   r   r5   r5   6   s        **$/|  E u    -# - - - -Et E E E E8 8 8 8 8 8 8 8r   r5   c                   T    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dS )FullJitterBackoffz Full jitter backoff upon failurer6   r7   r   Nc                 "    || _         || _        dS r9   r;   r>   s      r   r   zFullJitterBackoff.__init__Q   r?   r   c                 8    t          | j        | j        f          S r!   rA   r	   s    r   r#   zFullJitterBackoff.__hash__Y   rB   r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r!   )r%   rM   r&   r=   r<   r'   s     r   r)   zFullJitterBackoff.__eq__\   s8    %!233 	"!!zU[(DTY%*-DDr   r   c           	      h    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TY
Q[0H!I!IJJJr   rI   r   r   r   rM   rM   N   s        **$/|  E u PT    -# - - - -Et E E E EK K K K K K K Kr   rM   c                   T    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dS )EqualJitterBackoffz!Equal jitter backoff upon failurer6   r7   r   Nc                 "    || _         || _        dS r9   r;   r>   s      r   r   zEqualJitterBackoff.__init__i   r?   r   c                 8    t          | j        | j        f          S r!   rA   r	   s    r   r#   zEqualJitterBackoff.__hash__q   rB   r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r!   )r%   rU   r&   r=   r<   r'   s     r   r)   zEqualJitterBackoff.__eq__t   rD   r   r   c                 x    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:    49dj1h;677!;fnQ----r   rI   r   r   r   rU   rU   f   s        ++$/|  E u PT    -# - - - -Et E E E E. . . . . . . .r   rU   c                   \    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dS )DecorrelatedJitterBackoffz(Decorrelated jitter backoff upon failurer6   r7   r   Nc                 0    || _         || _        d| _        dS )r:   r   N)r<   r=   _previous_backoffr>   s      r   r   z"DecorrelatedJitterBackoff.__init__   s     
 	
!"r   c                 8    t          | j        | j        f          S r!   rA   r	   s    r   r#   z"DecorrelatedJitterBackoff.__hash__   rB   r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r!   )r%   r\   r&   r=   r<   r'   s     r   r)   z DecorrelatedJitterBackoff.__eq__   s8    %!:;; 	"!!zU[(DTY%*-DDr   c                     d| _         d S 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   sK    $*d&<q&@AA~dj+66!$TY!5!5%%r   r2   )r   r   r   r   rJ   rK   r   r   r   r#   r+   r)   r   r   r   r   r   r\   r\      s        22$/| # #E #u #PT # # # #-# - - - -Et E E E E# # # #& & & & & & & &r   r\   c                   T    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dS )ExponentialWithJitterBackoffz-Exponential backoff upon failure, with jitterr6   r7   r   Nc                 "    || _         || _        dS r9   r;   r>   s      r   r   z%ExponentialWithJitterBackoff.__init__   r?   r   c                 8    t          | j        | j        f          S r!   rA   r	   s    r   r#   z%ExponentialWithJitterBackoff.__hash__   rB   r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r!   )r%   rg   r&   r=   r<   r'   s     r   r)   z#ExponentialWithJitterBackoff.__eq__   s8    %!=>> 	"!!zU[(DTY%*-DDr   r   c                 j    t          | j        t          j                    | j        z  d|z  z            S rF   )rH   r<   rR   r=   r   s     r   r   z$ExponentialWithJitterBackoff.compute   s*    49fmoo
:Q[HIIIr   rI   r   r   r   rg   rg      s        77$/|  E u PT    -# - - - -Et E E E EJ J J J J 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 8 8 8 8 8 80K K K K K K K K0. . . . . . . .2& & & & & & & &>J J J J J? J J J0         r   