
    p 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j!        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j'        f         Z(edee         f         Z)e G d d                      Z* G d d          Z+ddZ, G d d          Z-dS )    )annotationsN)abstractmethod)	dataclass)TYPE_CHECKINGAny	AwaitableCallable	GeneratorListTupleUnion)ClientResponseClientSessionhdrs)StrOrURL)URL   )ExponentialRetryRetryOptionsBasei  )TracebackType)      )Protocolc                  Z    e Zd ZdZedd	            Zedd
            Zedd            ZdS )_Loggerz8_Logger defines which methods logger object should have.msgstrargsr   kwargsreturnNonec                    d S N selfr   r   r   s       P/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/aiohttp_retry/client.pydebugz_Logger.debug'           c                    d S r#   r$   r%   s       r'   warningz_Logger.warning+   r)   r*   c                    d S r#   r$   r%   s       r'   	exceptionz_Logger.exception/   r)   r*   N)r   r   r   r   r   r   r    r!   )__name__
__module____qualname____doc__r   r(   r,   r.   r$   r*   r'   r   r   $   sx        BB   ^    ^    ^  r*   r   .c                  N    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	<   dS )
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[         KKK%)G))))/33333$(F((((((r*   r4   c                  B    e Zd Z	 d d!dZd"dZd#dZd$dZd#dZd%dZdS )&_RequestContextFrequest_funcRequestFuncparams_listlist[RequestParams]logger_LoggerTyperetry_optionsr   raise_for_statusboolr    r!   c                    t          |          dk    sJ || _        || _        || _        || _        || _        d | _        d S )Nr   )len_request_func_params_list_logger_retry_options_raise_for_status	_response)r&   r=   r?   rA   rC   rD   s         r'   __init__z_RequestContext.__init__F   sO     ;!####)'+!104r*   current_attemptintresponser   c                :  K   || j         j        k    rdS |j                                        | j         j        vrdS |j        t          k    r| j         j        rdS |j        | j         j        v rdS | j         j	        dS | j         	                    |           d {V S )NTF)
rK   attemptsr5   uppermethodsstatus_MIN_SERVER_ERROR_STATUSretry_all_server_errorsstatusesevaluate_response_callback)r&   rO   rQ   s      r'   _is_skip_retryz_RequestContext._is_skip_retryX   s      d1:::4?  ""$*=*EEE4?6664;N;f65?d1:::59A4(CCHMMMMMMMMMr*   c                n  K   d}	 | j                             d|dz    d| j        j                    |dz  }	 	 | j        |dz
           }n# t
          $ r | j        d         }Y nw xY w | j        |j        |j        f|j	        d|i|j
        pi d|j        pi  d {V }d	|j         }|                     ||           d {V }|r)| j        r|                                 || _        | j        S | j                            ||
          }nq# t$          $ rd|| j        j        k    r t'          fd| j        j        D                       }|s d}| j                            |d 
          }Y d nd ww xY w| j                             |           t+          j        |           d {V  )Nr   TzAttempt r   z out of rO   )r8   r9   zRetrying after response code: )attemptrQ   c              3  8   K   | ]}t          |          V  d S r#   )
isinstance).0exces     r'   	<genexpr>z._RequestContext._do_request.<locals>.<genexpr>   s-      "`"`#:a#5#5"`"`"`"`"`"`r*   zRetrying after exception: )rJ   r(   rK   rS   rI   
IndexErrorrH   r5   r7   r8   r9   r   rV   r[   rL   rD   rM   get_timeout	Exceptionany
exceptionsasynciosleep)	r&   rO   paramsrQ   debug_message
skip_retry
retry_waitis_exc_validrc   s	           @r'   _do_requestz_RequestContext._do_requestj   s{     +	,Lc/!*;ccTEXEaccdddq O$e3!./BCFF! 3 3 3!.r2FFF3 2D1CMJ	2 #N)?'!39r'		2 	2 }*	2 	2 	, 	, 	, 	, 	, 	, !S R R#'#6#6#Q#QQQQQQQ
 *- 4 11333%-DN>)!0<<__g<hh

 	e 	e 	e"d&9&BBB""`"`"`"`ATA_"`"`"```#  BQ B B!0<<__c<dd





	e L}----
