%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/alt/python37/lib64/python3.7/site-packages/aiohttp/__pycache__/
Upload File :
Create Path :
Current File : //opt/alt/python37/lib64/python3.7/site-packages/aiohttp/__pycache__/connector.cpython-37.pyc

B

�Z�_ا�@sNddlZddlZddlZddlZddlZddlZddlmZmZddl	m
Z
ddlmZddl
mZmZddlmZddlmZddlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"ddl#Z#d	d
l$m%Z%m&Z&d	dl'm(Z(d	dl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2d	d
l3m4Z4d	dl5m6Z6m7Z7m8Z8d	dl&m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>d	dl?m@Z@d	dlAmBZBd	dlCmDZDyddlEZEeEjFZFWneGk
�r�dZEeHZFYnXdZIe�r�d	dlJmKZKd	dl5mLZLd	dlMmNZNGdd�d�ZOGdd�d�ZPGdd�d�ZQGdd�d�ZRGdd �d �ZSGd!d"�d"eR�ZTGd#d$�d$eR�ZUGd%d&�d&eR�ZVdS)'�N)�defaultdict�deque)�suppress)�SimpleCookie)�cycle�islice)�	monotonic)�
TracebackType)�
TYPE_CHECKING�Any�	Awaitable�Callable�DefaultDict�Dict�Iterator�List�Optional�Set�Tuple�Type�Union�cast�)�hdrs�helpers)�AbstractResolver)	�ClientConnectionError�ClientConnectorCertificateError�ClientConnectorError�ClientConnectorSSLError�ClientHttpProxyError�ClientProxyConnectionError�ServerFingerprintMismatch�cert_errors�
ssl_errors)�ResponseHandler)�
ClientRequest�Fingerprint�_merge_ssl_params)�PY_36�CeilTimeout�get_running_loop�
is_ip_address�noop�sentinel)�	RESPONSES)�EventResultOrError)�DefaultResolver)�
BaseConnector�TCPConnector�
UnixConnector�NamedPipeConnector)�
ClientTimeout)�
ConnectionKey)�Tracec@s@eZdZdZeedd�dd�Zed�dd�Zdd�d	d
�ZdS)�_DeprecationWaiter)�
_awaitable�_awaitedN)�	awaitable�returncCs||_d|_dS)NF)r:r;)�selfr<�r?�D/opt/alt/python37/lib64/python3.7/site-packages/aiohttp/connector.py�__init__Isz_DeprecationWaiter.__init__)r=cCsd|_|j��S)NT)r;r:�	__await__)r>r?r?r@rBMsz_DeprecationWaiter.__await__cCs|jst�dt�dS)NzDConnector.close() is a coroutine, please use await connector.close())r;�warnings�warn�DeprecationWarning)r>r?r?r@�__del__Qsz_DeprecationWaiter.__del__)	�__name__�
__module__�__qualname__�	__slots__rrrArBrFr?r?r?r@r9Fsr9c@s�eZdZdZdZddeejdd�dd�Ze	d�dd	�Z
efedd
�dd�Z
eejd�d
d��Zeeejd�dd��Zeeed�dd��Zegdfdd�dd�Zdd�dd�Zdd�dd�Zdd�dd�Zeed�dd��ZdS)�
ConnectionNr2r7)�	connector�key�protocol�loopr=cCs<||_||_||_||_g|_|��r8t�t�	d��|_
dS)Nr)�_key�
_connector�_loop�	_protocol�
_callbacks�	get_debug�	traceback�
extract_stack�sys�	_getframe�_source_traceback)r>rLrMrNrOr?r?r@rA_szConnection.__init__)r=cCsd|j�d�S)NzConnection<�>)rP)r>r?r?r@�__repr__oszConnection.__repr__)�	_warningsr=cCs�|jdk	r�trd|i}ni}|jd|��tf|�|j��r@dS|jj|j|jdd�|dd�}|j	dk	rt|j	|d<|j�
|�dS)N�sourcezUnclosed connection T)�should_closezUnclosed connection)Zclient_connection�message�source_traceback)rSr)rD�ResourceWarningrR�	is_closedrQ�_releaserPrZ�call_exception_handler)r>r]�kwargs�contextr?r?r@rFrs





