
    6=gm9                       S SK Jr  S SKrS SKrS SKrS SKrSSKJrJr  SSK	J
r
  SSKJrJrJrJrJrJrJr  SSKJr  SSKJr  SS	KJr  S
SKJr  S
SKJr  S
SKJr  S
SKJ r   \RB                  \"\#4   r$\RJ                  \RL                  \$\$4      r'\RP                  \$\$4   r)\RT                  " S5      r+  S     SS jjr, " S S\5      r- " S S\ 5      r. " S S\ 5      r/g)    )annotationsN   )SOCKET_OPTIONAsyncNetworkBackend)
ProxyError)URLOriginRequestResponseenforce_bytesenforce_headersenforce_url)default_ssl_context)	AsyncLock)Trace   )AsyncHTTPConnection)AsyncConnectionPool)AsyncHTTP11Connection)AsyncConnectionInterfacezhttpcore.proxyc                    U c  / O
[        U 5      n Uc  / O
[        U5      n[        S U 5       5      nU  VVs/ s H  u  p4UR                  5       U;  d  M  X44PM      n nnX-   $ s  snnf )z\
Append default_headers and override_headers, de-duplicating if a key exists
in both cases.
c              3  F   #    U  H  u  pUR                  5       v   M     g 7fN)lower).0keyvalues      </usr/lib/python3/dist-packages/httpcore/_async/http_proxy.py	<genexpr> merge_headers.<locals>.<genexpr>-   s     F5Ezssyy{{5Es   !)listsetr   )default_headersoverride_headershas_overrider   r   s        r   merge_headersr&   #   s     ,3bo9NO-5r4@P;QF5EFFL *)JC99;l* 	)  
 --s   A$A$c                     ^  \ rS rSrSr              S                               SU 4S jjjrSS jrSrU =r$ )	AsyncHTTPProxy6   z:
A connection pool that sends requests via an HTTP proxy.
c                  > [         TU ]  UUUUU	U
UUUUUS9  [        USS9U l        U R                  R                  S:X  a  Ub  [        S5      eX@l        XPl        [        USS9U l	        UbS  [        US   S	S9n[        US
   S	S9nUS-   U-   nS[        R                  " U5      -   nSU4/U R                  -   U l	        gg)a  
A connection pool for making HTTP requests.

Parameters:
    proxy_url: The URL to use when connecting to the proxy server.
        For example `"http://127.0.0.1:8080/"`.
    proxy_auth: Any proxy authentication as a two-tuple of
        (username, password). May be either bytes or ascii-only str.
    proxy_headers: Any HTTP headers to use for the proxy requests.
        For example `{"Proxy-Authorization": "Basic <username>:<password>"}`.
    ssl_context: An SSL context to use for verifying connections.
        If not specified, the default `httpcore.default_ssl_context()`
        will be used.
    proxy_ssl_context: The same as `ssl_context`, but for a proxy server rather than a remote origin.
    max_connections: The maximum number of concurrent HTTP connections that
        the pool should allow. Any attempt to send a request on a pool that
        would exceed this amount will block until a connection is available.
    max_keepalive_connections: The maximum number of idle HTTP connections
        that will be maintained in the pool.
    keepalive_expiry: The duration in seconds that an idle HTTP connection
        may be maintained for before being expired from the pool.
    http1: A boolean indicating if HTTP/1.1 requests should be supported
        by the connection pool. Defaults to True.
    http2: A boolean indicating if HTTP/2 requests should be supported by
        the connection pool. Defaults to False.
    retries: The maximum number of retries when trying to establish
        a connection.
    local_address: Local address to connect from. Can also be used to
        connect using a particular address family. Using
        `local_address="0.0.0.0"` will connect using an `AF_INET` address
        (IPv4), while using `local_address="::"` will connect using an
        `AF_INET6` address (IPv6).
    uds: Path to a Unix Domain Socket to use instead of TCP sockets.
    network_backend: A backend instance to use for handling network I/O.
)ssl_contextmax_connectionsmax_keepalive_connectionskeepalive_expiryhttp1http2network_backendretrieslocal_addressudssocket_options	proxy_urlname   httpNzCThe `proxy_ssl_context` argument is not allowed for the http schemeproxy_headersr   
proxy_authr      :s   Basic s   Proxy-Authorization)super__init__r   
_proxy_urlschemeRuntimeError_ssl_context_proxy_ssl_contextr   _proxy_headersr   base64	b64encode)selfr6   r;   r:   r+   proxy_ssl_contextr,   r-   r.   r/   r0   r2   r3   r4   r1   r5   usernamepassworduserpassauthorization	__class__s                       r   r>   AsyncHTTPProxy.__init__;   s    j 	#+&?-+') 	 	
 &ikBOO""g-2C2OU  ("3-m/R!$Z]FH$Z]FH$1H%(8(8(BBM'7####$D "    c                   UR                   S:X  aJ  [        U R                  R                  U R                  UU R
                  U R                  U R                  S9$ [        U R                  R                  U R                  UU R                  U R                  U R
                  U R                  U R                  U R                  S9	$ )Nr9   )proxy_originr:   remote_originr.   r1   rH   )	rQ   r:   rR   r+   rH   r.   r/   r0   r1   )r@   AsyncForwardHTTPConnectionr?   originrD   _keepalive_expiry_network_backendrC   AsyncTunnelHTTPConnectionrB   _http1_http2rG   rT   s     r   create_connection AsyncHTTPProxy.create_connection   s    ==G#-!__33"11$!%!7!7 $ 5 5"&"9"9  )//-- ))"55!33++++ 11

 
	
rO   )rD   rC   r?   rB   )NNNN
   NNTFr   NNNN) r6   zURL | bytes | strr;   z&tuple[bytes | str, bytes | str] | Noner:   +HeadersAsMapping | HeadersAsSequence | Noner+   ssl.SSLContext | NonerH   r_   r,   
