o
    e3                     @   s  d Z ddlZddlZddlmZ ddlZddlmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZmZm Z m!Z! d	d
l"m#Z#m$Z$ ej%dddZ&ej%dddZ'ej(ej)e*e*e*f ej)e*e*ej(e+e,f f ej)e*e*de*f f Z-ej.dej/d fddZ0ejeejeejeejeejeejeejeejeejeejeejeejeejeejeiZ1G dd de Z2G dd de$Z3G dd deZ4G dd de#Z5dS )a  
Custom transports, with nicely configured defaults.

The following additional keyword arguments are currently supported by httpcore...

* uds: str
* local_address: str
* retries: int

Example usages...

# Disable HTTP/2 on a single specific domain.
mounts = {
    "all://": httpx.HTTPTransport(http2=True),
    "all://*example.org": httpx.HTTPTransport()
}

# Using advanced httpcore configuration, with connection retries.
transport = httpx.HTTPTransport(retries=1)
client = httpx.Client(transport=transport)

# Using advanced httpcore configuration, with unix domain sockets.
transport = httpx.HTTPTransport(uds="socket.uds")
client = httpx.Client(transport=transport)
    N)TracebackType   )DEFAULT_LIMITSLimitsProxycreate_ssl_context)ConnectErrorConnectTimeoutLocalProtocolErrorNetworkErrorPoolTimeoutProtocolError
ProxyError	ReadErrorReadTimeoutRemoteProtocolErrorTimeoutExceptionUnsupportedProtocol
WriteErrorWriteTimeout)RequestResponse)AsyncByteStream	CertTypesSyncByteStreamVerifyTypes   )AsyncBaseTransportBaseTransportTHTTPTransport)boundAAsyncHTTPTransportreturnc               
   c   s|    zd V  W d S  t y= }  z*d }t D ]\}}t| |sq|d u s(t||r*|}q|d u r0 t| }||| d } ~ ww N)	ExceptionHTTPCORE_EXC_MAPitems
isinstance
issubclassstr)excZ
mapped_excZfrom_excZto_excmessage r.   ID:\Projects\ConvertPro\env\Lib\site-packages\httpx/_transports/default.pymap_httpcore_exceptions?   s"   

r0   c                   @   >   e Zd Zdeje fddZdeje fddZd
dd	Z	dS )ResponseStreamhttpcore_streamc                 C   
   || _ d S r%   _httpcore_streamselfr3   r.   r.   r/   __init__i      
zResponseStream.__init__r$   c                 c   s@    t   | jD ]}|V  qW d    d S 1 sw   Y  d S r%   r0   r6   r8   partr.   r.   r/   __iter__l   s   
"zResponseStream.__iter__Nc                 C   s   t | jdr| j  d S d S )Nclose)hasattrr6   r?   r8   r.   r.   r/   r?   q   s   zResponseStream.closer$   N)
__name__
__module____qualname__typingIterablebytesr9   Iteratorr>   r?   r.   r.   r.   r/   r2   h       r2   c                   @      e Zd Zddddeddddddfdedeje deded	e	d
edeje
 deje deje dedejeje  ddfddZdedefddZ			d dejeje  deje deje ddfddZdedefddZd!ddZdS )"r    TNFr   verifycerthttp1http2limits	trust_envproxyudslocal_addressretriessocket_optionsr$   c                 C   s*  t |||d}|d u r tj||j|j|j||||	|
