Current File : //lib/python3.9/site-packages/pip/_internal/network/__pycache__/session.cpython-39.pyc
a

[��fYA�@sUdZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
ZddlZddlmZmZmZmZmZmZmZmZmZddlmZmZddlmZddlm Z m!Z!ddl"m#Z#m$Z$ddl%m&Z&dd	l'm(Z(dd
l)m*Z*ddl+m,Z,ddl-m.Z.dd
l/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6ddl7m8Z8ddl9m:Z:m;Z;ddl<m=Z=e�>e?�Z@eeAeAeeeBeAffZCejDde*d�gd�ZEeeCeFd<dZGeHd�dd�ZIeAd�dd�ZJGdd�de �ZKGd d!�d!e!�ZLGd"d#�d#e�ZMGd$d%�d%ejN�ZOdS)&zhPipSession and supporting code, containing all pip-specific
network request configuration and behavior.
�N)	�Any�Dict�Iterator�List�Mapping�Optional�Sequence�Tuple�Union)�requests�urllib3)�CacheControlAdapter)�BaseAdapter�HTTPAdapter)�PreparedRequest�Response)�CaseInsensitiveDict)�ConnectionPool)�InsecureRequestWarning)�__version__)�get_default_environment)�Link)�MultiDomainBasicAuth)�
SafeFileCache)�has_tls)�libc_ver)�build_url_from_netloc�parse_netloc)�url_to_path�ignore)�category))�https�*r")r"Z	localhostr")r"z127.0.0.0/8r")r"z::1/128r")�filer"N)Zsshr"r"�SECURE_ORIGINS)Z
BUILD_BUILDIDZBUILD_IDZCIZ	PIP_IS_CI��returncCstdd�tD��S)z?
    Return whether it looks like pip is running under CI.
    css|]}|tjvVqdS�N)�os�environ)�.0�name�r,�A/usr/lib/python3.9/site-packages/pip/_internal/network/session.py�	<genexpr>X�z looks_like_ci.<locals>.<genexpr>)�any�CI_ENVIRONMENT_VARIABLESr,r,r,r-�
looks_like_ciQsr2c
Cs�dtd�t��dt��id�}|dddkr@t��|dd<n�|dddkr�tj}|jd	krl|d
d�}d�d
d�|D��|dd<nB|dddkr�t��|dd<n |dddkr�t��|dd<tj�d��rRddl	m
}|��|��|�
�f}ttdd�tgd�|���}ttdd�tddgt����}|�rD||d<|�rR||d<tj�d��r�t��d�r�dt��dd�|d<t���r�t��|�di�d<t���r�t��|�di�d<t���r�t��|d<t��r�dd
l}|j|d <t��d!�}|d
u�rt|j�|d"<t�d#�d
u�rvztj d#d$gtj!d%d&�}Wnt"�yRYn$0|�d'��rv|�#d(�d)�$�|d*<t%��r�d+nd
|d,<t&j'�(d-�}	|	d
u�r�|	|d.<d/j)|t*j+|d0d+d1�d2�S)3z6
    Return a string representing the user agent.
    �pip)r+�versionr+)Z	installerZpython�implementationr5ZCPythonr4ZPyPy�finalN��.cSsg|]}t|��qSr,)�str)r*�xr,r,r-�
<listcomp>nr/zuser_agent.<locals>.<listcomp>ZJythonZ
IronPythonZlinuxr)�distrocSs|dS�N�r,�r:r,r,r-�<lambda>}r/zuser_agent.<locals>.<lambda>)r+r4�idcSs|dSr=r,r?r,r,r-r@�r/�lib�libcr<�darwinZmacOS�system�releaseZcpuZopenssl_versionZ
setuptoolsZsetuptools_versionZrustcz	--versiong�?)�stderr�timeoutsrustc � r>Z
rustc_versionTZciZPIP_USER_AGENT_USER_DATA�	user_dataz9{data[installer][name]}/{data[installer][version]} {json})�,�:)Z
separatorsZ	sort_keys)�data�json),r�platformZpython_versionZpython_implementation�sys�pypy_version_info�releaselevel�join�
startswith�pip._vendorr<r+r4Zcodename�dict�filter�ziprZmac_verrE�
setdefaultrF�machinerZ_sslZOPENSSL_VERSIONrZget_distributionr9�shutil�which�
subprocessZcheck_outputZSTDOUT�	Exception�split�decoder2r(r)�get�formatrN�dumps)
rMrQr<Zlinux_distributionZdistro_infosrCZsslZsetuptools_distZrustc_outputrJr,r,r-�
user_agent[s���
�����




�

�rdc@sreZdZd
eeeeeeeeffeee	feee	ee	e	ffee
e	e	fed�dd�Zdd�dd	�Z
dS)�LocalFSAdapterFNT)�request�streamrH�verify�cert�proxiesr&c

