
    =h6#                        d dl mZ d dlZd dlZd dl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d
Z G d de      Z G d de      Z G d de      Z G d de      Zy)    )annotationsN)Any	AwaitableCallableIterable)warn)ClientResponsec                  d    e Zd Z	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 ddZej
                  ddd       Zy)RetryOptionsBaseNc                    || _         |
t               }|| _        |
t               }|| _        |h d}|D ch c]  }|j	                          c}| _        || _        || _        y c c}w )N>	   GETPUTHEADPOSTPATCHTRACEDELETECONNECTOPTIONS)attemptssetstatuses
exceptionsuppermethodsretry_all_server_errorsevaluate_response_callback)selfr   r   r   r   r   r   methods           k/var/www/html/phonemate/phone_mate_backend/venv/lib/python3.12/site-packages/aiohttp_retry/retry_options.py__init__zRetryOptionsBase.__init__   so     &uH'/J5??fGDK&LG&v||~G&L'>$*D' 'Ms   A&c                    t         N)NotImplementedErrorr   attemptresponses      r    get_timeoutzRetryOptionsBase.get_timeout(   s    !!    )   NNNTN)r   intr   Iterable[int] | Noner    Iterable[type[Exception]] | Noner   Iterable[str] | Noner   boolr   #EvaluateResponseCallbackType | NonereturnNoner#   r&   r+   r'   zClientResponse | Noner1   float)__name__
__module____qualname__r!   abcabstractmethodr(    r)   r    r   r      s     )-7;(,(,JNEE 'E 5	E
 &E "&E %HE 
E4 	" "r)   r   c                  p     e Zd Z	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZ	 d	 	 	 	 	 ddZ xZS )ExponentialRetryc
                Z    t         
|   ||||||	       || _        || _        || _        y Nr   r   r   r   r   r   )superr!   _start_timeout_max_timeout_factor)r   r   start_timeoutmax_timeoutfactorr   r   r   r   r   	__class__s             r    r!   zExponentialRetry.__init__.   sB     	!$;'A 	 	
 &3#.$r)   c                f    | j                   | j                  |z  z  }t        || j                        S )z(Return timeout with exponential backoff.)rA   rC   minrB   )r   r&   r'   timeouts       r    r(   zExponentialRetry.get_timeoutG   s0     %%w)>?7D--..r)   )	r*   皙?      >@       @NNNTN)r   r+   rD   r4   rE   r4   rF   r4   r   set[int] | Noner   set[type[Exception]] | Noner   set[str] | Noner   r/   r   r0   r1   r2   r#   r3   r5   r6   r7   r!   r(   __classcell__rG   s   @r    r<   r<   -   s     "!$(26#'(,JN%% % 	%
 % "% 0% !% "&% %H% 
%8 +/// (/ 
	/r)   r<   c                 2    t        dd       t        | i |S )Nz0RetryOptions is deprecated, use ExponentialRetry   )
stacklevel)r   r<   )argskwargss     r    RetryOptionsrY   Q   s    	;JT,V,,r)   c            	           e Zd Zddddddej                  ddf		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZ	 d		 	 	 	 	 d
dZ xZS )RandomRetryr*   NrK         @Tc
                h    t         
