a
    dR1                     @   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)d dddZ*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ejeiZ+G dd de Z,G dd de$Z-G dd deZ.G dd de#Z/d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/   b/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/httpx/_transports/default.pymap_httpcore_exceptions9   s    

r1   c                   @   sB   e Zd Zeje dddZeje dddZdddd	Z	dS )
ResponseStreamhttpcore_streamc                 C   s
   || _ d S r&   _httpcore_streamselfr4   r/   r/   r0   __init__c   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__f   s    
zResponseStream.__iter__Nc                 C   s   t | jdr| j  d S )Nclose)hasattrr6   r>   r8   r/   r/   r0   r>   k   s    zResponseStream.close)
__name__
__module____qualname__typingIterablebytesr9   Iteratorr=   r>   r/   r/   r/   r0   r2   b   s   r2   c                   @   s   e Zd Zddddedddddf
eeje eee	eeje
 eje eje 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retriesr%   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 N)rI   rJ   rN   )	ssl_contextmax_connectionsmax_keepalive_connectionskeepalive_expiryrK   rL   rP   rQ   rR   )httphttpsschemehostporttarget)		proxy_url
proxy_authproxy_headersrT   rU   rV   rW   rK   rL   socks5r   z{Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`.)r_   r`   rT   rU   rV   rW   rK   rL   zDProxy protocol must be either 'http', 'https', or 'socks5', but got .)r   httpcoreConnectionPoolrU   rV   rW   _poolurlr[   Z	HTTPProxyURL
raw_schemeraw_hostr]   raw_pathraw_authheadersrawsocksioImportErrorZ
SOCKSProxy
ValueErrorr8   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rT   ro   r/   r/   r0   r9   q   sr    


zHTTPTransport.__init__r8   r%   c                 C   s   | j   | S r&   )rf   	__enter__r@   r/   r/   r0   rt      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   rf   __exit__r8   rv   rw   rx   r/   r/   r0   ry      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 NrZ   )methodrg   rm   content
extensions)status_coderm   streamr   )r*   r   r   rd   r   r~   rh   rg   ri   rj   r]   rk   rm   rn   r   r1   rf   handle_requestrD   rE   r   statusr2   r8   r|   reqrespr/   r/   r0   r      s,    *zHTTPTransport.handle_requestr$   c                 C   s   | j   d S r&   )rf   r>   r@   r/   r/   r0   r>      s    zHTTPTransport.close)NNN)rA   rB   rC   r   r   rD   Optionalr   boolr   r   r,   intr9   r   rt   TypeBaseExceptionr   ry   r   r   r   r>   r/   r/   r/   r0   r    p   sJ   I   c                   @   sB   e Zd Zeje dddZeje dddZdddd	Z	dS )
AsyncResponseStreamr3   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__Nc                    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f
eeje eee	eeje
 eje eje 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 rS   )r   rd   ZAsyncConnectionPoolrU   rV   rW   rf   rg   r[   ZAsyncHTTPProxyrh   ri   rj   r]   rk   rl   rm   rn   ro   rp   ZAsyncSOCKSProxyrq   rr   r/   r/   r0   r9      sr    


zAsyncHTTPTransport.__init__rs   c                    s   | j  I d H  | S r&   )rf   
__aenter__r@   r/   r/   r0   r   A  s    zAsyncHTTPTransport.__aenter__ru   c                    s@   t  & | j|||I d H  W d    n1 s20    Y  d S r&   )r1   rf   	__aexit__rz   r/   r/   r0   r   E  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   rd   r   r~   rh   rg   ri   rj   r]   rk   rm   rn   r   r1   rf   handle_async_requestrD   r   r   r   r   r   r/   r/   r0   r   N  s,    0z'AsyncHTTPTransport.handle_async_requestr$   c                    s   | j  I d H  d S r&   )rf   r   r@   r/   r/   r0   r   l  s    zAsyncHTTPTransport.aclose)NNN)rA   rB   rC   r   r   rD   r   r   r   r   r   r,   r   r9   r"   r   r   r   r   r   r   r   r   r   r/   r/   r/   r0   r#      sJ   I   )0__doc__
contextlibrD   typesr   rd   _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"   contextmanagerrG   r1   r(   r2   r    r   r#   r/   r/   r/   r0   <module>   s@   @y