zConnection.__del__cCstjdtdd�|jS)Nz%connector.loop property is deprecated�)�
stacklevel)rCrDrErR)r>r?r?r@rO�szConnection.loopcCs|jdkrdS|jjS)N)rS�	transport)r>r?r?r@rj�s
zConnection.transportcCs|jS)N)rS)r>r?r?r@rN�szConnection.protocol)�callbackr=cCs|dk	r|j�|�dS)N)rT�append)r>rkr?r?r@�add_callback�szConnection.add_callbackc
CsB|jdd�g}|_x&|D]}tt��|�WdQRXqWdS)N)rTr�	Exception)r>Z	callbacks�cbr?r?r@�_notify_release�s

zConnection._notify_releasecCs2|��|jdk	r.|jj|j|jdd�d|_dS)NT)r_)rprSrQrdrP)r>r?r?r@�close�s
zConnection.closecCs6|��|jdk	r2|jj|j|j|jjd�d|_dS)N)r_)rprSrQrdrPr_)r>r?r?r@�release�s

zConnection.releasecCs|jdkp|j��S)N)rS�is_connected)r>r?r?r@�closed�szConnection.closed)rGrHrIrZ�
_transportr%�asyncio�AbstractEventLooprA�strr\rCrrF�propertyrOr�	TransportrjrNr
rmrprqrr�boolrtr?r?r?r@rKZs*
	rKc@seZdZdZdd�dd�ZdS)�_TransportPlaceholderz0 placeholder for BaseConnector.connect function N)r=cCsdS)Nr?)r>r?r?r@rq�sz_TransportPlaceholder.close)rGrHrI�__doc__rqr?r?r?r@r|�sr|c	@s�eZdZdZdZdZdZedddddd�ee	de
feeeee
ejdd	�d
d�Zefedd�d
d�Zdd�dd�Zedd�dd�Zdd�dd�ZdDe
eee
ee
edd�dd�Zeed�dd��Zeed�dd��Zeed�dd��Zdd�d d!�Zd"e dd#�d$d%�Z!dd�d&d'�Z"e#dd�d(d)�Z$dd�d*d+�Z%eed�d,d-��Z&d"ed.�d/d0�Z'd1e(d2d3e)d4�d5d6�Z*d"e
e d.�d7d8�Z+dd�d9d:�Z,d"e dd;�d<d=�Z-dd>�d"e edd?�d@dA�Z.d1e(d2d3e d4�dBdC�Z/dS)Er2a�Base connector class.

    keepalive_timeout - (optional) Keep-alive timeout.
    force_close - Set to True to force close and do reconnect
        after each request (and between redirects).
    limit - The total number of simultaneous connections.
    limit_per_host - Number of simultaneous connections to one host.
    enable_cleanup_closed - Enables clean-up closed ssl transports.
                            Disabled by default.
    loop - Optional event loop.
    TNg@F�dr)�keepalive_timeout�force_close�limit�limit_per_host�enable_cleanup_closedrO)rr�r�r�r�rOr=cCs�|r|dk	r*|tk	r*td��n|tkr*d}t|�}d|_|��rRt�t�d��|_	i|_