|   ||||||	       || _        || _        || _        || _        y r>   )r@   r!   r   min_timeoutrE   random)r   r   r   r   r   r^   rE   random_funcr   r   rG   s             r    r!   zRandomRetry.__init__W   sI     	!$;'A 	 	
 &"-"-!r)   c                p    | j                   | j                         | j                  | j                   z
  z  z   S )zGenerate random timeouts.)r^   r_   rE   r%   s      r    r(   zRandomRetry.get_timeoutq   s1     $++-43C3CdFVFV3V"WWWr)   )r   r+   r   r,   r   r-   r   r.   r^   r4   rE   r4   r`   zCallable[[], float]r   r/   r   r0   r1   r2   r#   r3   )r5   r6   r7   r_   r!   r(   rR   rS   s   @r    r[   r[   V   s     )-7;(,  +1==(,JN"" '" 5	"
 &" " " )" "&" %H" 
": +/XX (X 
	Xr)   r[   c                  \     e Zd Z	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZ	 d	 	 	 	 	 ddZ xZS )	ListRetryc                P    t         |   t        |      |||||       || _        y r>   )r@   r!   lentimeouts)r   rf   r   r   r   r   r   rG   s          r    r!   zListRetry.__init__{   s6     	]!$;'A 	 	
 !r)   c                     | j                   |   S )zTimeouts from a defined list.)rf   r%   s      r    r(   zListRetry.get_timeout   s     }}W%%r)   )NNNTN)rf   zlist[float]r   r,   r   r-   r   r.   r   r/   r   r0   r1   r2   r#   r3   rQ   rS   s   @r    rc   rc   z   s     *.7;(,(,JN!! '! 5	!
 &! "&! %H! 
!, +/&& (& 
	&r)   rc   c                  j     e Zd Z	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZ	 d	 	 	 	 	 ddZ xZS )FibonacciRetryc	                h    t         	|   ||||||       || _        || _        d| _        d| _        y )Nr?         ?)r@   r!   rE   
multiplier	prev_stepcurrent_step)
r   r   rl   r   r   r   rE   r   r   rG   s
            r    r!   zFibonacciRetry.__init__   sI     	!$;'A 	 	
 '$r)   c                    | j                   | j                  z   }| j                  | _         || _        t        | j                  |z  | j                        S r#   )rm   rn   rI   rl   rE   )r   r&   r'   new_current_steps       r    r(   zFibonacciRetry.get_timeout   sK    
  >>D,=,==**,4??%55t7G7GHHr)   )r*   rk   NNNr\   TN)r   r+   rl   r4   r   r,   r   r-   r   r.   rE   r4   r   r/   r   r0   r1   r2   r#   r3   rQ   rS   s   @r    ri   ri      s     )-7;(, (,JN     '	 
 5  &    "&  %H  
 8 +/	I	I (	I 
		Ir)   ri   c                  ~     e Zd ZdZ	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZ	 d	 	 	 	 	 d fdZ xZS )JitterRetryz3https://github.com/inyutin/aiohttp_retry/issues/44.c                n    t         |   ||||||||	|
	       || _        || _        || _        || _        y )N)	r   rD   rE   rF   r   r   r   r   r   )r@   r!   rA   rB   rC   _random_interval_size)r   r   rD   rE   rF   r   r   r   random_interval_sizer   r   rG   s              r    r!   zJitterRetry.__init__   sS     	'#!$;'A 	 
	
 &3#.$%9"r)   c                    t         |   |      t        j                  d| j                        | j
                  z  z   }|S )Nr   )r@   r(   r_   uniformrt   rC   )r   r&   r'   rJ   rG   s       r    r(   zJitterRetry.get_timeout   s;    
 ,W5q$JdJd8eimiuiu8uur)   )
r*   rK   rL   rM   NNNrM   TN)r   r+   rD   r4   rE   r4   rF   r4   r   rN   r   rO   r   rP   ru   r4   r   r/   r   r0   r1   r2   r#   r3   )r5   r6   r7   __doc__r!   r(   rR   rS   s   @r    rr   rr      s    = "!$(26#'&)(,JN:: : 	:
 : ": 0: !: $: "&: %H: 
:B +/ ( 
	 r)   rr   )rW   r   rX   r   r1   r<   )
__future__r   r8   r_   typingr   r   r   r   warningsr   aiohttpr	   r/   EvaluateResponseCallbackTyper   r<   rY   r[   rc   ri   rr   r:   r)   r    <module>r~      s    " 
  5 5  "'(8)D/(IJ " "@!/' !/H-
!X" !XH&  &:#I% #IL'" 'r)   