
    i                          d dl Z d dlZd dlZd dlmZmZmZmZmZ d dl	m
Z
mZ d dlmZmZ d dlmZmZ ddlmZ  G d d	e      Zy)
    N)AsyncBaseTransportRequestResponseAsyncByteStreamLimits)DEFAULT_LIMITScreate_ssl_context)AsyncResponseStreammap_httpcore_exceptions)	ProxyTypeparse_proxy_url   )
AsyncProxyc                       e Zd Zdddddddeddedededej                  de	d	e
fd
ZdedefdZed        ZddZd ZddZy)AsyncProxyTransportNT)usernamepasswordrdns	proxy_sslverifycert	trust_envlimits
proxy_type
proxy_host
proxy_portr   r   r   c                    t        ||	|
      }t        d|||||||||j                  |j                  |j                  d|| _        y )N)r   r   r   )r   r   r   r   r   r   r   ssl_contextmax_connectionsmax_keepalive_connectionskeepalive_expiry )r	   r   r   r    r!   _pool)selfr   r   r   r   r   r   r   r   r   r   r   kwargsr   s                 O/root/searxng-venv/lib/python3.12/site-packages/httpx_socks/_async_transport.py__init__zAsyncProxyTransport.__init__   sg      )
   
!!!#"22&,&F&F#44
 

    requestreturnc           	        K   t        |j                  t              sJ t        j                  |j
                  t        j                  |j                  j                  |j                  j                  |j                  j                  |j                  j                        |j                  j                  |j                  |j                        }t               5  | j                   j#                  |       d {   }d d d        t        j                  t$        j&                        sJ t)        |j*                  |j                  t-        |j                        |j                        S 7 r# 1 sw Y   qxY ww)N)schemehostporttarget)methodurlheaderscontent
extensions)status_coder2   streamr4   )
isinstancer6   r   httpcorer   r0   URLr1   
raw_schemeraw_hostr.   raw_pathr2   rawr4   r   r#   handle_async_requesttypingAsyncIterabler   statusr
   )r$   r)   reqresps       r&   r>   z(AsyncProxyTransport.handle_async_request6   s    '../:::>>{{--[[))[[%%{{++	 OO''NN))
 %& 	>88==D	> $++v';';<<<LL&t{{3	
 	
	 >	> 	>s1   CE<E0;E.<E0 A.E<.E00E95E<c           	      @    t        |      \  }}}}} | d|||||d|S )N)r   r   r   r   r   r"   )r   )clsr1   r%   r   r-   r.   r   r   s           r&   from_urlzAsyncProxyTransport.from_urlR   sB    5DS5I2
D$( 
!
 
 	
r(   c                 T   K   | j                   j                          d {    y 7 wN)r#   acloser$   s    r&   rI   zAsyncProxyTransport.aclose^   s     jj!!!s   (&(c                 V   K   | j                   j                          d {    | S 7 wrH   )r#   
__aenter__rJ   s    r&   rL   zAsyncProxyTransport.__aenter__a   s&     jj##%%% 	&s   )')c                    K   t               5  | j                  j                  |||       d {    d d d        y 7 # 1 sw Y   y xY wwrH   )r   r#   	__aexit__)r$   exc_type	exc_value	tracebacks       r&   rN   zAsyncProxyTransport.__aexit__e   sJ     $& 	G**&&xIFFF	G 	GF	G 	Gs%   A
!><>	A
>AA
)r*   N)NNN)__name__
__module____qualname__r   r   strintssl
SSLContextboolr   r'   r   r   r>   classmethodrF   rI   rL   rN   r"   r(   r&   r   r      s     $('#
 #
 	#

 #
 >>#
 #
 #
J
' 
h 
8 	
 	
"Gr(   r   )rW   r?   r8   httpxr   r   r   r   r   httpx._configr   r	   httpx._transports.defaultr
   r   python_socksr   r   _async_proxyr   r   r"   r(   r&   <module>r`      s3    
   P P = R 3 $WG, WGr(   