
    =h(0                       d dl mZ d dlZd dlZd dlZd dlmZ d dlm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mZmZ d dlmZ d dlmZ d	d
lmZmZ dZe
rd dlm Z  ejB                  dk\  rd dl	m"Z" nd dl#m"Z"  G d de"      Z$eeef   Z%ee%ee%   ee%df   f   Z&ee$ejN                  f   Z(edee   f   Z)e G d d             Z* G d d      Z+ddZ, G d d      Z-y)    )annotationsN)abstractmethod)	dataclass)TYPE_CHECKINGAny	AwaitableCallable	GeneratorListTupleUnion)ClientResponseClientSessionhdrs)StrOrURL)URL   )ExponentialRetryRetryOptionsBasei  )TracebackType)      )Protocolc                  F    e Zd ZdZedd       Zedd       Zedd       Zy)_Loggerz8_Logger defines which methods logger object should have.c                     y N selfmsgargskwargss       d/var/www/html/phonemate/phone_mate_backend/venv/lib/python3.12/site-packages/aiohttp_retry/client.pydebugz_Logger.debug'           c                     y r   r   r   s       r$   warningz_Logger.warning+   r&   r'   c                     y r   r   r   s       r$   	exceptionz_Logger.exception/   r&   r'   N)r!   strr"   r   r#   r   returnNone)__name__
__module____qualname____doc__r   r%   r)   r+   r   r'   r$   r   r   $   s?    B     r'   r   .c                  L    e Zd ZU ded<   ded<   dZded<   dZded<   dZded	<   y)
RequestParamsr,   method_RAW_URL_TYPEurlNzdict[str, Any] | Noneheaderstrace_request_ctxr#   )r/   r0   r1   __annotations__r8   r9   r#   r   r'   r$   r4   r4   <   s/    K	%)G")/3,3$(F!(r'   r4   c                  f    e Zd Z	 d	 	 	 	 	 	 	 	 	 	 	 d	dZd
dZddZddZddZ	 	 	 	 	 	 	 	 ddZy)_RequestContextc                x    t        |      dkD  sJ || _        || _        || _        || _        || _        d | _        y )Nr   )len_request_func_params_list_logger_retry_options_raise_for_status	_response)r    request_funcparams_listloggerretry_optionsraise_for_statuss         r$   __init__z_RequestContext.__init__F   sE     ;!###)'+!104r'   c                  K   || j                   j                  k(  ry|j                  j                         | j                   j                  vry|j
                  t        k\  r| j                   j                  ry|j
                  | j                   j                  v ry| j                   j                  y| j                   j                  |       d {   S 7 w)NTF)
rB   attemptsr5   uppermethodsstatus_MIN_SERVER_ERROR_STATUSretry_all_server_errorsstatusesevaluate_response_callback)r    current_attemptresponses      r$   _is_skip_retryz_RequestContext._is_skip_retryX   s     d11:::??  "$*=*=*E*EE??664;N;N;f;f??d11:::99A((CCHMMMMs   CCCCc                  K   d}	 | j                   j                  d|dz    d| j                  j                          |dz  }	 	 | j                  |dz
     } | j                  |j                  |j                  f|j                  d|i|j                  xs i d|j                  xs i  d {   }d|j                   }| j                  ||       d {   }|r/| j                  r|j                          || _        | j                   S | j                  j#                  ||	      }| j                   j                  |       t+        j,                  |       d {    _# t
        $ r | j                  d   }Y )w xY w7 7 # t$        $ rq|| j                  j                  k\  r t'        fd
| j                  j(                  D              }|s d}| j                  j#                  |d 	      }Y d d ww xY w7 w)Nr   zAttempt r   z out of rT   )r8   r9   zRetrying after response code: )attemptrU   c              3  6   K   | ]  }t        |        y wr   )
isinstance).0exces     r$   	<genexpr>z._RequestContext._do_request.<locals>.<genexpr>   s     "`A_#:a#5A_s   zRetrying after exception: )rA   r%   rB   rL   r@   
IndexErrorr?   r5   r7   r8   r9   r#   rO   rV   rC   rI   rD   get_timeout	Exceptionany
exceptionsasynciosleep)	r    rT   paramsrU   debug_message
skip_retry
retry_waitis_exc_validr^   s	           @r$   _do_requestz_RequestContext._do_requestj   s    LL/!*;)<HTEXEXEaEaDbcdq O$e3!../BCF 2D1C1CMMJJ	2 #NN)?'!339r'		2 }}*	2 	, #A@Q R#'#6#6#QQ
-- 113%-DN>>)!00<<__g<h
 LL}---