||_||_t
�|_tt
�|_tt|�|_||_tt�|_||_tjt|d�|_t�|_d|_d|_||_ g|_!|�"�dS)Nz6keepalive_timeout cannot be set if force_close is Trueg.@Fr)rO)#r.�
ValueErrorr+�_closedrUrVrWrXrYrZ�_conns�_limit�_limit_per_host�set�	_acquiredr�_acquired_per_hostr�float�_keepalive_timeout�_force_closer�_waitersrR�	functools�partialr%�_factoryrZcookies�_cleanup_handle�_cleanup_closed_handle�_cleanup_closed_disabled�_cleanup_closed_transports�_cleanup_closed)r>rr�r�r�r�rOr?r?r@rA�s6
zBaseConnector.__init__)r]r=cCs�|jr
dS|jsdSdd�|j��D�}|��tr>d|i}ni}|jd|��tf|�||dd�}|jdk	rx|j|d<|j�	|�dS)NcSsg|]}t|��qSr?)�repr)�.0�cr?r?r@�
<listcomp>sz)BaseConnector.__del__.<locals>.<listcomp>r^zUnclosed connector zUnclosed connector)rL�connectionsr`ra)
r�r��values�_closer)rDrbrZrRre)r>r]�connsrfrgr?r?r@rFs 


zBaseConnector.__del__)r=cCst�dt�|S)NzH"witn Connector():" is deprecated, use "async with Connector():" instead)rCrDrE)r>r?r?r@�	__enter__szBaseConnector.__enter__)�excr=cGs|��dS)N)rq)r>r�r?r?r@�__exit__%szBaseConnector.__exit__c�s|S)Nr?)r>r?r?r@�
__aenter__(szBaseConnector.__aenter__)�exc_type�	exc_value�
exc_tracebackr=c�s|��IdHdS)N)rq)r>r�r�r�r?r?r@�	__aexit__+szBaseConnector.__aexit__cCs|jS)z1Ultimately close connection on releasing if True.)r�)r>r?r?r@r�3szBaseConnector.force_closecCs|jS)z�The total number for simultaneous connections.

        If limit is 0 the connector has no limit.
        The default limit size is 100.
        )r�)r>r?r?r@r�8szBaseConnector.limitcCs|jS)z�The limit_per_host for simultaneous connections
        to the same endpoint.

        Endpoints are the same if they are have equal
        (host, port, is_ssl) triple.

        )r�)r>r?r?r@r�As	zBaseConnector.limit_per_hostcCs
|jr|j��d|_|j��}|j}|jr�i}||}x�|j��D]�\}}g}x�|D]z\}}	|��r�|	|dkr�|j}
|�	�|j
r�|js�|j�
|
�q�|�
||	f�qV|j}
|�	�|j
rV|jsV|j�
|
�qVW|rD|||<qDW||_|j�rt�|d||j�|_dS)zCleanup unused transports.Nr�_cleanup)r��cancelrR�timer�r��itemsrsrjrq�is_sslr�r�rlr�weakref_handle)r>Znow�timeoutr�ZdeadlinerMr�Zalive�protoZuse_timerjr?r?r@r�Ls8

zBaseConnector._cleanupr7)rM�valr=cCs4|j}||krdS||}|�|�|s0|j|=dS)N)r��remove)r>rMr�Zacquired_per_hostr�r?r?r@�_drop_acquired_per_hostus
z%BaseConnector._drop_acquired_per_hostcCsV|jr|j��x|jD]}|dk	r|��qWg|_|jsRt�|d|j|j�|_dS)z}Double confirmation for transport close.
        Some broken ssl servers may leave socket open without proper close.
        Nr�)	r�r�r��abortr�rr��_cleanup_closed_periodrR)r>rjr?r?r@r��s
zBaseConnector._cleanup_closedcCs|��tt��S)zClose all opened transports.)r�r9r-)r>r?r?r@rq�szBaseConnector.closecCs�|jr
dSd|_z�|j��r dS|jr0|j��|jr@|j��x,|j��D]}x|D]\}}|��qVWqLWx|j	D]}|��qvWx|j
D]}|dk	r�|��q�WWd|j��|j	��|j
��d|_|j
��d|_XdS)NT)r�rRrcr�r�r�r�r�rqr�r�r��clearr�)r>�datar��t0rjr?r?r@r��s0






zBaseConnector._closecCs|jS)z;Is connector closed.

        A readonly property.
        )r�)r>r?r?r@rt�szBaseConnector.closed)rMr=cCs�|jrV|jt|j�}|jr�|dkr�||jkr�|j�|�}|dk	sFt�|jt|�}n<|jr�||jkr�|j�|�}|dk	s~t�|jt|�}nd}|S)z�
        Return number of available connections taking into account
        the limit, limit_per_host and the connection key.

        If it returns less than 1 means that there is no connections
        availables.
        rNr)r��lenr�r�r��get�AssertionError)r>rM�	availableZacquiredr?r?r@�_available_connections�s	
z$BaseConnector._available_connectionsr&r8r6)�req�tracesr�r=c�sv|j}|�|�}|dks$||jk�r|j��}|j|�|�|r^x|D]}|��IdHqHWzny|IdHWnZtk
r�}z<||jkr�y|j|�|�Wnt	k
r�YnX|�Wdd}~XYnXWd||jkr�|j|s�|j|=X|�rx|D]}|�
�IdHq�W|�|�}	|	dk�r&tt
t��}
|j�|
�|j|�|
�|�rnx|D]}|��IdH�qVWy0|�|||�IdH}	|j�r�|	��td��Wn@tk
�r�|j�s�|j�|
�|�||
�|���Yn"X|j�s|j�|
�|�||
�|�rJxB|D]}|��IdH�qWn$|�rJx|D]}|��IdH�q2W|j�|	�|j|�|	�t|||	|j�S)z'Get from pool or create new connection.rNzConnector is closed.)�connection_keyr�r�rRZ
create_futurerlZsend_connection_queued_start�
BaseExceptionr�r�Zsend_connection_queued_end�_getrr%r|r��addr�Zsend_connection_create_start�_create_connectionr�rqrr��_release_waiterZsend_connection_create_endZsend_connection_reuseconnrK)r>r�r�r�rMr��fut�trace�er�Zplaceholderr?r?r@�connect�sj










zBaseConnector.connectcCs�y|j|}Wntk
r"dSX|j��}x�|r�|��\}}|��r�|||jkr~|j}|��|j	r�|j
s�|j�|�q�|s�|j|=|Sq0|j}|��|j	r0|j
s0|j�|�q0W|j|=dS)N)
r��KeyErrorrRr��poprsr�rjrqr�r�r�rl)r>rMr�Zt1r�r�rjr?r?r@r�2s,
zBaseConnector._getcCsv|js
dSt|j���}t�|�xN|D]F}|�|�dkr<q(|j|}x&|rl|��}|��sH|�d�dSqHWq(WdS)z�
        Iterates over all waiters till found one that is not finsihed and
        belongs to a host that has available connections.
        Nr)	r��list�keys�randomZshuffler��popleftZdoneZ
set_result)r>ZqueuesrM�waitersZwaiterr?r?r@r�Qs



zBaseConnector._release_waiter)rMr�r=cCsH|jr
dSy|j�|�|�||�Wntk
r:Yn
X|��dS)N)r�r�r�r�r�r�)r>rMr�r?r?r@�_release_acquirediszBaseConnector._release_acquired)r_)rMrNr_r=cCs�|jr
dS|�||�|jr d}|s*|jrR|j}|��|jr�|js�|j�	|�nV|j
�|�}|dkrtg}|j
|<|�	||j�
�f�|jdkr�t�|d|j|j�|_dS)NTr�)r�r�r�r_rjrqr�r�r�rlr�r�rRr�r�rr�r�)r>rMrNr_rjr�r?r?r@rdxs"

zBaseConnector._releasec�s
t��dS)N)�NotImplementedError)r>r�r�r�r?r?r@r��sz BaseConnector._create_connection)NNN)0rGrHrIr}r�rZr�r.r�objectr�r{�intrrvrwrArCrrFr�r�r�rr�r	r�ryr�r�r�r�r%r�r�rrqr�rtr�rrKr�r�r�r�rdr�r?r?r?r@r2�sV".
*	%"
K
r2c@s�eZdZdeedd�dd�Zeed�dd�Ze	e
efee
e
efdd�d	d
�Ze	e
efdd�dd
�Zdd�dd�Ze	e
efee
e
efd�dd�Ze	e
efed�dd�ZdS)�_DNSCacheTableN)�ttlr=cCsi|_i|_||_dS)N)�	_addrs_rr�_timestamps�_ttl)r>r�r?r?r@rA�sz_DNSCacheTable.__init__)�hostr=cCs
||jkS)N)r�)r>r�r?r?r@�__contains__�sz_DNSCacheTable.__contains__)rM�addrsr=cCs,t|�t|�f|j|<|jr(t�|j|<dS)N)rr�r�r�rr�)r>rMr�r?r?r@r��sz_DNSCacheTable.add)rMr=cCs&|j�|d�|jr"|j�|d�dS)N)r�r�r�r�)r>rMr?r?r@r��sz_DNSCacheTable.remove)r=cCs|j��|j��dS)N)r�r�r�)r>r?r?r@r��s
z_DNSCacheTable.clearcCs(|j|\}}tt||��}t|�|S)N)r�r�r�next)r>rMrO�lengthr�r?r?r@�
next_addrs�sz_DNSCacheTable.next_addrscCs$|jdkrdS|j||jt�kS)NF)r�r�r)r>rMr?r?r@�expired�s
z_DNSCacheTable.expired)N)rGrHrIrr�rAr�r{r�rrxr�rrrr�r�r�r�r�r?r?r?r@r��s&$r�cs�eZdZdZdddddddddedddddd�eeeeeeeee	e
deee	feee
efeee
deefeeeeeejd��fd	d
�Zedd��fdd
�Zeed�dd��Zeed�dd��Zd0ee
eedd�dd�Zd1e
eeedeee
efd�dd�Zdedded�dd�Ze e!�"d�ee	d�dd ���Z#dee	d!�d"d#�Z$ded$d!�d%d&�Z%e&d'�edde'e(eeej)efd(�d)d*�Z*e&d'�dedde'e(eej)efd+�d,d-�Z+deddeej)efd�d.d/�Z,�Z-S)2r3a/TCP connector.

    verify_ssl - Set to True to check ssl certifications.
    fingerprint - Pass the binary sha256
        digest of the expected certificate in DER format to verify
        that the certificate the server presents matches. See also
        https://en.wikipedia.org/wiki/Transport_Layer_Security#Certificate_pinning
    resolver - Enable DNS lookups and use this
        resolver
    use_dns_cache - Use memory cache for DNS lookups.
    ttl_dns_cache - Max seconds having cached a DNS entry, None forever.
    family - socket address family
    local_addr - local tuple of (host, port) to bind socket to

    keepalive_timeout - (optional) Keep-alive timeout.
    force_close - Set to True to force close and do reconnect
        after each request (and between redirects).
    limit - The total number of simultaneous connections.
    limit_per_host - Number of simultaneous connections to one host.
    enable_cleanup_closed - Enables clean-up closed ssl transports.
                            Disabled by default.
    loop - Optional event loop.
    TN�
rFr~)�
verify_ssl�fingerprint�
use_dns_cache�
ttl_dns_cache�family�ssl_context�ssl�
local_addr�resolverrr�r�r�r�rOcsjt�j|
|||
||d�t||||�|_|	dkr<t|jd�}	|	|_||_t|d�|_	i|_
||_||_dS)N)rr�r�r�r�rO)rO)r�)
�superrAr(�_sslr1rR�	_resolver�_use_dns_cacher��
_cached_hosts�_throttle_dns_events�_family�_local_addr)r>r�r�r�r�r�r�r�r�r�rr�r�r�r�rO)�	__class__r?r@rA�s zTCPConnector.__init__)r=cs&x|j��D]}|��qWt���S)zClose all ongoing DNS calls.)r�r�r�r�rq)r>Zev)r�r?r@rq
szTCPConnector.closecCs|jS)zSocket family like AF_INET.)r�)r>r?r?r@r�szTCPConnector.familycCs|jS)z%True if local DNS caching is enabled.)r�)r>r?r?r@r�szTCPConnector.use_dns_cache)r��portr=cCsJ|dk	r"|dk	r"|j�||f�n$|dk	s2|dk	r<td��n
|j��dS)z8Remove specified host/port or clear all dns local cache.Nz5either both host and port or none of them are allowed)r�r�r�r�)r>r�r�r?r?r@�clear_dns_caches

zTCPConnector.clear_dns_cacher8)r�r�r�r=c
�s8t|�r||||jddd�gS|js�|rFx|D]}|�|�IdHq.W|jj|||jd�IdH}|r�x|D]}|�|�IdHqjW|S||f}||jkr�|j�|�s�|j�	|�}|r�x|D]}|�
|�IdHq�W|S||jk�r"|j|}|�rx|D]}|�
|�IdHq�W|��IdH�n
t
|j�|j|<|�rXx|D]}|�|�IdH�q>Wz�y�|�r�x|D]}|�|�IdH�qhW|jj|||jd�IdH}	|�r�x|D]}|�|�IdH�q�W|j�||	�|j|��Wn8tk
�r}
z|j|j|
d��Wdd}
~
XYnXWd|j�|�X|j�	|�S)Nr)�hostnamer�r�r�r��flags)r�)r�)r,r�r�Zsend_dns_resolvehost_startr�ZresolveZsend_dns_resolvehost_endr�r�r�Zsend_dns_cache_hitr��waitr0rRZsend_dns_cache_missr�r�r�r�)r>r�r�r�r�ZresrM�resultZeventr�r�r?r?r@�
_resolve_host&s`








