Current File : //lib/python3.9/site-packages/pip/_internal/network/__pycache__/download.cpython-39.pyc |
a
[��f� � @ sT d Z ddlZddlZddlZddlZddlmZmZmZ ddl m
Z
mZ ddlm
Z
ddlmZ ddlmZ ddlmZ dd lmZ dd
lmZ ddlmZmZmZ ddlmZmZmZ e� e!�Z"eee# d
�dd�Z$eee%ee& d�dd�Z'e%e%d�dd�Z(e%e%e%d�dd�Z)eee%d�dd�Z*eeed�dd�Z+G dd � d �Z,G d!d"� d"�Z-dS )#z)Download files with progress indicators.
� N)�Iterable�Optional�Tuple)�CONTENT_CHUNK_SIZE�Response)�DownloadProgressProvider)�NetworkConnectionError)�PyPI)�Link)�
is_from_cache)�
PipSession)�HEADERS�raise_for_status�response_chunks)�format_size�redact_auth_from_url�splitext)�resp�returnc
C s0 zt | jd �W S tttfy* Y d S 0 d S )Nzcontent-length)�int�headers�
ValueError�KeyError� TypeError)r � r �B/usr/lib/python3.9/site-packages/pip/_internal/network/download.py�_get_http_response_size s r )r �link�progress_barr c C s� t | �}|jtjkr|j}n|j}t|�}|r>d�|t|��}t | �rTt
�d|� nt
�d|� t
�� t
jkrtd}n*t | �r�d}n|s�d}n|dkr�d}nd}t| t�}|s�|S t||d�|�S )Nz{} ({})zUsing cached %szDownloading %sFTi@� )�max)r �netlocr Zfile_storage_domainZshow_urlZurl_without_fragmentr �formatr r �logger�infoZgetEffectiveLevel�logging�INFOr r r )r r r Ztotal_length�urlZ
logged_urlZ
show_progress�chunksr r r �_prepare_download s.
r( )�filenamer c C s t j�| �S )zJ
Sanitize the "filename" value from a Content-Disposition header.
)�os�path�basename)r) r r r �sanitize_content_filenameG s r- )�content_disposition�default_filenamer c C s, t �| �\}}|�d�}|r$t|�}|p*|S )z�
Parse the "filename" value from a Content-Disposition header, and
return the default filename if the result is empty.
r) )�cgiZparse_header�getr- )r. r/ Z_type�paramsr) r r r �parse_content_dispositionN s
r3 )r r r c C s� |j }| j�d�}|r t||�}t|�d }|sPt�| j�dd��}|rP||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� zcontent-type� )
r) r r1 r3 r � mimetypesZguess_extensionr&