o
    &=jŸ6  ã                   @  s®  U d Z ddlmZ ddlZddlZddlmZ ejr"ddl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' ddl(m)Z)m*Z* ej+ddd�Z,ej+ddd�Z-ej.ej/e0e0e0f ej/e0e0ej.e1e2f f ej/e0e0de0f f Z3ddgZ4i a5de6d< d dd„Z7ej8d!dd„ƒZ9G 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)
é    )ÚannotationsN)Ú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Ú
ProxyTypesÚSyncByteStream)ÚURLé   )ÚAsyncBaseTransportÚBaseTransportÚTÚHTTPTransport)ÚboundÚAÚAsyncHTTPTransportú,dict[type[Exception], type[httpx.HTTPError]]ÚHTTPCORE_EXC_MAPÚreturnc                  C  s`   dd l } | jt| jt| jt| jt| jt| jt| jt| jt| j	t	| j
t
| jt| jt| jt| jtiS ©Nr   )Úhttpcorer   r
   r   r   r   r   r	   r   r   r   r   r   r   r   )r*   © r+   úcC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\site-packages\httpx/_transports/default.pyÚ_load_httpcore_exceptionsJ   s    òr-   útyping.Iterator[None]c               
   c  sŽ   � t tƒdkr
tƒ azd V  W d S  tyF }  z*d }t ¡ D ]\}}t| |ƒs(q|d u s1t||ƒr3|}q|d u r9‚ t| ƒ}||ƒ| ‚d } ~ ww r)   )Úlenr'   r-   Ú	ExceptionÚitemsÚ
isinstanceÚ
issubclassÚstr)ÚexcZ
mapped_excZfrom_excZto_excÚmessager+   r+   r,   Úmap_httpcore_exceptions_   s&   €
€
€ðr7   c                   @  ó*   e Zd Zddd„Zddd	„Zdd
d„ZdS )ÚResponseStreamÚhttpcore_streamútyping.Iterable[bytes]r(   ÚNonec                 C  ó
   || _ d S ©N©Ú_httpcore_stream©Úselfr:   r+   r+   r,   Ú__init__z   ó   
zResponseStream.__init__útyping.Iterator[bytes]c                 c  s@   � t ƒ � | jD ]}|V  qW d   ƒ d S 1 sw   Y  d S r>   ©r7   r@   ©rB   Úpartr+   r+   r,   Ú__iter__}   s   €
ÿ"ÿzResponseStream.__iter__c                 C  s   t | jdƒr| j ¡  d S d S )NÚclose)Úhasattrr@   rJ   ©rB   r+   r+   r,   rJ   ‚   s   ÿzResponseStream.closeN)r:   r;   r(   r<   )r(   rE   ©r(   r<   )Ú__name__Ú
__module__Ú__qualname__rC   rI   rJ   r+   r+   r+   r,   r9   y   ó    

r9   c                   @  ó^   e Zd Zdddddedddddfd/dd„Zd0dd„Z			d1d2d&d'„Zd3d+d,„Zd4d-d.„ZdS )5r"   TNFr   Úverifyússl.SSLContext | str | boolÚcertúCertTypes | NoneÚ	trust_envÚboolÚhttp1Úhttp2Úlimitsr   ÚproxyúProxyTypes | NoneÚudsú
str | NoneÚlocal_addressÚretriesÚintÚsocket_optionsú%typing.Iterable[SOCKET_OPTION] | Noner(   r<   c                 C  sN  dd l }t|ttfƒrt|d�n|}t|||d�}|d u r2|j||j|j|j	||||	|
|d�
| _
d S |jjdv ra|j|j|jj|jj|jj|jjd�|j|jj||j|j|j|j	|||d�| _
d S |jjdv r�zdd l}W n tyy   td	ƒd ‚w |j|j|jj|jj|jj|jjd�|j||j|j|j	||d
�| _
d S td|jj›d�ƒ‚)Nr   ©Úurl©rS   rU   rW   ©
Ússl_contextÚmax_connectionsÚmax_keepalive_connectionsÚkeepalive_expiryrY   rZ   r^   r`   ra   rc   ©ÚhttpÚhttps©ÚschemeÚhostÚportÚtarget)Ú	proxy_urlÚ
proxy_authÚproxy_headersri   Úproxy_ssl_contextrj   rk   rl   rY   rZ   rc   ©Zsocks5Zsocks5hú{Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`.©ru   rv   ri   rj   rk   rl   rY   rZ   zOProxy protocol must be either 'http', 'https', 'socks5', or 'socks5h', but got Ú.)r*   r2   r4   r   r   r   ÚConnectionPoolrj   rk   rl   Ú_poolrf   rq   Z	HTTPProxyÚ
raw_schemeÚraw_hostrs   Úraw_pathÚraw_authÚheadersÚrawri   ÚsocksioÚImportErrorZ
SOCKSProxyÚ
ValueError©rB   rS   rU   rW   rY   rZ   r[   r\   r^   r`   ra   rc   r*   ri   r…   r+   r+   r,   rC   ˆ   s‚   öüðÿýÿüóÿÿzHTTPTransport.__init__rB   r!   c                 C  s   | j  ¡  | S r>   )r~   Ú	__enter__rL   r+   r+   r,   r‰   Ù   s   
zHTTPTransport.__enter__Úexc_typeútype[BaseException] | NoneÚ	exc_valueúBaseException | NoneÚ	tracebackúTracebackType | Nonec                 C  s<   t ƒ � | j |||¡ W d   ƒ d S 1 sw   Y  d S r>   )r7   r~   Ú__exit__©rB   rŠ   rŒ   rŽ   r+   r+   r,   r�   Ý   s   "ÿzHTTPTransport.__exit__Úrequestr   r   c                 C  s´   t |jtƒsJ ‚dd l}|j|j|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ƒsLJ ‚t|j|jt|jƒ|jd�S ©Nr   rp   )Úmethodrf   rƒ   ÚcontentÚ
extensions)Ústatus_coderƒ   Ústreamr–   )r2   r˜   r   r*   r   r”   r   rf   r   r€   rs   r�   rƒ   r„   r–   r7   r~   Úhandle_requestÚtypingÚIterabler   Ústatusr9   ©rB   r’   r*   ÚreqÚrespr+   r+   r,   r™   æ   s0   üöÿüzHTTPTransport.handle_requestc                 C  s   | j  ¡  d S r>   )r~   rJ   rL   r+   r+   r,   rJ     s   zHTTPTransport.close©rS   rT   rU   rV   rW   rX   rY   rX   rZ   rX   r[   r   r\   r]   r^   r_   r`   r_   ra   rb   rc   rd   r(   r<   )rB   r!   r(   r!   ©NNN©rŠ   r‹   rŒ   r�   rŽ   r�   r(   r<   ©r’   r   r(   r   rM   )	rN   rO   rP   r   rC   r‰   r�   r™   rJ   r+   r+   r+   r,   r"   ‡   ó(    ô
Qü
	c                   @  r8   )ÚAsyncResponseStreamr:   útyping.AsyncIterable[bytes]r(   r<   c                 C  r=   r>   r?   rA   r+   r+   r,   rC   
  rD   zAsyncResponseStream.__init__útyping.AsyncIterator[bytes]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>   rF   rG   r+   r+   r,   Ú	__aiter__  s   €ÿ"ÿzAsyncResponseStream.__aiter__c                 Ã  s&   �t | jdƒr| j ¡ I d H  d S d S )NÚaclose)rK   r@   r©   rL   r+   r+   r,   r©     s   €ÿzAsyncResponseStream.acloseN)r:   r¦   r(   r<   )r(   r§   rM   )rN   rO   rP   rC   r¨   r©   r+   r+   r+   r,   r¥   	  rQ   r¥   c                   @  rR   )5r%   TNFr   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r   r\   r]   r^   r_   r`   ra   rb   rc   rd   r(   r<   c                 C  sB  dd l }t|ttfƒrt|d�n|}t|||d�}|d u r2|j||j|j|j	||||	|