|d
| _d S |jjdv rOtj	tj
|jj|jj|jj|jjd|j|jj||j|j|j|j|||d| _d S |jjdkrzdd l}W n tyg   tdd w tjtj
|jj|jj|jj|jjd|j||j|j|j||d	| _d S td
|jjd)NrL   rM   rQ   
ssl_contextmax_connectionsmax_keepalive_connectionskeepalive_expiryrN   rO   rS   rT   rU   rV   httphttpsschemehostporttarget)	proxy_url
proxy_authproxy_headersrY   proxy_ssl_contextrZ   r[   r\   rN   rO   rV   socks5r   {Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`.re   rf   rY   rZ   r[   r\   rN   rO   DProxy protocol must be either 'http', 'https', or 'socks5', but got .)r   httpcoreConnectionPoolrZ   r[   r\   _poolurlra   Z	HTTPProxyURL
raw_schemeraw_hostrc   raw_pathraw_authheadersrawrY   socksioImportErrorZ
SOCKSProxy
ValueErrorr8   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rY   ry   r.   r.   r/   r9   w   sz   zHTTPTransport.__init__r8   c                 C   s   | j   | S r%   )rp   	__enter__rA   r.   r.   r/   r}      s   
zHTTPTransport.__enter__exc_type	exc_value	tracebackc                 C   s<   t   | j||| W d    d S 1 sw   Y  d S r%   )r0   rp   __exit__r8   r~   r   r   r.   r.   r/   r      s   "zHTTPTransport.__exit__requestc                 C   s   t |jtsJ tj|jtj|jj|jj	|jj
|jjd|jj|j|jd}t  | j|}W d    n1 s:w   Y  t |jtjsHJ t|j|jt|j|jdS Nr`   )methodrq   rw   content
extensions)status_coderw   streamr   )r)   r   r   rn   r   r   rr   rq   rs   rt   rc   ru   rw   rx   r   r0   rp   handle_requestrF   rG   r   statusr2   r8   r   reqrespr.   r.   r/   r      s.   zHTTPTransport.handle_requestc                 C   s   | j   d S r%   )rp   r?   rA   r.   r.   r/   r?      s   zHTTPTransport.closeNNNrB   )rC   rD   rE   r   r   rF   Optionalr   boolr   r   r+   intrG   SOCKET_OPTIONr9   r   r}   TypeBaseExceptionr   r   r   r   r   r?   r.   r.   r.   r/   r    v   sp    	

M
	
c                   @   r1   )AsyncResponseStreamr3   c                 C   r4   r%   r5   r7   r.   r.   r/   r9      r:   zAsyncResponseStream.__init__r$   c                 C  sJ   t   | j2 z	3 d H W }|V  q6 W d    d S 1 sw   Y  d S r%   r;   r<   r.   r.   r/   	__aiter__   s   "zAsyncResponseStream.__aiter__Nc                    s&   t | jdr| j I d H  d S d S )Naclose)r@   r6   r   rA   r.   r.   r/   r      s   zAsyncResponseStream.acloserB   )
rC   rD   rE   rF   AsyncIterablerH   r9   AsyncIteratorr   r   r.   r.   r.   r/   r      rJ   r   c                   @   rK   )"r#   TNFr   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   r$   c                 C   s&  t |||d}|d u r tj||j|j|j||||	|
|d
| _d S |jjdv rMtj	tj
|jj|jj|jj|jjd|j|jj||j|j|j|||d
| _d S |jjdkrzdd l}W n tye   tdd w tjtj
|jj|jj|jj|jjd|j||j|j|j||d	| _d S td
|jjd)NrW   rX   r]   r`   )
re   rf   rg   rY   rZ   r[   r\   rN   rO   rV   ri   r   rj   rk   rl   rm   )r   rn   ZAsyncConnectionPoolrZ   r[   r\   rp   rq   ra   ZAsyncHTTPProxyrr   rs   rt   rc   ru   rv   rw   rx   ry   rz   ZAsyncSOCKSProxyr{   r|   r.   r.   r/   r9     sx   zAsyncHTTPTransport.__init__r8   c                    s   | j  I d H  | S r%   )rp   
__aenter__rA   r.   r.   r/   r   N  s   zAsyncHTTPTransport.__aenter__r~   r   r   c                    sD   t   | j|||I d H  W d    d S 1 sw   Y  d S r%   )r0   rp   	__aexit__r   r.   r.   r/   r   R  s   "zAsyncHTTPTransport.__aexit__r   c                    s   t |jts	J tj|jtj|jj|jj	|jj
|jjd|jj|j|jd}t  | j|I d H }W d    n1 s>w   Y  t |jtjsLJ t|j|jt|j|jdS r   )r)   r   r   rn   r   r   rr   rq   rs   rt   rc   ru   rw   rx   r   r0   rp   handle_async_requestrF   r   r   r   r   r   r.   r.   r/   r   [  s0   z'AsyncHTTPTransport.handle_async_requestc                    s   | j  I d H  d S r%   )rp   r   rA   r.   r.   r/   r   y  s   zAsyncHTTPTransport.acloser   rB   )rC   rD   rE   r   r   rF   r   r   r   r   r   r+   r   rG   r   r9   r"   r   r   r   r   r   r   r   r   r   r.   r.   r.   r/   r#     sp    	

L
	
)6__doc__
contextlibrF   typesr   rn   _configr   r   r   r   _exceptionsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Z_modelsr   r   _typesr   r   r   r   baser   r   TypeVarr   r"   UnionTupler   rH   	bytearrayr   contextmanagerrI   r0   r'   r2   r    r   r#   r.   r.   r.   r/   <module>   sN    @}