File: //usr/local/lib/python3.10/site-packages/pip/_internal/network/__pycache__/download.cpython-310.pyc
o
��i� � @ sj d Z ddlZddlZddlZddlZddlmZmZm Z ddl
mZmZ ddl
mZ ddlmZ ddlmZ ddlmZ dd lmZ dd
lmZ ddlmZmZmZ ddlmZmZm Z e�!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,G d!d"� d"�Z-G d#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
C s, zt | jd �W S tttfy Y d S w )Nzcontent-length)�int�headers�
ValueError�KeyError� TypeError)r � r �I/usr/local/lib/python3.10/site-packages/pip/_internal/network/download.py�_get_http_response_size s
�r �link�progress_barc C s� 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|S t||d�}||�S )Nz{} ({})zUsing cached %szDownloading %sFTi@� )�bar_type�size)r �netlocr �file_storage_domain�show_url�url_without_fragmentr �formatr r �logger�info�getEffectiveLevel�logging�INFOr r r ) r r r �total_length�url�
logged_url�
show_progress�chunks�rendererr r r �_prepare_download s0
r1 �filenamec C s t j�| �S )zJ
Sanitize the "filename" value from a Content-Disposition header.
)�os�path�basename)r2 r r r �sanitize_content_filenameH s r6 �content_disposition�default_filenamec C s4 t j�� }| |d<