+++W  " 3!..r2F3	, R  	e"d&9&9&B&BB""`ATATA_A_"``#"<QE B!00<<__c<d
	e ,s   AHE& AF	 0F1(F	 F4F	 HF	 ,3HH H&F>F	 FF	 F	 		HA'G>9H>HHc                >    | j                         j                         S r   )
__aenter__	__await__r    s    r$   ro   z_RequestContext.__await__   s     **,,r'   c                >   K   | j                          d {   S 7 wr   )rl   rp   s    r$   rn   z_RequestContext.__aenter__   s     %%''''s   c                   K   | j                   2| j                   j                  s| j                   j                          y y y wr   )rD   closedcloser    exc_typeexc_valexc_tbs       r$   	__aexit__z_RequestContext.__aexit__   s7      >>%dnn.C.CNN  " /D%s   A AN)F)rE   RequestFuncrF   list[RequestParams]rG   _LoggerTyperH   r   rI   boolr-   r.   )rT   intrU   r   r-   r}   )r-   r   )r-   z$Generator[Any, None, ClientResponse]rv   ztype[BaseException] | Nonerw   zBaseException | Nonerx   zTracebackType | Noner-   r.   )	r/   r0   r1   rJ   rV   rl   ro   rn   ry   r   r'   r$   r<   r<   E   s     "'5!5 )5 	5
 (5 5 
5$N$.,`-(#,# &# %	#
 
#r'   r<   c                    t        | t        t        f      r| fS t        | t              rt	        |       }n t        | t              r| }nd}t        |      t        |      dk(  rd}t        |      |S )Nz*you can pass url only by str or list/tupler   z>you can pass url by str or list/tuple with attempts count size)r[   r,   YARL_URLlisttuple
ValueErrorr>   )r7   urlsr!   s      r$   _url_to_urlsr      sg    #X'v#tSz	C	:o
4yA~NoKr'   c                     e Zd Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 ddZedd       Z	 	 d	 	 	 	 	 	 	 ddZ	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 d	 	 	 	 	 	 	 	 	 ddZ	 	 d	 	 	 	 	 	 	 	 	 ddZ		 	 d	 	 	 	 	 	 	 	 	 ddZ
	 	 d	 	 	 	 	 	 	 	 	 dd	Z	 	 d	 	 	 	 	 	 	 	 	 dd
Z	 	 d	 	 	 	 	 	 	 	 	 ddZ	 	 d	 	 	 	 	 	 	 	 	 ddZddZ	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 d	 	 	 	 	 	 	 ddZddZ	 	 	 	 	 	 	 	 ddZddZy)RetryClientNc                    ||}d }nt        |i |}d}|| _        || _        |xs t        j                  d      | _        |xs
 t               | _        || _        y )NFaiohttp_retry)	r   _client_closedlogging	getLoggerrA   r   rB   rC   )	r    client_sessionrG   rH   rI   r"   r#   clientrs   s	            r$   rJ   zRetryClient.__init__   sf     %#FF"D3F3FF$*$Pg.?.?.P0=0SAQAS!1r'   c                    | j                   S r   )rB   rp   s    r$   rH   zRetryClient.retry_options   s    """r'   c                *    | j                  |||      S )NrF   rH   rI   )_make_requestsr    rF   rH   rI   s       r$   requestszRetryClient.requests   s%     ""#'- # 
 	
r'   c                0     | j                   d||||d|S N)r5   r7   rH   rI   r   )_make_request)r    r5   r7   rH   rI   r#   s         r$   requestzRetryClient.request   s4     "t!! 
'-	

 
 	
r'   c                L     | j                   dt        j                  |||d|S r   )r   r   METH_GETr    r7   rH   rI   r#   s        r$   getzRetryClient.get   8     "t!! 
=='-	

 
 	
r'   c                L     | j                   dt        j                  |||d|S r   )r   r   METH_OPTIONSr   s        r$   optionszRetryClient.options  s:     "t!! 
$$'-	

 
 	
