o
    Eh                     @   s   d dl Z d dlmZmZmZmZmZ d dlZddlm	Z	m
Z
 ddlmZmZ ddlmZmZ ddlmZ zd dlZd dlmZmZ W n eyM   dZY nw G d	d
 d
ejZG dd deZdS )    N)DictIteratorListOptionalTuple   )Proxy	SSLConfig)
ByteStreamIteratorStream)	CertTypesVerifyTypes)as_network_error)MaxRetryErrorSSLErrorc                   @   s   e Zd Zdddddddddededed	ed
ededefddZ			dde	de
e	e	ee e	f dee
e	e	f  dejdeeee f de
e	ee	ee
e	e	f  ejf fddZdddZdS )URLLib3TransportNT
   F)proxyverifycert	trust_envpool_connectionspool_maxsize
pool_blockr   r   r   r   r   r   r   c          	      C   s:   t d usJ dt|||dd}t j|j|||d| _d S )Nz:urllib3 must be installed in order to use URLLib3TransportFr   r   r   http2)ssl_context	num_poolsmaxsizeblock)urllib3r	   PoolManagerr   pool)	selfr   r   r   r   r   r   r   
ssl_config r%   T/var/www/html/env_mimamsha/lib/python3.10/site-packages/httpx/_transports/urllib3.py__init__   s   
zURLLib3Transport.__init__methodurlheadersstreamtimeoutreturnc                    s  |d u rg n|}|d u rt dn|}|d u ri n|}tjj|d|dd}d}d}|D ]\}	}
|	 }	|	dkr>|
dk}|	d	krIt|
d
}q.|sN|rP|nd }|\}}}}ddd|}|d u sh||kryd|d
|d
|d
f }nd|d
|d
||d
f }tt	t
tj% | jj| |tdd |D |dddd|||dd W d    n1 sw   Y  dtt f fdd} j}t j }t|  jd}d| j||fS )N    connectread)r/   r0   Fr   s   transfer-encodings   chunkeds   content-lengthasciiP   i  )s   httphttpsz	%s://%s%sz%s://%s:%d%sc                 S   s$   g | ]\}}| d | d fqS )r1   )decode).0keyvaluer%   r%   r&   
<listcomp>\   s    z,URLLib3Transport.request.<locals>.<listcomp>r"   )r(   r)   r*   bodyredirectassert_same_hostretriespreload_contentchunkedr,   pool_timeoutr-   c                  3   sL    t tj  jdddD ]} | V  qW d    d S 1 sw   Y  d S )Ni   F)decode_content)r   socketerrorr+   )chunkconnr%   r&   response_bytesk   s   "z0URLLib3Transport.request.<locals>.response_bytes)iterator
close_funcs   HTTP/1.1)r
   r    utilTimeoutgetlowerintr4   r   r   r   rA   rB   r"   urlopendictr   bytesstatuslistr*   itemsr   release_connreason)r#   r(   r)   r*   r+   r,   urllib3_timeoutr>   content_length
header_keyheader_valuer9   schemehostportpathdefault_porturl_strrF   status_coderesponse_streamr%   rD   r&   request-   sp   zURLLib3Transport.requestc                 C   s   | j   d S )N)r"   clear)r#   r%   r%   r&   closew   s   zURLLib3Transport.close)NNN)r-   N)__name__
__module____qualname__r   r   r   boolrM   r'   rP   r   r   r   httpcoreSyncByteStreamr   strfloatrb   rd   r%   r%   r%   r&   r      sP    	

Jr   c                   @   sH   e Zd Zdddddddddededed	ed
edededefddZ	dS )URLLib3ProxyTransportNTr   F)proxy_headersr   r   r   r   r   r   	proxy_urlrn   r   r   r   r   r   r   c          
      C   s>   t d usJ dt|||dd}	t j|||	j|||d| _d S )Nz?urllib3 must be installed in order to use URLLib3ProxyTransportFr   )ro   rn   r   r   r   r   )r    r	   ProxyManagerr   r"   )
r#   ro   rn   r   r   r   r   r   r   r$   r%   r%   r&   r'   |   s   
zURLLib3ProxyTransport.__init__)
re   rf   rg   rk   rO   r   r   rh   rM   r'   r%   r%   r%   r&   rm   {   s2    	
rm   )rA   typingr   r   r   r   r   ri   _configr   r	   _content_streamsr
   r   _typesr   r   _utilsr   r    urllib3.exceptionsr   r   ImportErrorSyncHTTPTransportr   rm   r%   r%   r%   r&   <module>   s    i