o
    h3                     @   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)exc
mapped_excfrom_excto_excmessage r1   O/var/www/html/ai/venv/lib/python3.10/site-packages/httpx/_transports/default.pymap_httpcore_exceptions?   s"   

r3   c                   @   B   e Zd Zdeje ddfddZdeje fddZd
dd	Z	dS )ResponseStreamhttpcore_streamr$   Nc                 C   
   || _ d S r%   _httpcore_streamselfr6   r1   r1   r2   __init__i      
zResponseStream.__init__c                 c   s@    t   | jD ]}|V  qW d    d S 1 sw   Y  d S r%   r3   r9   r;   partr1   r1   r2   __iter__l   s   
"zResponseStream.__iter__c                 C   s   t | jdr| j  d S d S )Nclose)hasattrr9   rB   r;   r1   r1   r2   rB   q   s   zResponseStream.closer$   N)
__name__
__module____qualname__typingIterablebytesr<   IteratorrA   rB   r1   r1   r1   r2   r5   h       r5   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rO   rP   rT   
ssl_contextmax_connectionsmax_keepalive_connectionskeepalive_expiryrQ   rR   rV   rW   rX   rY   httphttpsschemehostporttarget)	proxy_url
proxy_authproxy_headersr\   proxy_ssl_contextr]   r^   r_   rQ   rR   rY   socks5r   {Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`.rh   ri   r\   r]   r^   r_   rQ   rR   DProxy protocol must be either 'http', 'https', or 'socks5', but got .)r   httpcoreConnectionPoolr]   r^   r_   _poolurlrd   	HTTPProxyURL
raw_schemeraw_hostrf   raw_pathraw_authheadersrawr\   socksioImportError
SOCKSProxy
ValueErrorr;   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   r\   r}   r1   r1   r2   r<   w   sz   zHTTPTransport.__init__r;   c                 C   s   | j   | S r%   )rs   	__enter__rD   r1   r1   r2   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%   )r3   rs   __exit__r;   r   r   r   r1   r1   r2   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 Nrc   )methodrt   r{   content
extensions)status_coder{   streamr   )r)   r   r   rq   r   r   rv   rt   rw   rx   rf   ry   r{   r|   r   r3   rs   handle_requestrI   rJ   r   statusr5   r;   r   reqrespr1   r1   r2   r      s.   zHTTPTransport.handle_requestc                 C   s   | j   d S r%   )rs   rB   rD   r1   r1   r2   rB      s   zHTTPTransport.closeNNNrE   )rF   rG   rH   r   r   rI   Optionalr   boolr   r   r+   intrJ   SOCKET_OPTIONr<   r   r   TypeBaseExceptionr   r   r   r   r   rB   r1   r1   r1   r2   r    v   sp    	

M
	
c                   @   r4   )AsyncResponseStreamr6   r$   Nc                 C   r7   r%   r8   r:   r1   r1   r2   r<      r=   zAsyncResponseStream.__init__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?   r1   r1   r2   	__aiter__   s   "zAsyncResponseStream.__aiter__c                    s&   t | jdr| j I d H  d S d S )Naclose)rC   r9   r   rD   r1   r1   r2   r      s   zAsyncResponseStream.acloserE   )
rF   rG   rH   rI   AsyncIterablerK   r<   AsyncIteratorr   r   r1   r1   r1   r2   r      rM   r   c                   @   rN   )"r#   TNFr   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   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)NrZ   r[   r`   rc   )
rh   ri   rj   r\   r]   r^   r_   rQ   rR   rY   rl   r   rm   rn   ro   rp   )r   rq   AsyncConnectionPoolr]   r^   r_   rs   rt   rd   AsyncHTTPProxyrv   rw   rx   rf   ry   rz   r{   r|   r}   r~   AsyncSOCKSProxyr   r   r1   r1   r2   r<     sx   zAsyncHTTPTransport.__init__r;   c                    s   | j  I d H  | S r%   )rs   
__aenter__rD   r1   r1   r2   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%   )r3   rs   	__aexit__r   r1   r1   r2   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   rq   r   r   rv   rt   rw   rx   rf   ry   r{   r|   r   r3   rs   handle_async_requestrI   r   r   r   r   r   r1   r1   r2   r   [  s0   z'AsyncHTTPTransport.handle_async_requestc                    s   | j  I d H  d S r%   )rs   r   rD   r1   r1   r2   r   y  s   zAsyncHTTPTransport.acloser   rE   )rF   rG   rH   r   r   rI   r   r   r   r   r   r+   r   rJ   r   r<   r"   r   r   r   r   r   r   r   r   r   r1   r1   r1   r2   r#     sp    	

L
	
)6__doc__
contextlibrI   typesr   rq   _configr   r   r   r   _exceptionsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   _modelsr   r   _typesr   r   r   r   baser   r   TypeVarr   r"   UnionTupler   rK   	bytearrayr   contextmanagerrL   r3   r'   r5   r    r   r#   r1   r1   r1   r2   <module>   sN    @}