zTCPConnector._resolve_hostr&r6)r�r�r�r=c�s<|jr |�|||�IdH\}}n|�|||�IdH\}}|S)zcCreate connection.

        Has same keyword arguments as BaseEventLoop.create_connection.
        N)�proxy�_create_proxy_connection�_create_direct_connection)r>r�r�r��_r�r?r?r@r�rszTCPConnector._create_connection)�verifiedr=c
Cs�|rt��St�tj�}|jtjO_|jtjO_y|jtjO_Wn2tk
r~}zt	�
d�|��Wdd}~XYnX|��|SdS)Nz�{!s}: The Python interpreter is compiled against OpenSSL < 1.0.0. Ref: https://docs.python.org/3/library/ssl.html#ssl.OP_NO_COMPRESSION)
r�Zcreate_default_context�
SSLContextZPROTOCOL_SSLv23ZoptionsZOP_NO_SSLv2ZOP_NO_SSLv3ZOP_NO_COMPRESSION�AttributeErrorrCrD�formatZset_default_verify_paths)r��
sslcontextZattr_errr?r?r@�_make_ssl_context�szTCPConnector._make_ssl_context)r�r=cCsz|��rrtdkrtd��|j}t|tj�r.|S|dk	r@|�d�S|j}t|tj�rV|S|dk	rh|�d�S|�d�SdSdS)a*Logic to get the correct SSL context

        0. if req.ssl is false, return None

        1. if ssl_context is specified in req, use it
        2. if _ssl_context is specified in self, use it
        3. otherwise:
            1. if verify_ssl is not specified in req, use self.ssl_context
               (will generate a default context according to self.verify_ssl)
            2. if verify_ssl is True in req, generate a default SSL context
            3. if verify_ssl is False in req, generate a SSL context that
               won't verify
        NzSSL is not supported.FT)r�r��RuntimeError�
