U n a}@s"dZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z ddl mZddlmZdd lmZmZmZdd lmZerdd lmZmZdd lmZdd lmZddlmZee Z!ddZ"ddZ#ddZ$ddZ%ddZ&ddZ'Gddde(Z)Gddde(Z*dS)z)Download files with progress indicators. N)requests)CONTENT_CHUNK_SIZE)DownloadProgressProvider)PyPI) is_from_cache)response_chunks) format_sizeredact_auth_from_urlsplitext)MYPY_CHECK_RUNNING)IterableOptional)Response)Link) PipSessionc Cs2zt|jdWStttfk r,YdSXdS)Nzcontent-length)intheaders ValueErrorKeyError TypeError)respr_C:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-6mt8ur68\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 formatrrloggerinfogetEffectiveLevelloggingINFOrrr)rlink progress_bar total_lengthurl logged_url show_progresschunksrrr_prepare_download)s8   r,cCs tj|S)zJ Sanitize the "filename" value from a Content-Disposition header. )ospathbasename)filenamerrrsanitize_content_filenameUsr1cCs,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. r0)cgi parse_headergetr1)content_dispositiondefault_filename_typeparamsr0rrrparse_content_disposition]s  r9cCs|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) r0rr4r9r mimetypesguess_extensionr(r-r.)rr%r0r5extrrr_get_http_response_filenamels     r?cCs2|jddd}|j|ddidd}||S)N#r:rzAccept-EncodingidentityT)rstream)r(splitr4raise_for_status)sessionr% target_urlrrrr_http_get_downloadsrGc@seZdZddZdS)DownloadcCs||_||_||_dSN)responser0r+)selfrJr0r+rrr__init__szDownload.__init__N)__name__ __module__ __qualname__rLrrrrrHsrHc@seZdZddZddZdS) DownloadercCs||_||_dSrI)_session _progress_bar)rKrEr&rrrrLszDownloader.__init__c Csfzt|j|}Wn8tjk rH}ztd|jj|W5d}~XYnXt|t ||t |||j S)NzHTTP error %s while getting %s) rGrQr HTTPErrorr criticalrJ status_coderHr?r,rR)rKr%rerrr__call__s zDownloader.__call__N)rMrNrOrLrWrrrrrPs rP)+__doc__r2r#r<r- pip._vendorrZpip._vendor.requests.modelsrpip._internal.cli.progress_barsrpip._internal.models.indexrpip._internal.network.cacherpip._internal.network.utilsrpip._internal.utils.miscrr r pip._internal.utils.typingr typingr r rpip._internal.models.linkrpip._internal.network.sessionr getLoggerrMr rr,r1r9r?rGobjectrHrPrrrrs4           ,