+++++++++W+	,s=   A D A&#D %A&&BD 3D 
E>AE99E>$Generator[Any, None, ClientResponse]c                N    |                                                                  S r#   )
__aenter__	__await__r&   s    r'   ru   z_RequestContext.__await__   s      **,,,r*   c                :   K   |                                   d {V S r#   )rq   rv   s    r'   rt   z_RequestContext.__aenter__   s*      %%'''''''''r*   exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | Nonec                j   K   | j         '| j         j        s| j                                          d S d S d S r#   )rM   closedcloser&   rx   rz   r|   s       r'   	__aexit__z_RequestContext.__aexit__   sB       >%dn.C%N  """"" &%%%r*   N)F)r=   r>   r?   r@   rA   rB   rC   r   rD   rE   r    r!   )rO   rP   rQ   r   r    rE   )r    r   )r    rr   rx   ry   rz   r{   r|   r}   r    r!   )	r/   r0   r1   rN   r[   rq   ru   rt   r   r$   r*   r'   r<   r<   E   s         "'5 5 5 5 5$N N N N$., ., ., .,`- - - -( ( ( (# # # # # #r*   r<   r7   	_URL_TYPEr    tuple[StrOrURL, ...]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
ValueErrorrG   )r7   urlsr   s      r'   _url_to_urlsr      s    #X'' v#t Szz	C		 :oo
4yyA~~NooKr*   c                      e Zd Z	 	 	 	 d1d2dZed3d            Z	 	 d4d5dZ	 	 d4d6dZ	 	 d4d7dZ	 	 d4d7dZ		 	 d4d7d Z
	 	 d4d7d!Z	 	 d4d7d"Z	 	 d4d7d#Z	 	 d4d7d$Zd8d%Z	 	 d4d9d&Z	 	 d4d5d'Zd:d(Zd;d/Zd8d0ZdS )<RetryClientNFclient_sessionClientSession | NonerA   _LoggerType | NonerC   RetryOptionsBase | NonerD   rE   r   r   r   r    r!   c                    ||}d }nt          |i |}d}|| _        || _        |pt          j        d          | _        |pt                      | _        || _        d S )NFaiohttp_retry)	r   _client_closedlogging	getLoggerrJ   r   rK   rL   )	r&   r   rA   rC   rD   r   r   clientr   s	            r'   rN   zRetryClient.__init__   st     %#FFF"D3F33FF$*$Pg.?.P.P0=0SAQASAS!1r*   r   c                    | j         S r#   )rK   rv   s    r'   rC   zRetryClient.retry_options   s    ""r*   r?   r@   bool | Noner<   c                2    |                      |||          S )Nr?   rC   rD   )_make_requestsr&   r?   rC   rD   s       r'   requestszRetryClient.requests   s*     ""#'- # 
 
 	
r*   r5   r   r7   r   c                &     | j         d||||d|S N)r5   r7   rC   rD   r$   )_make_request)r&   r5   r7   rC   rD   r   s         r'   requestzRetryClient.request   s;     "t! 
'-	
 

 
 
 	
r*   r   c                :     | j         dt          j        |||d|S r   )r   r   METH_GETr&   r7   rC   rD   r   s        r'   getzRetryClient.get   =     "t! 
='-	
 

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

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

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

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

 
 
 	
r*   c                V   K   | j                                          d {V  d| _        d S )NT)r   r   r   rv   s    r'   r   zRetryClient.close^  s7      l  """""""""r*   c                r    t          |          }fd|D             }|                     |||          S )Nc                    g | ]>}t          |                    d i                               dd                    ?S )r8   r9   N)r5   r7   r8   r9   r   )r4   pop)ra   r7   r   r5   s     r'   
<listcomp>z-RetryClient._make_request.<locals>.<listcomp>k  sf     	
 	
 	
  

9b11"(**-@$"G"G  	
 	
 	
r*   r   )r   r   )r&   r5   r7   rC   rD   r   url_listr?   s    `   `  r'   r   zRetryClient._make_requestb  sj      $$	
 	
 	
 	
 	
  	
 	
 	
 ""#'- # 
 
 	
r*   c                l    || j         }|| j        }t          | j        j        || j        ||          S )N)r=   r?   rA   rC   rD   )rK   rL   r<   r   r   rJ   r   s       r'   r   zRetryClient._make_requests|  sN       /M##5-#<'-
 
 
 	
r*   c                
   K   | S r#   r$   rv   s    r'   rt   zRetryClient.__aenter__  s      r*   rx   ry   rz   r{   r|   r}   c                >   K   |                                   d {V  d S r#   )r   r   s       r'   r   zRetryClient.__aexit__  s.       jjllr*   c                r    t          | dd           d S | j        s| j                            d           d S d S )Nr   z#Aiohttp retry client was not closed)getattrr   rJ   r,   rv   s    r'   __del__zRetryClient.__del__  sM    4D))1F| 	HL  !FGGGGG	H 	Hr*   )NNNF)r   r   rA   r   rC   r   rD   rE   r   r   r   r   r    r!   )r    r   )NN)r?   r@   rC   r   rD   r   r    r<   )r5   r   r7   r   rC   r   rD   r   r   r   r    r<   )
r7   r   rC   r   rD   r   r   r   r    r<   )r    r!   )r5   r   r7   r   rC   r   rD   r   r   r   r    r<   )r    r   r   )r/   r0   r1   rN   propertyrC   r   r   r   r   r   r   r   r   r   r   r   r   rt   r   r   r$   r*   r'   r   r      s        04%)15!&2 2 2 2 2. # # # X# 26(,	

 

 

 

 

  26(,
 
 
 
 
& 26(,	
 
 
 
 
$ 26(,	
 
 
 
 
$ 26(,	
 
 
 
 
$ 26(,	
 
 
 
 
$ 26(,	
 
 
 
 
$ 26(,	
 
 
 
 
$ 26(,	
 
 
 
 
    26(,
 
 
 
 
: 26(,	
 
 
 
 
$      H H H H H Hr*   r   )r7   r   r    r   ).
__future__r   rj   r   sysabcr   dataclassesr   typingr   r   r   r	   r
   r   r   r   aiohttpr   r   r   aiohttp.typedefsr   yarlr   r   rC   r   r   rW   typesr   version_infor   typing_extensionsr   r6   r   LoggerrB   r>   r4   r<   r   r   r$   r*   r'   <module>r      s   " " " " " "   



       ! ! ! ! ! !	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 8 7 7 7 7 7 7 7 7 7 % % % % % %             = = = = = = = =  $######v******    h   " h()-m!4eM3<N6OOP	GW^+,sIn556 ) ) ) ) ) ) ) )b# b# b# b# b# b# b# b#J   &bH bH bH bH bH bH bH bH bH bHr*   