int | Noner-   r`   r.   float | Noner/   boolr0   rb   r2   intr3   
str | Noner4   rd   r1   AsyncNetworkBackend | Noner5   %typing.Iterable[SOCKET_OPTION] | NonereturnNone)rT   r	   rg   r   )	__name__
__module____qualname____firstlineno____doc__r>   r[   __static_attributes____classcell__)rM   s   @r   r(   r(   6   s     >BEI-137&(04)-$(6:@D!U$$U$ ;U$ C	U$
 +U$ 1U$ $U$ $.U$ 'U$ U$ U$ U$ "U$ U$ 4U$  >!U$" 
#U$ U$n
 
rO   r(   c                      \ rS rSr     S               SS jjrSS jrSS jrSS jrSS jrSS jr	SS	 jr
SS
 jrSS jrSS jrSrg)rS      Nc                ^    [        UUUUUS9U l        Xl        [        USS9U l        X l        g )NrT   r.   r1   r5   r+   r:   r7   )r   _connection_proxy_originr   rD   _remote_origin)rG   rQ   rR   r:   r.   r1   r5   rH   s           r   r>   #AsyncForwardHTTPConnection.__init__   s=     /-+))
 *-m/R+rO   c                  #    [        U R                  UR                  5      n[        U R                  R
                  U R                  R                  U R                  R                  [        UR                  5      S9n[        UR                  UUUR                  UR                  S9nU R                  R                  U5      I S h  vN $  N7f)Nr@   hostporttarget)methodurlheaderscontent
extensions)r&   rD   r   r   ru   r@   rz   r{   bytesr~   r
   r}   streamr   rt   handle_async_request)rG   requestr   r~   proxy_requests        r   r   /AsyncForwardHTTPConnection.handle_async_request   s      3 3W__E%%,,##((##((%	
  >>NN))
 %%::=IIIIs   CCCCc                    XR                   :H  $ r   rv   rZ   s     r   can_handle_request-AsyncForwardHTTPConnection.can_handle_request       ,,,,rO   c                T   #    U R                   R                  5       I S h  vN   g  N7fr   rt   acloserG   s    r   r   !AsyncForwardHTTPConnection.aclose        %%'''   (&(c                6    U R                   R                  5       $ r   rt   infor   s    r   r   AsyncForwardHTTPConnection.info       $$&&rO   c                6    U R                   R                  5       $ r   rt   is_availabler   s    r   r   'AsyncForwardHTTPConnection.is_available       ,,..rO   c                6    U R                   R                  5       $ r   rt   has_expiredr   s    r   r   &AsyncForwardHTTPConnection.has_expired       ++--rO   c                6    U R                   R                  5       $ r   rt   is_idler   s    r   r   "AsyncForwardHTTPConnection.is_idle       ''))rO   c                6    U R                   R                  5       $ r   rt   	is_closedr   s    r   r   $AsyncForwardHTTPConnection.is_closed       ))++rO   c                X    SU R                   R                   SU R                  5        S3$ N<z [z]>rM   ri   r   r   s    r   __repr__#AsyncForwardHTTPConnection.__repr__   (    4>>**+2diik]"==rO   )rt   rD   ru   rv   )NNNNN)rQ   r	   rR   r	   r:   r^   r.   ra   r1   re   r5   rf   rH   r_   rg   rh   r   r
   rg   r   rT   r	   rg   rb   rg   rh   rg   strrg   rb   ri   rj   rk   rl   r>   r   r   r   r   r   r   r   r   r   rn    rO   r   rS   rS      s    
 FJ)-6:@D37,, , C	,
 ', 4, >, 1, 
,*J"-('/.*,>rO   rS   c                      \ rS rSr        S                     SS jjrSS jrSS jrSS jrSS jrSS jr	SS	 jr
SS
 jrSS jrSS jrSrg)rW      Nc                    [        UUU	U
US9U l        Xl        X l        X0l        X@l        [        USS9U l        X`l        Xpl	        Xl
        [        5       U l        SU l        g )Nrs   r:   r7   F)r   rt   ru   rv   rB   rC   r   rD   rU   rX   rY   r   _connect_lock