r'   c                L     | j                   dt        j                  |||d|S r   )r   r   	METH_HEADr   s        r$   headzRetryClient.head  8     "t!! 
>>'-	

 
 	
r'   c                L     | j                   dt        j                  |||d|S r   )r   r   	METH_POSTr   s        r$   postzRetryClient.post"  r   r'   c                L     | j                   dt        j                  |||d|S r   )r   r   METH_PUTr   s        r$   putzRetryClient.put1  r   r'   c                L     | j                   dt        j                  |||d|S r   )r   r   
METH_PATCHr   s        r$   patchzRetryClient.patch@  s8     "t!! 
??'-	

 
 	
r'   c                L     | j                   dt        j                  |||d|S r   )r   r   METH_DELETEr   s        r$   deletezRetryClient.deleteO  s:     "t!! 
##'-	

 
 	
r'   c                b   K   | j                   j                          d {    d| _        y 7 w)NT)r   rt   r   rp   s    r$   rt   zRetryClient.close^  s(     ll  """ 	#s   /-/c                    t        |      }|D cg c]2  }t        |||j                  di       |j                  dd       |      4 }}| j                  |||      S c c}w )Nr8   r9   )r5   r7   r8   r9   r#   r   )r   r4   popr   )r    r5   r7   rH   rI   r#   url_listrF   s           r$   r   zRetryClient._make_requestb  s      $  	
   

9b1"(**-@$"G   	 	
 ""#'- # 
 	
	
s   7Ac                    || j                   }|| j                  }t        | j                  j                  || j
                  ||      S )N)rE   rF   rG   rH   rI   )rB   rC   r<   r   r   rA   r   s       r$   r   zRetryClient._make_requests|  sQ       //M##55--#<<'-
 	
r'   c                   K   | S wr   r   rp   s    r$   rn   zRetryClient.__aenter__  s     s   c                @   K   | j                          d {    y 7 wr   )rt   ru   s       r$   ry   zRetryClient.__aexit__  s      jjls   c                p    t        | dd       y | j                  s| j                  j                  d       y y )Nr   z#Aiohttp retry client was not closed)getattrr   rA   r)   rp   s    r$   __del__zRetryClient.__del__  s3    4D)1||LL  !FG r'   )NNNF)r   zClientSession | NonerG   z_LoggerType | NonerH   RetryOptionsBase | NonerI   r}   r"   r   r#   r   r-   r.   )r-   r   )NN)rF   r{   rH   r   rI   bool | Noner-   r<   )r5   r,   r7   r   rH   r   rI   r   r#   r   r-   r<   )
r7   	_URL_TYPErH   r   rI   r   r#   r   r-   r<   )r-   r.   )r5   r,   r7   r   rH   r   rI   r   r#   r   r-   r<   )r-   r   r   )r/   r0   r1   rJ   propertyrH   r   r   r   r   r   r   r   r   r   rt   r   r   rn   ry   r   r   r'   r$   r   r      sG    04%)15!&2,2 #2 /	2
 2 2 2 
2. # # 26(,	

(

 /

 &	


 


  26(,

 
 /	

 &
 
 

& 26(,	

 /
 &	

 
 

$ 26(,	

 /
 &	

 
 

$ 26(,	

 /
 &	

 
 

$ 26(,	

 /
 &	

 
 

$ 26(,	

 /
 &	

 
 

$ 26(,	

 /
 &	

 
 

$ 26(,	

 /
 &	

 
 

 26(,

 
 /	

 &
 
 

: 26(,	
(
 /
 &	

 

$, & %	
 
Hr'   r   )r7   r   r-   ztuple[StrOrURL, ...]).
__future__r   re   r   sysabcr   dataclassesr   typingr   r   r   r	   r
   r   r   r   aiohttpr   r   r   aiohttp.typedefsr   yarlr   r   rH   r   r   rP   typesr   version_infor   typing_extensionsr   r6   r   Loggerr|   rz   r4   r<   r   r   r   r'   r$   <module>r      s    "   
  !	 	 	 8 7 %   = #v*h " h()-m!4eM3<N6OOP	GW^^+,sIn556 ) ) )b# b#J&bH bHr'   