Cs�t|j�}t�}d|_|j|_zt�|�}	WnTty�}
z<d|_t|
�j|_	t
�|j	�d|
���d��|_
WYd}
~
nXd}
~
00tjj|	jdd�}t�|�dp�d}t||	j|d	��|_t|d
�|_
|j
j|_|S)N��i�z: �utf8T)Zusegmtrz
text/plain)zContent-TypezContent-Lengthz
Last-Modified�rb)r�urlrZstatus_coder(�stat�OSError�type�__name__�reason�io�BytesIO�encode�raw�emailZutilsZ
formatdate�st_mtime�	mimetypesZ
guess_typer�st_size�headers�open�close)
�selfrfrgrHrhrirj�pathnameZrespZstats�excZmodifiedZcontent_typer,r,r-�send�s*	
4��
zLocalFSAdapter.sendr%cCsdSr'r,)rr,r,r-r~�szLocalFSAdapter.close)FNTNN)rr�
__module__�__qualname__r�boolrr
�floatr	r9rrr�r~r,r,r,r-re�s�
�'rec	sFeZdZeeeeefeeeeeeffdd��fdd�Z	�Z
S)�InsecureHTTPAdapterN��connrnrhrir&cst�j||d|d�dS�NF)r�rnrhri��super�cert_verify�rr�rnrhri��	__class__r,r-r��szInsecureHTTPAdapter.cert_verify�rrr�r�rr9r
r�rr	r��
__classcell__r,r,r�r-r��s
�r�c	sFeZdZeeeeefeeeeeeffdd��fdd�Z	�Z
S)�InsecureCacheControlAdapterNr�cst�j||d|d�dSr�r�r�r�r,r-r��sz'InsecureCacheControlAdapter.cert_verifyr�r,r,r�r-r��s
�r�c	s�eZdZUdZeeed<ddddd�eeeee	eee
eedd��fdd�Ze
edd	�d
d�Zdeeee
dd
�dd�Zeed�dd�Zee
d�dd�Zeeeeed��fdd�Z�ZS)�
PipSessionNrHrr,)�retries�cache�
trusted_hosts�
index_urls)�argsr�r�r�r��kwargsr&c
s�t�j|i|��g|_t�|jd<t|d�|_tj|gd�dd�}t	|d�}|rvt
t|�|d�}tt|�|d�|_
nt|d�}||_
|�d|�|�d	|�|�d
t��|D]}	|j|	dd�q�d
S)zj
        :param trusted_hosts: Domains not to emit warnings for when not using
            HTTPS.
        z
User-Agent)r�)i�i�iig�?)�totalZstatus_forcelistZbackoff_factor)�max_retries)r�r�zhttps://zhttp://zfile://T)�suppress_loggingN)r��__init__�pip_trusted_originsrdr|r�authrZRetryr�r
rr��_trusted_host_adapterr�mountre�add_trusted_host)
rr�r�r�r�r�r�Zinsecure_adapterZsecure_adapter�hostr�r,r-r�s4
�
��

zPipSession.__init__)�new_index_urlsr&cCs||j_dS)zn
        :param new_index_urls: New index urls to update the authentication
            handler with.
        N)r�r�)rr�r,r,r-�update_index_urlsSszPipSession.update_index_urlsF)r��sourcer�r&cCs�|s0d|��}|dur&|d|�d�7}t�|�t|�}||jvrN|j�|�|�t|dd�d|j�|�t|�d|j�|ds�|�t|dd�d	|j�|�t|�d	|j�dS)
z�
        :param host: It is okay to provide a host that has previously been
            added.
        :param source: An optional source string, for logging where the host
            string came from.
        zadding trusted host: Nz (from �)�http)�scheme�/r>rL)�logger�inforr��appendr�rr�)rr�r�r��msg�	host_portr,r,r-r�Zs$	


��zPipSession.add_trusted_hostr%ccs6tEdH|jD] \}}d||dur(dn|fVqdS)Nr")r$r�)rr��portr,r,r-�iter_secure_originsys
zPipSession.iter_secure_origins)�locationr&c	Cs�tj�t|��}|j|j|j}}}|�dd�d}|��D]�}|\}}}	||kr^|dkr^q>zt	�
|�}
t	�|�}Wn2ty�|r�|�
�|�
�kr�|dkr�Yq>Yn0|
|vr�q>||	kr�|	dkr�|	dur�q>dSt�d||�dS)N�+r>���r"Tz�The repository located at %s is not a trusted or secure host and is being ignored. If this repository is available via HTTPS we recommend you use HTTPS instead, otherwise you may silence this warning and allow it anyway with '--trusted-host %s'.F)�urllib�parse�urlparser9r��hostnamer��rsplitr��	ipaddressZ
ip_addressZ
ip_network�
ValueError�lowerr�Zwarning)rr��parsedZorigin_protocolZorigin_hostZorigin_portZ
secure_originZsecure_protocolZsecure_hostZsecure_portZaddrZnetworkr,r,r-�is_secure_origin~sJ�



���
����	zPipSession.is_secure_origin)�methodrnr�r�r&cs*|�d|j�t�j||g|�Ri|��S)NrH)rYrHr�rf)rr�rnr�r�r�r,r-rf�szPipSession.request)NF)rrr�r�rHr�int�__annotations__rr9rrr�r�r�r�r�SecureOriginr�rr�rrfr�r,r,r�r-r�s.
�
�M�
�Cr�)P�__doc__Zemail.utilsrxrtr�rNZloggingrzr(rOr[r]rP�urllib.parser��warnings�typingrrrrrrrr	r
rUrrZpip._vendor.cachecontrolr
Zpip._vendor.requests.adaptersrrZpip._vendor.requests.modelsrrZpip._vendor.requests.structuresrZ"pip._vendor.urllib3.connectionpoolrZpip._vendor.urllib3.exceptionsrr3rZpip._internal.metadatarZpip._internal.models.linkrZpip._internal.network.authrZpip._internal.network.cacherZpip._internal.utils.compatrZpip._internal.utils.glibcrZpip._internal.utils.miscrrZpip._internal.utils.urlsrZ	getLoggerrrr�r9r�r��filterwarningsr$r�r1r�r2rdrer�r�ZSessionr�r,r,r,r-�<module>sR,

e,