_connected)rG   rQ   rR   r+   rH   r:   r.   r/   r0   r1   r5   s              r   r>   "AsyncTunnelHTTPConnection.__init__   sk     6I-+))6
 *+'"3-m/R!1&[rO   c                J  #    UR                   R                  S0 5      nUR                  SS 5      nU R                   IS h  vN   U R                  (       Gd  SU R                  R
                  U R                  R                  4-  n[        U R                  R                  U R                  R
                  U R                  R                  US9n[        SU4S/U R                  5      n[        SUUUR                   S9nU R                  R                  U5      I S h  vN nUR                  S	:  d  UR                  S
:  aj  UR                   R                  SS5      n	U	R!                  SSS9n
SUR                  U
4-  nU R                  R#                  5       I S h  vN   [%        U5      eUR                   S   nU R&                  c
  [)        5       OU R&                  nU R*                  (       a  SS/OS/nUR-                  U5        UU R                  R
                  R!                  S5      US.n[/        S[0        X5       IS h  vN nUR2                  " S0 UD6I S h  vN nUUl        S S S 5      IS h  vN   UR7                  S5      nUS L=(       a    UR9                  5       S:H  nU(       d"  U R*                  (       a9  U R:                  (       d(  SSKJn  U" U R                  UU R@                  S9U l        O$[C        U R                  UU R@                  S9U l        SU l        S S S 5      IS h  vN   U R                  R                  U5      I S h  vN $  GN GN? GN GN GN N! , IS h  vN  (       d  f       GN= f NS! , IS h  vN  (       d  f       Nh= f NL7f)Ntimeoutconnects   %b:%dry   s   Host)s   Accepts   */*s   CONNECT)r}   r~   r   r      i+  reason_phraserO   asciiignore)errorsz%d %snetwork_streamzhttp/1.1h2)r+   server_hostnamer   	start_tls
ssl_objectr   )AsyncHTTP2Connection)rT   r   r.   Tr   )"r   getr   r   rv   rz   r{   r   ru   r@   r&   rD   r
   rt   r   statusdecoder   r   rB   r   rY   set_alpn_protocolsr   loggerr   return_valueget_extra_infoselected_alpn_protocolrX   r0   r   rU   r   )rG   r   timeoutsr   r|   connect_urlconnect_headersconnect_requestconnect_responsereason_bytes
reason_strmsgr   r+   alpn_protocolskwargstracer   http2_negotiatedr   s                       r   r   .AsyncTunnelHTTPConnection.handle_async_request	  sC    %%)))R8,,y$/%%%???!T%8%8%=%=t?R?R?W?W$XX!--44++00++00!	 #0v&(;<d>Q>Q# #*%#+&11	# *.)9)9)N)N#* $  $**S04D4K4Kc4Q#3#>#>#B#B?TW#XL!-!4!4WX!4!NJ!%5%<%<j$IIC**11333$S/))445EF
 ((0 ()** 
 8<{{*d!3..~> $/'+':':'?'?'F'Fw'O&
 !fgFF%#)#3#3#=f#==F)/E& GF
 $22<@
d* D"99;tC ! $DKK;';#22%)-)?)?(D$ (=#22%)-)?)?(D$ #'S &%T %%::7CCCU &&$ 4& G= GFFF] &%%%T Ds   ?N#MN#CNMA>NMB(NM"N	M*M% M*+N6M(7B/N&N#1N2"N#N!N#NN"N%M*(N*N	0M31N	=NN#NNNN#c                    XR                   :H  $ r   r   rZ   s     r   r   ,AsyncTunnelHTTPConnection.can_handle_requestY  r   rO   c                T   #    U R                   R                  5       I S h  vN   g  N7fr   r   r   s    r   r    AsyncTunnelHTTPConnection.aclose\  r   r   c                6    U R                   R                  5       $ r   r   r   s    r   r   AsyncTunnelHTTPConnection.info_  r   rO   c                6    U R                   R                  5       $ r   r   r   s    r   r   &AsyncTunnelHTTPConnection.is_availableb  r   rO   c                6    U R                   R                  5       $ r   r   r   s    r   r   %AsyncTunnelHTTPConnection.has_expirede  r   rO   c                6    U R                   R                  5       $ r   r   r   s    r   r   !AsyncTunnelHTTPConnection.is_idleh  r   rO   c                6    U R                   R                  5       $ r   r   r   s    r   r   #AsyncTunnelHTTPConnection.is_closedk  r   rO   c                X    SU R                   R                   SU R                  5        S3$ r   r   r   s    r   r   "AsyncTunnelHTTPConnection.__repr__n  r   rO   )r   r   rt   rX   rY   rU   rD   ru   rC   rv   rB   )NNNNTFNN)rQ   r	   rR   r	   r+   r_   rH   r_   r:   +typing.Sequence[tuple[bytes, bytes]] | Noner.   ra   r/   rb   r0   rb   r1   re   r5   rf   rg   rh   r   r   r   r   r   r   r   rO   r   rW   rW      s    
 .237EI)-6:@D     +	 
 1  C  '      4  >  
 >ND`-('/.*,>rO   rW   )NN)r#   r   r$   r   rg   zlist[tuple[bytes, bytes]])0
__future__r   rE   loggingssltyping_backends.baser   r   _exceptionsr   _modelsr   r	   r
   r   r   r   r   _sslr   _synchronizationr   _tracer   
connectionr   connection_poolr   http11r   
interfacesr   Unionr   r   	ByteOrStrSequenceTupleHeadersAsSequenceMappingHeadersAsMapping	getLoggerr   r&   r(   rS   rW   r   rO   r   <module>r     s    "   
  ? $   ' (  + 0 ) 0LL$	OOFLLI1E$FG >>)Y"67  
		+	, DHDH.@.A. .&p
( p
f=>!9 =>@F> 8 F>rO   