<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    Re                 @   s*  d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZmZmZ dd	lmZmZmZ dd
lmZ erddlmZmZ ddlmZ ddlmZ ddlm Z  e!e"Z#dd Z$dd Z%dd Z&dd Z'dd Z(dd Z)G dd de*Z+G dd de*Z,dS )z)Download files with progress indicators.
    N)CONTENT_CHUNK_SIZE)DownloadProgressProvider)NetworkConnectionError)PyPI)is_from_cache)HEADERSraise_for_statusresponse_chunks)format_sizeredact_auth_from_urlsplitext)MYPY_CHECK_RUNNING)IterableOptional)Response)Link)
PipSessionc          
   C   s.   yt | jd S  tttfk
r(   d S X d S )Nzcontent-length)intheaders
ValueErrorKeyError	TypeError)resp r   /builddir/build/BUILDROOT/alt-python37-pip-20.2.4-6.el8.x86_64/opt/alt/python37/lib/python3.7/site-packages/pip/_internal/network/download.py_get_http_response_size%   s    r   c             C   s   t | }|jtjkr|j}n|j}t|}|r>d|t|}t	| rTt
d| nt
d| t
 tjkrtd}n*t	| rd}n|sd}n|dkrd}nd}t| t}|s|S t||d|S )Nz{} ({})zUsing cached %szDownloading %sFTi@  )max)r   netlocr   file_storage_domainshow_urlurl_without_fragmentr   formatr
   r   loggerinfogetEffectiveLevelloggingINFOr	   r   r   )r   linkprogress_bartotal_lengthurl
logged_urlshow_progresschunksr   r   r   _prepare_download-   s2    
r.   c             C   s   t j| S )zJ
    Sanitize the "filename" value from a Content-Disposition header.
    )ospathbasename)filenamer   r   r   sanitize_content_filenameY   s    r3   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.
    r2   )cgiparse_headergetr3   )content_dispositiondefault_filename_typeparamsr2   r   r   r   parse_content_dispositiona   s
    
r;   c             C   s   |j }| jd}|r t||}t|d }|sPt| jdd}|rP||7 }|s~|j| jkr~tj	| jd }|r~||7 }|S )zoGet an ideal filename from the given HTTP response, falling back to
    the link filename if not provided.
    zcontent-disposition   zcontent-type )
r2   r   r6   r;   r   	mimetypesguess_extensionr*   r/   r0   )r   r'   r2   r7   extr   r   r   _get_http_response_filenamep   s    
rA   c             C   s.   |j ddd }| j|tdd}t| |S )N#r<   r   T)r   stream)r*   splitr6   r   r   )sessionr'   
target_urlr   r   r   r   _http_get_download   s    rG   c               @   s   e Zd Zdd ZdS )Downloadc             C   s   || _ || _|| _d S )N)responser2   r-   )selfrI   r2   r-   r   r   r   __init__   s    zDownload.__init__N)__name__
__module____qualname__rK   r   r   r   r   rH      s   rH   c               @   s   e Zd Zdd Zdd ZdS )
Downloaderc             C   s   || _ || _d S )N)_session_progress_bar)rJ   rE   r(   r   r   r   rK      s    zDownloader.__init__c          
   C   sr   yt | j|}W nD tk
rT } z&|jd k	s0ttd|jj|  W d d }~X Y nX t|t	||t
||| jS )NzHTTP error %s while getting %s)rG   rP   r   rI   AssertionErrorr"   criticalstatus_coderH   rA   r.   rQ   )rJ   r'   r   er   r   r   __call__   s    zDownloader.__call__N)rL   rM   rN   rK   rV   r   r   r   r   rO      s   	rO   )-__doc__r4   r%   r>   r/   Zpip._vendor.requests.modelsr   pip._internal.cli.progress_barsr   pip._internal.exceptionsr   pip._internal.models.indexr   pip._internal.network.cacher   pip._internal.network.utilsr   r   r	   pip._internal.utils.miscr
   r   r   pip._internal.utils.typingr   typingr   r   r   pip._internal.models.linkr   pip._internal.network.sessionr   	getLoggerrL   r"   r   r.   r3   r;   rA   rG   objectrH   rO   r   r   r   r   <module>   s4   
,