
    bf                     2   d dl Z d dlZd dlmZmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ eegee         f         Z G d d          Z G d de          Zd	ed
edefdZ G d de          Z G d de          Z G d de          Z G d de          ZdS )    N)Any	AwaitableCallableIterableListOptionalSetType)warn)ClientResponsec                       e Zd Z	 	 	 	 	 ddedeee                  deeee                           dedee	         f
d	Z
ej        dd
edee         defd            ZdS )RetryOptionsBase   NTattemptsstatuses
exceptionsretry_all_server_errorsevaluate_response_callbackc                     || _         |t                      }|| _        |t                      }|| _        || _        || _        d S N)r   setr   r   r   r   )selfr   r   r   r   r   s         U/var/www/html/Alfredo/env/lib/python3.11/site-packages/aiohttp_retry/retry_options.py__init__zRetryOptionsBase.__init__   sM     &uuH'/J5?'>$*D'''    attemptresponsereturnc                     t           r   )NotImplementedErrorr   r   r   s      r   get_timeoutzRetryOptionsBase.get_timeout!   s    !!r   )r   NNTNr   )__name__
__module____qualname__intr   r   r
   	ExceptionboolEvaluateResponseCallbackTyper   abcabstractmethodr   floatr"    r   r   r   r      s         ,0:>(,MQE EE 8C=)E Xd9o67	E
 "&E %--I$JE E E E* 	" "3 "(>2J "V[ " " " " " "r   r   c                        e Zd Z	 	 	 	 	 	 	 	 ddeded	ed
edeee                  deeee                           de	dee
         f fdZddedee         defdZ xZS )ExponentialRetryr   皙?      >@       @NTr   start_timeoutmax_timeoutfactorr   r   r   r   c	                 ~    t                                          |||||           || _        || _        || _        d S Nr   r   r   r   r   )superr   _start_timeout_max_timeout_factor)
r   r   r3   r4   r5   r   r   r   r   	__class__s
            r   r   zExponentialRetry.__init__'   sR     	!$;'A 	 	
 	
 	
 &3#.$r   r   r   r   c                 P    | j         | j        |z  z  }t          || j                  S )z(Return timeout with exponential backoff.)r:   r<   minr;   )r   r   r   timeouts       r   r"   zExponentialRetry.get_timeout>   s)    %)@A7D-...r   )r   r0   r1   r2   NNTNr   )r#   r$   r%   r&   r,   r   r	   r
   r'   r(   r)   r   r   r"   __classcell__r=   s   @r   r/   r/   &   s         "!'+59(,MQ% %% % 	%
 % 3s8$% Si12% "&% %--I$J% % % % % %./ /3 /(>2J /V[ / / / / / / / /r   r/   argskwargsr   c                  8    t          d           t          | i |S )Nz0RetryOptions is deprecated, use ExponentialRetry)r   r/   )rC   rD   s     r   RetryOptionsrF   D   s$    	;<<<T,V,,,r   c                        e Zd Zdddddej        ddfdedeee                  deeee                           d	e	d
e	de
g e	f         dedee         f fdZddedee         de	fdZ xZS )RandomRetryr   Nr0         @Tr   r   r   min_timeoutr4   random_funcr   r   c	                     t                                          |||||           || _        || _        || _        || _        d S r7   )r9   r   r   rJ   r4   random)
r   r   r   r   rJ   r4   rK   r   r   r=   s
            r   r   zRandomRetry.__init__J   sY     	!$;'A 	 	
 	
 	
 &"-"-!r   r   r   r   c                 Z    | j         |                                 | j        | j         z
  z  z   S )zGenerate random timeouts.)rJ   rM   r4   r!   s      r   r"   zRandomRetry.get_timeoutb   s(    $++--43CdFV3V"WWWr   r   )r#   r$   r%   rM   r&   r   r   r
   r'   r,   r   r(   r)   r   r   r"   rA   rB   s   @r   rH   rH   I   s        ,0:>  +1=(,MQ" "" 8C=)" Xd9o67	"
 " " b%i(" "&" %--I$J" " " " " "0X X3 X(>2J XV[ X X X X X X X Xr   rH   c                        e Zd Z	 	 	 	 ddee         deee                  deeee	                           de
dee         f
 fdZdd	ed
ee         defdZ xZS )	ListRetryNTtimeoutsr   r   r   r   c                 |    t                                          t          |          ||||           || _        d S r7   )r9   r   lenrQ   )r   rQ   r   r   r   r   r=   s         r   r   zListRetry.__init__h   sH     	]]!$;'A 	 	
 	
 	
 !r   r   r   r   c                     | j         |         S )ztimeouts from a defined list.)rQ   r!   s      r   r"   zListRetry.get_timeouty   s    }W%%r   )NNTNr   )r#   r$   r%   r   r,   r   r   r&   r
   r'   r(   r)   r   r   r"   rA   rB   s   @r   rP   rP   g   s         -1:>(,MQ! !u+! 8C=)! Xd9o67	!
 "&! %--I$J! ! ! ! ! !"& &3 &(>2J &V[ & & & & & & & &r   rP   c                        e Zd Z	 	 	 	 	 	 	 ddededeee                  d	eeee                           d
ede	dee
         f fdZddedee         defdZ xZS )FibonacciRetryr         ?NrI   Tr   
multiplierr   r   r4   r   r   c                     t                                          |||||           || _        || _        d| _        d| _        d S )Nr8   rW   )r9   r   r4   rX   	prev_stepcurrent_step)	r   r   rX   r   r   r4   r   r   r=   s	           r   r   zFibonacciRetry.__init__   s[     	!$;'A 	 	
 	
 	
 '$r   r   r   r   c                     | j         | j        z   }| j        | _         || _        t          | j        |z  | j                  S r   )rZ   r[   r?   rX   r4   )r   r   r   new_current_steps       r   r"   zFibonacciRetry.get_timeout   s?    >D,==*,4?%55t7GHHHr   )r   rW   NNrI   TNr   )r#   r$   r%   r&   r,   r   r   r
   r'   r(   r)   r   r   r"   rA   rB   s   @r   rV   rV   ~   s         ,0:> (,MQ       8C=)	 
 Xd9o67    "&  %--I$J           .I I3 I(>2J IV[ I I I I I I I Ir   rV   c                        e Zd ZdZ	 	 	 	 	 	 	 	 	 dded	ed
ededeee                  deeee	                           dede
dee         f fdZddedee         def fdZ xZS )JitterRetryz2https://github.com/inyutin/aiohttp_retry/issues/44r   r0   r1   r2   NTr   r3   r4   r5   r   r   random_interval_sizer   r   c
           
          t                                          ||||||||	           || _        || _        || _        || _        d S )N)r   r3   r4   r5   r   r   r   r   )r9   r   r:   r;   r<   _random_interval_size)r   r   r3   r4   r5   r   r   r`   r   r   r=   s             r   r   zJitterRetry.__init__   se     	'#!$;'A 	 		
 		
 		
 &3#.$%9"""r   r   r   r   c                     t                                          |          t          j        d| j                  | j        z  z   }|S )Nr   )r9   r"   rM   uniformrb   r<   )r   r   r   r@   r=   s       r   r"   zJitterRetry.get_timeout   s<    ,,W55q$Jd8e8eimiu8uur   )	r   r0   r1   r2   NNr2   TNr   )r#   r$   r%   __doc__r&   r,   r   r	   r
   r'   r(   r)   r   r   r"   rA   rB   s   @r   r_   r_      s       << "!'+59&)(,MQ: :: : 	:
 : 3s8$: Si12: $: "&: %--I$J: : : : : :8 3 (>2J V[          r   r_   )r*   rM   typingr   r   r   r   r   r   r	   r
   warningsr   aiohttpr   r(   r)   r   r/   rF   rH   rP   rV   r_   r-   r   r   <module>ri      s   



  P P P P P P P P P P P P P P P P P P P P       " " " " " "'(8)D/(IJ " " " " " " " "6/ / / / /' / / /<- -s -/? - - - -
X X X X X" X X X<& & & & &  & & &.I I I I I% I I I@! ! ! ! !" ! ! ! ! !r   