
    E0j3                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
 d dlmZ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mZ d dlmZ d dlmZ d d	lmZ d d
lmZ dZ dZ!dZ" ej#        d          Z$e$%                    ej&                    ej'                    Z(e$)                    e(            G d de          Z* G d dej+                  Z, G d d          Z-dS )    N)Enum)AnyDictOptional)	urlencodeurlparse)SessionPreparedRequestadaptersstatus_codes)RequiredArgumentException
RetryError)TeaModel)
TeaRequest)TeaResponse)
BaseStreami  i'  
   zalibabacloud-teac                       e Zd ZdZdZdZdZdS )
TLSVersionTLSv1TLSv1.1TLSv1.2TLSv1.3N)__name__
__module____qualname__r   TLSv1_1TLSv1_2TLSv1_3     P/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/Tea/core.pyr   r      s"        EGGGGGr!   r   c                   .     e Zd ZdZd fd	Z fdZ xZS )_TLSAdapterz1A HTTPAdapter that uses an arbitrary TLS version.Nc                 H    || _          t                      j        di | d S )Nr    )ssl_contextsuper__init__)selfr&   kwargs	__class__s      r"   r(   z_TLSAdapter.__init__(   s.    &""6"""""r!   c                 N    | j         |d<    t                      j        |i | dS )z4Override the init_poolmanager method to set the SSL.r&   N)r&   r'   init_poolmanager)r)   argsr*   r+   s      r"   r-   z_TLSAdapter.init_poolmanager,   s2     $ 0}  $1&11111r!   N)r   r   r   __doc__r(   r-   __classcell__)r+   s   @r"   r$   r$   %   s\        ;;# # # # # #2 2 2 2 2 2 2 2 2r!   r$   c            
          e Zd Zi Z ej        eedz            Z ej        eedz            Ze	d             Z
e	ddefd            Ze	d ded	eded
efd            Ze	d             Ze	d             Ze	d             Ze		 ddedefd            Ze		 ddedefd            Ze	defd            Ze	ddefd            Ze	defd            Ze	d             Ze	d             Ze	defd            Ze	d             Ze	defd            Ze	de e!         de"ee#f         fd            Z$e	de!de"ee#f         de!fd            Z%dS )!TeaCore   )pool_connectionspool_maxsizec                     | }|s|dk    rt           j        j        |_        nV|dk    rt           j        j        |_        n9|dk    rt           j        j        |_        n|dk    rt           j        j        |_        |S )Nr   r   r   r   )sslr   r   minimum_versionr   r   r   )sls_contexttls_min_versioncontexts      r"   _set_tls_minimum_versionz TeaCore._set_tls_minimum_version7   s{    &'))*-.*>'' I--*-.*@'' I--*-.*@'' I--*-.*@'r!   Nr;   c                 $   t          j                    }t          j                    }|rH|                                 dk    r0t
                              ||          }|                    |           t          |t          t          dz            }|S )NHTTPSr4   )r&   r5   r6   )
certifiwherer8   create_default_contextupperr3   r=   load_verify_locationsr$   DEFAULT_POOL_SIZE)prefixr;   ca_certr<   adapters        r"   get_adapterzTeaCore.get_adapterE   s    -//,.. 	3v||~~0066wPPG))'222'DU+<q+@B B Br!   Tsession_keyprotocolverifyc                    | t           j        vrt                      }t                               ||          }|                                dk    r:|r|                    d|           n7|                    dt           j                   n|                    d|           |t           j        | <   t           j        |          S )Nr?   https://http://)r3   	_sessionsr	   rI   rC   mounthttps_adapter)rJ   rK   r;   rL   sessionrH   s         r"   _get_sessionzTeaCore._get_sessionP   s    g///iiG))(ODDG~~7** EMM*g6666MM*g.CDDDDi111-4Gk* --r!   c                 d    d}| j                                         D ]\  }}|d| d| d| z  }|S )N 
 z : )headersitems)requestsymbolbasekeyvalues        r"   _prepare_http_debugzTeaCore._prepare_http_debug_   sR    !///11 	2 	2JC111#11%111DDr!   c                    t          | j                  }d| j                                         d|j        |j        z    d}t                              |t          	                    | d          z              d|j
         dt          j                            |j
                  d                                          }t                              |t          	                    |d          z              d S )Nz
> rX   z	 HTTP/1.1>z
< HTTP/1.1 r   <)r   urlmethodrC   pathqueryloggerdebugr3   r`   status_coder   _codesget)r[   responserd   request_baseresponse_bases        r"   _do_http_debugzTeaCore._do_http_debugf   s     w{##Vgn2244VVsx#)7KVVV\G$?$?$M$MMNNNW(< W W(/33H4HII!LRRTTW W]W%@%@3%O%OOPPPPPr!   c                 :   | j                             d          }|st          d          |                    d          }| j                                         d}| j        }|                    d          rd}| j        dk    rd}n
d| j         }||z   |z   |z   }| j	        rcd	|v r|
                    d
          s|d
z  }n|d	z  }i }| j	        D ]#}| j	        |         }|t          |          ||<   $|t          |          z  }|                    d          S )Nhostendpoint/://)rO   rN   rV   P   :?&z?&)rY   rl   r   rstriprK   lowerpathname
startswithportrg   endswithstrr   )	r[   rr   rK   r|   r~   rd   encode_queryr^   r_   s	            r"   compose_urlzTeaCore.compose_urlr   sJ   ""6** 	$+J777;;s##D&,,..333#??233 	H<2DD%w|%%Do$x/= 	+czz||C(( 3JCs
L} 3 3c*$(+E

L%9\***Czz$r!   r[   returnc           
      2  K   |pi }t                               |           }|                    dd           }|                    d          }t          |t                    r|j        }|                    d          }|                    d          p|pt          }|                    d          p|pt          }t          |          dz  t          |          dz  }}d }| j	        
                                dk    rV|                    d	          }|s>t          j                            d
          pt          j                            d          }nr| j	        
                                dk    rU|                    d          }|s>t          j                            d          pt          j                            d          }d }	t          j                    }
|
r| j	        
                                dk    rit          j        t          j        j                  }t                               ||          }|                    |
           t+          j        |          }	nd}t+          j        ||          }t+          j        |	          4 d {V 	 }d}t          | j        t4                    r| j        D ]}||z  }n<t          | j        t6                    r| j                            d          }n| j        }	 |                    | j        ||| j        |||          4 d {V 	 }tA                      }|!                                 d {V |_        d |j        "                                D             |_        |j#        |_$        |j%        |_&        ||_'        d d d           d {V  n# 1 d {V swxY w Y   n.# tP          $ r!}tS          t7          |                    d }~ww xY wd d d           d {V  n# 1 d {V swxY w Y   |S )N	ignoreSSLFtlsMinVersiontimeoutconnectTimeoutreadTimeout  HTTP	httpProxy
HTTP_PROXY
http_proxyr?   
httpsProxyHTTPS_PROXYhttps_proxy)r8   )	sock_readsock_connect)	connectorr!   utf-8)datarY   r8   proxyr   c                 >    i | ]\  }}|                                 |S r    r{   .0kvs      r"   
<dictcomp>z+TeaCore.async_do_action.<locals>.<dictcomp>   s&    'Z'Z'ZA		1'Z'Z'Zr!   )*r3   r   rl   
isinstancer   r_   DEFAULT_CONNECT_TIMEOUTDEFAULT_READ_TIMEOUTintrK   rC   osenvironr@   rA   r8   rB   PurposeSERVER_AUTHr=   rD   aiohttpTCPConnectorClientTimeoutClientSessionbodyr   r   encoder[   re   rY   r   readrZ   statusrj   reasonstatus_messagerm   IOErrorr   )r[   runtime_optionrd   rL   r;   r   connect_timeoutread_timeoutr   r   rG   r&   sr   contentrm   tea_respes                     r"   async_do_actionzTeaCore.async_do_action   s     
 (-2!!'**#''U;;;(,,_==ot,, 	4-3O $$Y//(,,-=>>d'dMd%))-88[G[G[),_)=)=)Dc,FWFWZ^F^!!##v--"&&{33E U
|44T
|8T8T##%%00"&&|44E W
}55V9V9V	-// 	w'--//7::4S[5LMMK!::;XXK--g666,  II F'"(
 
 
 (#
 
 
 	) 	) 	) 	) 	) 	) 	) 	)D',
33 $&| $ $GGODD$GL#.. $|**733|)99W^S*.-4_)/+0-4 % 6 6 1 1 1 1 1 1 1 1
 :B*}}H*2--//$9$9$9$9$9$9HM'Z'ZAQAWAWAYAY'Z'Z'ZH$+3?H(.6oH+(0H%1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1  ) ) ) Q((()1	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)4 s\   A)P ,O-A5N4"O4
N>	>ON>	OP
O1O,,O11P
PPc                    t                               |           }|pi }|                    dd           }|                    d          }t          |t                    r|j        }|r.|                    dd          |                    dd          nd}|                    dd           }|                    d          }|                    d          p|pt          }|                    d	          p|pt          }t          |          d
z  t          |          d
z  f}t          | j	        t                    r| j	                            d          | _	        t                      }	|	                    | j                                        || j	        | j                   i }
|                    d          }|                    d          }|                    d          }|s>t"          j                            d          pt"          j                            d          }|s>t"          j                            d          pt"          j                            d          }|r||
d<   |r||
d<   |r||
d<   | j                            d          }|                    d          }| j                                         d| d| j         }t                               || j        ||          }	 |                    |	|
|||          }n.# t2          $ r!}t5          t          |                    d }~ww xY w|                    d          pt#          j        d          }|r3|                                dk    rt                               |	|           t;                      }|j        |_        |j         |_         d  |j        !                                D             |_        |j"        |_	        ||_#        |S )!Nr   Fr   caTcertr   r   r   r   r   )re   rd   r   rY   r   r   noProxyr   r   r   r   httphttpsno_proxyrr   rt   ru   rw   )rJ   rK   r;   rL   )proxiesr   rL   r   ri   DEBUGsdkc                 >    i | ]\  }}|                                 |S r    r   r   s      r"   r   z%TeaCore.do_action.<locals>.<dictcomp>*  s&    JJJTQAGGIIqJJJr!   )$r3   r   rl   r   r   r_   r   r   r   r   r   r   r
   preparere   rC   rY   r   r   rz   rK   r{   r~   rT   sendr   r   getenvrp   r   r   r   rj   rZ   r   rm   )r[   r   rd   rL   r;   r   r   r   r   pr   r   r   r   rr   rJ   rS   respr   ri   rm   s                        r"   	do_actionzTeaCore.do_action   s   
 !!'**'-2#''U;;;(,,_==ot,, 	4-3O 	l7E7I7I$PT7U7U7a^''d333gkF!!&$// $$Y//(,,-=>>d'dMd%))-88[G[G[''$.L0A0AD0HIglC(( 	8"<..w77GL			>''))O	 	 	
 	
 	
 #''44
$((66!%%i00 	V55U9U9UJ 	Y*..77X2:>>-;X;XK 	)(GFO 	+*GG 	+"*GJ""6**{{3 )//11KKdKKW\KK&&;IY7Fv ' W W		%<<    DD  	% 	% 	%SVV$$$	% ""7++Ary/A/A 	,U[[]]e++""1d+++=="&+#/JJT\5G5G5I5IJJJ s   2L 
L8L33L8c                 6    | j                             d          S )Nr   )r   decode)r   s    r"   get_response_bodyzTeaCore.get_response_body/  s    |""7+++r!   c                     |dk    rdS | 2|                      d          r|                     d          dur|dk    rdS |                     d          dn!t          |                     d                    }||k    S )Nr   TmaxAttempts	retryable   F)__contains__rl   r   )dicretry_timesnowretrys       r"   allow_retryzTeaCore.allow_retry3  s    !4;c..}==;$$D00[A5E5E5//7AAS&&>( >(E##r!   c                 H   d}| .|                      d          r|                      d          dk    r|S |                      d|          }t          |t                    s+t          |t                    r|                                s|S t          |          }|dk     r|S |S )Nr   policynoperiod)rl   r   r   r   isdigit)r   r   default_back_off_timeback_off_times       r"   get_backoff_timezTeaCore.get_backoff_time?  s     !;cggh//;37783D3D3L3L((*?@@--- 	)s33	)8E8M8M8O8O	)((M**1r!   c                 >   K   t          j        |            d {V  d S r/   )asynciosleepts    r"   sleep_asynczTeaCore.sleep_asyncP  s.      mAr!   c                 .    t          j        |            d S r/   )timer   r   s    r"   r   zTeaCore.sleepT  s    
1r!   c                 ,    t          | t                    S r/   )r   r   )exs    r"   is_retryablezTeaCore.is_retryableX  s    "j)))r!   c                     | S r/   r    )r   s    r"   bytes_readablezTeaCore.bytes_readable\  s    r!   c                      i }| D ]i}t          |t                    r|                    |           -t          |t                    r'|                    |                                           j|S r/   )r   dictupdater   to_map)dic_list
dic_resultitems      r"   mergezTeaCore.merge`  st    
 	1 	1D$%% 1!!$''''D(++ 1!!$++--000r!   modelc                 p    t          | t                    r|                                 S t                      S r/   )r   r   r   r   )r   s    r"   r   zTeaCore.to_mapj  s+    eX&& 	<<>>!66Mr!   r   c                     t          | t                    r/	 |                     |          S # t          $ r || _        | cY S w xY w| S r/   )r   r   from_map	Exception_map)r   r   s     r"   r   zTeaCore.from_mapq  s_    
 eX&& 	~~c***    
 Ls   , AAr/   )NT)&r   r   r   rP   r   HTTPAdapterrE   http_adapterrR   staticmethodr=   r   rI   boolrT   r`   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r3   r3   2   sQ       I'8'9JYjmnYnoooL(H(:KZknoZopppM  \  S    \ . .# . .s .[_ . . . \.   \ 	Q 	Q \	Q       \  D   F FF 
F F F \FP   N NN 
N N N \N` ,3 , , , \, 	$ 	$4 	$ 	$ 	$ \	$ c    \    \   \ *D * * * \*   \ D    \ hx( T#s(^    \ c3h 
   \  r!   r3   ).r   loggingr   r8   r   enumr   typingr   r   r   urllib.parser   r   r   r@   requestsr	   r
   r   r   Tea.exceptionsr   r   	Tea.modelr   Tea.requestr   Tea.responser   
Tea.streamr   r   r   rE   	getLoggerrh   setLevelr   StreamHandlerch
addHandlerr   r   r$   r3   r    r!   r"   <module>r     s      				 



        & & & & & & & & & & , , , , , , , ,   E E E E E E E E E E E E @ @ @ @ @ @ @ @       " " " " " " $ $ $ $ $ $ ! ! ! ! ! !   		-	.	.    W   "          
2 
2 
2 
2 
2(& 
2 
2 
2K K K K K K K K K Kr!   