3 ”Re ã @ s* d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl m Z ddlmZ ddl mZ ddlmZmZmZ dd lmZmZmZ dd lmZ erÌddlmZmZ ddlmZ dd lmZ ddlm Z ej!e"ƒZ#dd„ Z$dd„ Z%dd„ Z&dd„ Z'dd„ Z(dd„ Z)G dd„ de*ƒZ+G dd„ de*ƒZ,dS )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. yt | jd ƒS tttfk r( d S X d S )Nzcontent-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 | ƒ}|jtjkr|j}n|j}t|ƒ}|r>dj|t|ƒƒ}t | ƒrTt jd|ƒ nt jd|ƒ t jƒ t jkrtd}n*t | ƒr‚d}n|sŒd}n|d kršd}nd}t| tƒ}|s°|S t||d�|ƒS ) Nz{} ({})zUsing cached %szDownloading %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 jj| ƒ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| ƒ\}}|jdƒ}|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<