isinstancer�rr�)r>r�rr?r?r@�_get_ssl_context�s


zTCPConnector._get_ssl_contextr'cCs,|j}t|t�r|S|j}t|t�r(|SdS)N)r�rr'r�)r>r�Zretr?r?r@�_get_fingerprint�s

zTCPConnector._get_fingerprint)�client_error)�argsr�r�rrfr=c
�s�y*t|j��|jj||�IdHSQRXWn�tk
rZ}zt|j|�|�Wdd}~XYn^tk
r�}zt|j|�|�Wdd}~XYn0t	k
r�}z||j|�|�Wdd}~XYnXdS)N)
r*�sock_connectrRZcreate_connectionr#rr�r$r�OSError)r>r�r�rr	rfr�r?r?r@�_wrap_create_connection�sz$TCPConnector._wrap_create_connection)r�r�r�rr=c�s�|�|�}|�|�}|jj}|dk	s(t�|j}|dk	s:t�tj|j|||d�|j	d�}	yt�
|	�IdH}
Wn`tjk
r�ddd�dd�}|	�|��Yn0t
k
r�}zt|j|�|�Wdd}~XYnXd}
�x|
D]�}|d}|d}yN|j|j|||||d	|d
|d|�r|dnd|j||d
�IdH\}}Wn*tk
�rd}z
|}
w�Wdd}~XYnX|���r�|�r�y|�|�WnFtk
�r�}z&|��|j�s�|j�|�|}
w�Wdd}~XYnX||fSW|
dk	�s�t�|
�dS)N)r�)rOz$asyncio.Future[List[Dict[str, Any]]])r�r=c	Ss$tttj��|��WdQRXdS)N)rrnrv�CancelledErrorr�)r�r?r?r@�drop_exception�sz>TCPConnector._create_direct_connection.<locals>.drop_exceptionr�r�r�r�r�r�)	r�r�r�r�r��server_hostnamer�r�r)rr�urlZraw_hostr�r�rvZ
ensure_futurer�rRZshieldr
Zadd_done_callbackrrr�rr�r�r�Zcheckr"rqr�r�rl)r>r�r�r�rrr�r�r�Z
host_resolvedZhostsrr��last_excZhinfoZtranspr�r?r?r@r��sb


 
z&TCPConnector._create_direct_connectionc�s*i}|jdk	r|j}|jtj|tj<|j}|dk	s8t�ttj|||j|j	|j
d�}|j|g|td�IdH\}}|�
�|j�tjd�}	|	dk	r�|��s�|	|jtj<n|	|jtj<|���r"|�|�}
tj|_|j|_tj|jdddd�}t||||j	�}|�|�IdH}
�z
y0|j}|dk	�s$t�|��|
�|�IdH}Wn(tk
�rf|
��|���Yn�Xd|_d|_ zp|j!dk�r�|j"}|dk�r�t#|j!d}t$|
j%|j&|j!||jd��|j'ddd�}|dk�r�t(d	��|�)�}Wd|��X|j*|j+||
||j,|d
�IdH\}}Wd|
��X||fS)N)�headers�authrOr�)r)r��
proxy_authZproxy_headers_hash��r)�statusr`rZsocket)�defaultz)Transport does not expose socket instance)r�r�Zsockrr�)-Z
proxy_headersrrZHOSTr�r�r&ZMETH_GETrrRr�r�r!r�r�Z
AUTHORIZATIONr�ZPROXY_AUTHORIZATIONrZMETH_CONNECT�methodr�attrZevolver�rK�sendrSZset_response_params�startr�rqrur�reasonr/r Zrequest_info�historyZget_extra_infor�duprr�r�)r>r�r�r�rrZ	proxy_reqrjr�rrrMZconnZ
proxy_resprNZrespr`Zrawsockr?r?r@r�s�









z%TCPConnector._create_proxy_connection)NN)N).rGrHrIr}r.r{r�bytesr�r�rr'rrxrr�r�rvrwrArrqryr�r�r�rrrr�r%r��staticmethodr��	lru_cacherrrrrrnrzrr�r��
__classcell__r?r?)r�r@r3�sNl
K
!F
r3c	sxeZdZdZdedddfeeeee	dfe
e
eej
dd��fdd�
Zeed	�d
d��Zded
ded�dd�Z�ZS)r4a�Unix socket connector.

    path - Unix socket path.
    keepalive_timeout - (optional) Keep-alive timeout.
    force_close - Set to True to force close and do reconnect
        after each request (and between redirects).
    limit - The total number of simultaneous connections.
    limit_per_host - Number of simultaneous connections to one host.
    loop - Optional event loop.
    Fr~rN)�pathr�rr�r�rOr=cs t�j|||||d�||_dS)N)r�rr�r�rO)r�rA�_path)r>r#r�rr�r�rO)r�r?r@rA�s	zUnixConnector.__init__)r=cCs|jS)zPath to unix socket.)r$)r>r?r?r@r#�szUnixConnector.pathr&r8r6)r�r�r�r=c
�sry6t|j��"|j�|j|j�IdH\}}WdQRXWn0tk
rf}zt|j|�|�Wdd}~XYnXt	t
|�S)N)r*r
rRZcreate_unix_connectionr�r$rrr�rr%)r>r�r�r�r�r�r�r?r?r@r��s$ z UnixConnector._create_connection)rGrHrIr}r.rxr{rr�r�r�rrvrwrAryr#rr%r�r"r?r?)r�r@r4�s
 

r4c	sxeZdZdZdedddfeeeee	dfe
e
eej
dd��fdd�
Zeed	�d
d��Zded
ded�dd�Z�ZS)r5aNamed pipe connector.

    Only supported by the proactor event loop.
    See also: https://docs.python.org/3.7/library/asyncio-eventloop.html

    path - Windows named pipe path.
    keepalive_timeout - (optional) Keep-alive timeout.
    force_close - Set to True to force close and do reconnect
        after each request (and between redirects).
    limit - The total number of simultaneous connections.
    limit_per_host - Number of simultaneous connections to one host.
    loop - Optional event loop.
    Fr~rN)r#r�rr�r�rOr=cs6t�j|||||d�t|jtj�s,td��||_dS)N)r�rr�r�rOz9Named Pipes only available in proactor loop under windows)r�rArrRrvZProactorEventLooprr$)r>r#r�rr�r�rO)r�r?r@rA�s	zNamedPipeConnector.__init__)r=cCs|jS)zPath to the named pipe.)r$)r>r?r?r@r#�szNamedPipeConnector.pathr&r8r6)r�r�r�r=c
�s�yFt|j��2|j�|j|j�IdH\}}t�d�IdHWdQRXWn0tk
rv}zt	|j
|�|�Wdd}~XYnXtt|�S)Nr)
r*r
rRZcreate_pipe_connectionr�r$rvZsleeprrr�rr%)r>r�r�r�r�r�r�r?r?r@r��s z%NamedPipeConnector._create_connection)rGrHrIr}r.rxr{rr�r�r�rrvrwrAryr#rr%r�r"r?r?)r�r@r5�s
 
r5)Wrvr�r�rXrVrC�collectionsrr�
contextlibrZhttp.cookiesr�	itertoolsrrr�r�typesr	�typingr
rrr
rrrrrrrrrrr�rr�abcrZclient_exceptionsrrrrr r!r"r#r$Zclient_protor%Z
client_reqrepr&r'r(r)r*r+r,r-r.Zhttpr/Zlocksr0r�r1r�r��ImportErrorr��__all__Zclientr6r7�tracingr8r9rKr|r2r�r3r4r5r?r?r?r@�<module>s^@, 

Zg)<1

Zerion Mini Shell 1.0