<!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>

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 rd 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) Gd d   d e*  Z+ Gd 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  SWn t t t f k
 r6 d  SYn Xd  S)Nzcontent-length)intheaders
ValueErrorKeyError	TypeError)resp r   /builddir/build/BUILDROOT/alt-python35-pip-20.2.4-5.el8.x86_64/opt/alt/python35/lib/python3.5/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	 |   r| t
 j d |  n t
 j d |  t
 j   t j k r d } n? t	 |   r d } n* | s d } n | d	 k r d } n d } t |  t  } | s| St | 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  } | r6 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  } | r0 t | |  } t |  d } | st t j |  j j d d   } | rt | | 7} | r | j |  j k r t 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   sB   | j  j d d  d } |  j | d t d d } t |  | S)N#r=   r   r   streamT)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   s   y t  |  j |  } WnV t k
 rn } z6 | j d  k	 s@ t  t j d | j j |    WYd  d  } ~ Xn Xt | 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   ,