HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/pip/_internal/network/__pycache__/download.cpython-310.pyc
o

@%Ne��	@sjdZddlZddlZddlZddlZddlmZmZmZddl	m
Z
mZddlm
Z
ddlmZddlmZddlmZdd	lmZdd
lmZddlmZmZmZddlmZmZmZe� e!�Z"d
edee#fdd�Z$d
edede%dee&fdd�Z'de%de%fdd�Z(de%de%de%fdd�Z)d
edede%fdd�Z*dededefdd �Z+Gd!d"�d"�Z,Gd#d$�d$�Z-dS)%z)Download files with progress indicators.
�N)�Iterable�Optional�Tuple)�CONTENT_CHUNK_SIZE�Response)�get_download_progress_renderer)�NetworkConnectionError)�PyPI)�Link)�
is_from_cache)�
PipSession)�HEADERS�raise_for_status�response_chunks)�format_size�redact_auth_from_url�splitext�resp�returnc
Cs,zt|jd�WStttfyYdSw)Nzcontent-length)�int�headers�
ValueError�KeyError�	TypeError)r�r�@/usr/lib/python3/dist-packages/pip/_internal/network/download.py�_get_http_response_sizes
�r�link�progress_barc	Cs�t|�}|jtjkr|j}n|j}t|�}|rd�|t|��}t	|�r*t
�d|�nt
�d|�t
��t
jkr:d}nt	|�rAd}n|sFd}n	|dkrMd}nd}t|t�}|sX|St||d�}||�S)Nz{} ({})zUsing cached %szDownloading %sFTi@�)�bar_type�size)r�netlocr	�file_storage_domain�show_url�url_without_fragmentr�formatrr�logger�info�getEffectiveLevel�logging�INFOrrr)	rrr�total_length�url�
logged_url�
show_progress�chunks�rendererrrr�_prepare_downloads0
r1�filenamecCstj�|�S)zJ
    Sanitize the "filename" value from a Content-Disposition header.
    )�os�path�basename)r2rrr�sanitize_content_filenameHsr6�content_disposition�default_filenamecCs,t�|�\}}|�d�}|rt|�}|p|S)z�
    Parse the "filename" value from a Content-Disposition header, and
    return the default filename if the result is empty.
    r2)�cgi�parse_header�getr6)r7r8�_type�paramsr2rrr�parse_content_dispositionOs

r>cCs�|j}|j�d�}|rt||�}t|�d}|s(t�|j�dd��}|r(||7}|s?|j|jkr?tj	�|j�d}|r?||7}|S)zoGet an ideal filename from the given HTTP response, falling back to
    the link filename if not provided.
    zcontent-disposition�zcontent-type�)
r2rr;r>r�	mimetypes�guess_extensionr,r3r4)rrr2r7�extrrr�_get_http_response_filename]s
rD�sessioncCs.|j�dd�d}|j|tdd�}t|�|S)N�#r?rT)r�stream)r,�splitr;r
r)rEr�
target_urlrrrr�_http_get_downloadrsrJc@s@eZdZdededdfdd�Zdededeeeffd	d
�ZdS)�
DownloaderrErrNcC�||_||_dS�N��_session�
_progress_bar��selfrErrrr�__init__z�
zDownloader.__init__r�locationc
Cs�zt|j|�}Wnty%}z|jdusJ�t�d|jj|��d}~wwt||�}tj	�
||�}t|||j�}t
|d��}|D]}	|�|	�qAWd�n1sSwY|j�dd�}
||
fS)z.Download the file given by link into location.N�HTTP error %s while getting %s�wb�Content-Typer@�rJrOr�responser&�critical�status_coderDr3r4�joinr1rP�open�writerr;)rRrrUr�er2�filepathr/�content_file�chunk�content_typerrr�__call__�s(
���
��zDownloader.__call__)	�__name__�
__module__�__qualname__r�strrSr
rrerrrrrKys��
�"rKc@sPeZdZdededdfdd�Zdeededeeeeeefffd	d
�Z	dS)�BatchDownloaderrErrNcCrLrMrNrQrrrrS�rTzBatchDownloader.__init__�linksrUccs��|D]h}zt|j|�}Wnty*}z|jdusJ�t�d|jj|��d}~wwt||�}tj	�
||�}t|||j�}t
|d��}	|D]}
|	�|
�qFWd�n1sXwY|j�dd�}|||ffVqdS)z0Download the files given by links into location.NrVrWrXr@rY)rRrkrUrrr`r2rar/rbrcrdrrrre�s2����
	���zBatchDownloader.__call__)
rfrgrhrrirSrr
rrerrrrrj�s��
����rj).�__doc__r9r)rAr3�typingrrr�pip._vendor.requests.modelsrr�pip._internal.cli.progress_barsr�pip._internal.exceptionsr�pip._internal.models.indexr	�pip._internal.models.linkr
�pip._internal.network.cacher�pip._internal.network.sessionr�pip._internal.network.utilsr
rr�pip._internal.utils.miscrrr�	getLoggerrfr&rrri�bytesr1r6r>rDrJrKrjrrrr�<module>s@
���
�*