<!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>
3
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j!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-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/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j|t|}t	| rTt
jd| nt
jd| t
j 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 %sFT(   i  )maxi@  )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j| S )zJ
    Sanitize the "filename" value from a Content-Disposition header.
    )ospathbasename)filenamer   r   r   sanitize_content_filenameY   s    r4   c             C   s,   t j| \}}|j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.
    r3   )cgiparse_headergetr4   )content_dispositiondefault_filename_typeparamsr3   r   r   r   parse_content_dispositiona   s
    
r<   c             C   s   |j }| jjd}|r t||}t|d }|sPtj| jjdd}|rP||7 }| r|j| jkrtj	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 )
r3   r   r7   r<   r   	mimetypesguess_extensionr+   r0   r1   )r   r(   r3   r8   extr   r   r   _get_http_response_filenamep   s    
rB   c             C   s.   |j jddd }| j|tdd}t| |S )N#r=   r   T)r   stream)r+   splitr7   r   r   )sessionr(   
target_urlr   r   r   r   _http_get_download   s    rH   c               @   s   e Zd Zdd ZdS )Downloadc             C   s   || _ || _|| _d S )N)responser3   r.   )selfrJ   r3   r.   r   r   r   __init__   s    zDownload.__init__N)__name__
__module____qualname__rL   r   r   r   r   rI      s   rI   c               @   s   e Zd Zdd Zdd ZdS )
Downloaderc             C   s   || _ || _d S )N)_session_progress_bar)rK   rF   r)   r   r   r   rL      s    zDownloader.__init__c             C   sr   yt | j|}W nD tk
rT } z(|jd k	s0ttjd|jj|  W Y d d }~X nX t|t	||t
||| jS )NzHTTP error %s while getting %s)rH   rQ   r   rJ   AssertionErrorr#   criticalstatus_coderI   rB   r/   rR   )rK   r(   r   er   r   r   __call__   s    zDownloader.__call__N)rM   rN   rO   rL   rW   r   r   r   r   rP      s   	rP   )-__doc__r5   r&   r?   r0   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   	getLoggerrM   r#   r   r/   r4   r<   rB   rH   objectrI   rP   r   r   r   r   <module>   s4   
,