|d�
| _
d S |jjdv ra|j|j|jj|jj|jj|jjd�|j|jj|j||j|j|j	|||d�| _
d S |jjdv r�zdd l}W n tyy   td	ƒd ‚w |j|j|jj|jj|jj|jjd�|j||j|j|j	||d
�| _
d S tdƒ‚)Nr   re   rg   rh   rm   rp   )ru   rv   rw   rx   ri   rj   rk   rl   rY   rZ   rc   ry   rz   r{   zdProxy protocol must be either 'http', 'https', 'socks5', or 'socks5h', but got {proxy.url.scheme!r}.)r*   r2   r4   r   r   r   ZAsyncConnectionPoolrj   rk   rl   r~   rf   rq   ZAsyncHTTPProxyr   r€   rs   r�   r‚   rƒ   r„   ri   r…   r†   ZAsyncSOCKSProxyr‡   rˆ   r+   r+   r,   rC     s~   öüðÿýÿüóÿzAsyncHTTPTransport.__init__rB   r$   c                 Ã  s   �| j  ¡ I d H  | S r>   )r~   Ú
__aenter__rL   r+   r+   r,   rª   i  s   €zAsyncHTTPTransport.__aenter__rŠ   r‹   rŒ   r�   rŽ   r�   c                 Ã  sD   �t ƒ � | j |||¡I d H  W d   ƒ d S 1 sw   Y  d S r>   )r7   r~   Ú	__aexit__r‘   r+   r+   r,   r«   m  s   €"ÿzAsyncHTTPTransport.__aexit__r’   r   r   c                 Ã  s¼   �t |jtƒs	J ‚dd l}|j|j|j|jj|jj	|jj
|jjd�|jj|j|jd�}tƒ � | j |¡I d H }W d   ƒ n1 sBw   Y  t |jtjƒsPJ ‚t|j|jt|jƒ|jd�S r“   )r2   r˜   r   r*   r   r”   r   rf   r   r€   rs   r�   rƒ   r„   r–   r7   r~   Úhandle_async_requestrš   ÚAsyncIterabler   rœ   r¥   r�   r+   r+   r,   r¬   v  s2   €üöÿüz'AsyncHTTPTransport.handle_async_requestc                 Ã  s   �| j  ¡ I d H  d S r>   )r~   r©   rL   r+   r+   r,   r©   •  s   €zAsyncHTTPTransport.acloser    )rB   r$   r(   r$   r¡   r¢   r£   rM   )	rN   rO   rP   r   rC   rª   r«   r¬   r©   r+   r+   r+   r,   r%     r¤   )r(   r&   )r(   r.   )>Ú__doc__Ú
__future__r   Ú
contextlibrš   Útypesr   ÚTYPE_CHECKINGÚsslZhttpxÚ_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   Z_urlsr   Úbaser   r    ÚTypeVarr!   r$   ÚUnionÚTuplerb   ÚbytesÚ	bytearrayZSOCKET_OPTIONÚ__all__r'   Ú__annotations__r-   Úcontextmanagerr7   r9   r"   r¥   r%   r+   r+   r+   r,   Ú<module>   s@    @þÿ
 