B Re@s*dZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z ddl mZddlmZmZmZdd lmZmZmZdd lmZerdd lmZmZdd lmZdd lmZddlm Z e!e"Z#ddZ$ddZ%ddZ&ddZ'ddZ(ddZ)Gddde*Z+Gddde*Z,dS)z)Download files with progress indicators. N)CONTENT_CHUNK_SIZE)DownloadProgressProvider)NetworkConnectionError)PyPI) is_from_cache)HEADERSraise_for_statusresponse_chunks) format_sizeredact_auth_from_urlsplitext)MYPY_CHECK_RUNNING)IterableOptional)Response)Link) PipSessionc Cs.yt|jdStttfk r(dSXdS)Nzcontent-length)intheaders ValueErrorKeyError TypeError)respr/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%srcCst|}|jtjkr|j}n|j}t|}|r>d|t|}t |rTt d|n t d|t t jkrtd}n*t |rd}n|sd}n|dkrd}nd}t|t}|s|St||d|S)Nz{} ({})zUsing cached %szDownloading %sFTi@)max)rnetlocrfile_storage_domainshow_urlurl_without_fragmentr formatr rloggerinfogetEffectiveLevelloggingINFOr rr)rlink progress_bar total_lengthurl logged_url show_progresschunksrrr_prepare_download-s2   r.cCs tj|S)zJ Sanitize the "filename" value from a Content-Disposition header. )ospathbasename)filenamerrrsanitize_content_filenameYsr3cCs,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_headergetr3)content_dispositiondefault_filename_typeparamsr2rrrparse_content_dispositionas  r;cCs|j}|jd}|r t||}t|d}|sPt|jdd}|rP||7}|s~|j|jkr~tj |jd}|r~||7}|S)zoGet an ideal filename from the given HTTP response, falling back to the link filename if not provided. zcontent-dispositionz content-type) r2rr6r;r mimetypesguess_extensionr*r/r0)rr'r2r7extrrr_get_http_response_filenameps   rAcCs.|jddd}|j|tdd}t||S)N#r<rT)rstream)r*splitr6rr)sessionr' target_urlrrrr_http_get_downloadsrGc@seZdZddZdS)DownloadcCs||_||_||_dS)N)responser2r-)selfrIr2r-rrr__init__szDownload.__init__N)__name__ __module__ __qualname__rKrrrrrHsrHc@seZdZddZddZdS) DownloadercCs||_||_dS)N)_session _progress_bar)rJrEr(rrrrKszDownloader.__init__c Csryt|j|}WnDtk rT}z&|jdk s0ttd|jj|Wdd}~XYnXt|t ||t |||j S)NzHTTP error %s while getting %s) rGrPrrIAssertionErrorr"critical status_coderHrAr.rQ)rJr'rerrr__call__szDownloader.__call__N)rLrMrNrKrVrrrrrOs rO)-__doc__r4r%r>r/Zpip._vendor.requests.modelsrpip._internal.cli.progress_barsrpip._internal.exceptionsrpip._internal.models.indexrpip._internal.network.cacherpip._internal.network.utilsrrr pip._internal.utils.miscr r r pip._internal.utils.typingr typingrrrpip._internal.models.linkrpip._internal.network.sessionr getLoggerrLr"rr.r3r;rArGobjectrHrOrrrrs4          ,