a
    !f3                     @   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.ej/d d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 nx t y }  z`d }t D ]*\}}t| |s:q&|d u sLt||r&|}q&|d u r\ t| }||| W Y d } ~ n
d } ~ 0 0 d S N)	ExceptionHTTPCORE_EXC_MAPitems
isinstance
issubclassstr)excZ
mapped_excZfrom_excZto_excmessage r/   Z/var/www/html/python-backend/venv/lib/python3.9/site-packages/httpx/_transports/default.pymap_httpcore_exceptions?   s    

r1   c                   @   sD   e Zd Zeje ddddZeje dddZdddd	Z	dS )
ResponseStreamNhttpcore_streamr%   c                 C   s
   || _ d S r&   _httpcore_streamselfr4   r/   r/   r0   __init__i   s    zResponseStream.__init__r$   c                 c   s<   t  " | jD ]
}|V  qW d    n1 s.0    Y  d S r&   r1   r6   r8   partr/   r/   r0   __iter__l   s    
zResponseStream.__iter__c                 C   s   t | jdr| j  d S )Nclose)hasattrr6   r>   r8   r/   r/   r0   r>   q   s    zResponseStream.close)
__name__
__module____qualname__typingIterablebytesr9   Iteratorr=   r>   r/   r/   r/   r0   r2   h   s   r2   c                   @   s   e Zd Zddddeddddddfeeje eee	eeje
 eje eje eejeje  ddddZeedd	d
Zdejeje  eje eje ddddZeedddZd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
| _n|jjdv rtj	tj
|jj|jj|jj|jjd|j|jj||j|j|j|j|||d| _n|jjdkrzdd l}W n ty   tdd Y n0 tjtj
|jj|jj|jj|jjd|j||j|j|j||d	| _ntd
|jjdd S )NrI   rJ   rN   
ssl_contextmax_connectionsmax_keepalive_connectionskeepalive_expiryrK   rL   rP   rQ   rR   rS   httphttpsschemehostporttarget)	proxy_url
proxy_authproxy_headersrV   proxy_ssl_contextrW   rX   rY   rK   rL   rS   socks5r   {Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`.rb   rc   rV   rW   rX   rY   rK   rL   DProxy protocol must be either 'http', 'https', or 'socks5', but got .)r   httpcoreConnectionPoolrW   rX   rY   _poolurlr^   Z	HTTPProxyURL
raw_schemeraw_hostr`   raw_pathraw_authheadersrawrV   socksioImportErrorZ
SOCKSProxy
ValueErrorr8   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rV   rv   r/   r/   r0   r9   w   sx    


zHTTPTransport.__init__r8   r%   c                 C   s   | j   | S r&   )rm   	__enter__r@   r/   r/   r0   r{      s    
zHTTPTransport.__enter__exc_type	exc_value	tracebackr%   c                 C   s:   t    | j||| W d    n1 s,0    Y  d S r&   )r1   rm   __exit__r8   r}   r~   r   r/   r/   r0   r      s    zHTTPTransport.__exit__requestr%   c                 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 st0    Y  t |jtjsJ t|j|jt|j|jdS Nr]   )methodrn   rt   content
extensions)status_codert   streamr   )r*   r   r   rk   r   r   ro   rn   rp   rq   r`   rr   rt   ru   r   r1   rm   handle_requestrD   rE   r   statusr2   r8   r   reqrespr/   r/   r0   r      s,    *zHTTPTransport.handle_requestr$   c                 C   s   | j   d S r&   )rm   r>   r@   r/   r/   r0   r>      s    zHTTPTransport.close)NNN)rA   rB   rC   r   r   rD   Optionalr   boolr   r   r,   intrE   SOCKET_OPTIONr9   r   r{   TypeBaseExceptionr   r   r   r   r   r>   r/   r/   r/   r0   r    v   sN   M   c                   @   sD   e Zd Zeje ddddZeje dddZdddd	Z	dS )
AsyncResponseStreamNr3   c                 C   s
   || _ d S r&   r5   r7   r/   r/   r0   r9      s    zAsyncResponseStream.__init__r$   c                 C  sF   t  , | j2 z3 d H W }|V  q6 W d    n1 s80    Y  d S r&   r:   r;   r/   r/   r0   	__aiter__   s    zAsyncResponseStream.__aiter__c                    s    t | jdr| j I d H  d S )Naclose)r?   r6   r   r@   r/   r/   r0   r      s    zAsyncResponseStream.aclose)
rA   rB   rC   rD   AsyncIterablerF   r9   AsyncIteratorr   r   r/   r/   r/   r0   r      s   r   c                   @   s   e Zd Zddddeddddddfeeje eee	eeje
 eje eje eejeje  ddddZeedd	d
Zdejeje  eje eje ddddZeedddZddddZdS )r#   TNFr   rH   c                 C   s*  t |||d}|d u r>tj||j|j|j||||	|
|d
| _n|jjdv rtj	tj
|jj|jj|jj|jjd|j|jj||j|j|j|||d
| _n|jjdkrzdd l}W n ty   tdd Y n0 tjtj
|jj|jj|jj|jjd|j||j|j|j||d	| _ntd
|jjdd S )NrT   rU   rZ   r]   )
rb   rc   rd   rV   rW   rX   rY   rK   rL   rS   rf   r   rg   rh   ri   rj   )r   rk   ZAsyncConnectionPoolrW   rX   rY   rm   rn   r^   ZAsyncHTTPProxyro   rp   rq   r`   rr   rs   rt   ru   rv   rw   ZAsyncSOCKSProxyrx   ry   r/   r/   r0   r9     sv    


zAsyncHTTPTransport.__init__rz   c                    s   | j  I d H  | S r&   )rm   
__aenter__r@   r/   r/   r0   r   N  s    zAsyncHTTPTransport.__aenter__r|   c                    s@   t  & | j|||I d H  W d    n1 s20    Y  d S r&   )r1   rm   	__aexit__r   r/   r/   r0   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 sz0    Y  t |jtjsJ t|j|jt|j|jdS r   )r*   r   r   rk   r   r   ro   rn   rp   rq   r`   rr   rt   ru   r   r1   rm   handle_async_requestrD   r   r   r   r   r   r/   r/   r0   r   [  s,    0z'AsyncHTTPTransport.handle_async_requestr$   c                    s   | j  I d H  d S r&   )rm   r   r@   r/   r/   r0   r   y  s    zAsyncHTTPTransport.aclose)NNN)rA   rB   rC   r   r   rD   r   r   r   r   r   r,   r   rE   r   r9   r"   r   r   r   r   r   r   r   r   r   r/   r/   r/   r0   r#     sN   L   )6__doc__
contextlibrD   typesr   rk   _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   rF   	bytearrayr   contextmanagerrG   r1   r(   r2   r    r   r#   r/   r/   r/   r0   <module>   sL   @}