Re4X @sMddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl mZmZmZddlmZmZddlmZmZmZmZmZmZmZmZmZddlmZddl m!Z!ddl"m#Z#m$Z$ddl%m&Z&dd l'm(Z(m)Z)dd l*m+Z+dd l,m-Z-m.Z.dd l/m0Z0dd l1m2Z2ddddddddddg Z3ddZ4Gddde(Z5Gddde6Z7Gddde&Z8Gd d!d!e#j9Z:ddd"dZ;ej<d#ej=Z>ej<d$ej=Z?d%dZ@d&dZAej<d'ej=ZBej<d(ej=ZCd)dZDd*dZEd+d,dZFd-d.ZGd/dZHd0dZId1d2ZJd3d4ZKd5d6ZLd7d8ZMddd9dZNdd:dZOdS);N)urlliburlparse raw_input)InstallationError HashMismatch) splitextrmtree format_size display_path backup_dirask_path_exists unpack_filecreate_download_cache_foldercache_download)vcs)logger)requestssix) BaseAdapter)AuthBase HTTPBasicAuth)IncompleteRead) InvalidURLChunkedEncodingError)Response)CaseInsensitiveDictget_file_contentis_url url_to_path path_to_urlis_archive_fileunpack_vcs_linkunpack_file_url is_vcs_url is_file_urlunpack_http_urlcCs5tj}|dkr'tj}n|dkrdtjjtjjtjjf}tjjdkrdj |tjjg}qn<|dkrtj}n!|dkrtj}nd}ytj }tj }Wnt k rd}d}YnXd j d t jd ||fd ||fgS) z,Return a string representing the user agent.CPythonPyPyz%s.%s.%sfinalJython IronPythonUnknown zpip/%sz%s/%s)platformpython_implementationpython_versionsyspypy_version_infomajorminormicro releaseleveljoinsystemreleaseIOErrorpip __version__)_implementation_implementation_versionp_system p_releaserA'/tmp/pip-ztkk0jow-build/pip/download.py user_agent$s2           rCc@sCeZdZdddZddZddZdd Zd S) MultiDomainBasicAuthTcCs||_i|_dS)N) prompting passwords)selfrErArArB__init__Hs zMultiDomainBasicAuth.__init__cCstj|j}|jjddd}tj|dd|f|dd|_|jj|d\}}|dkr|j|j\}}n|s|r||f|j||jddS|dfSdS)NrIrJr:)NN)rsplitrP)rGrOuserinforArArBrSs    z&MultiDomainBasicAuth.parse_credentialsN)__name__ __module__ __qualname__rHrZrUrSrArArArBrDFs   "rDc@sOeZdZddZddZdddddZed d ZdS) LocalFSResponsecCs ||_dS)N)fileobj)rGrorArArBrHszLocalFSResponse.__init__cCst|j|S)N)getattrro)rGnamerArArB __getattr__szLocalFSResponse.__getattr__NFcCs|jj|S)N)roread)rGamtdecode_content cache_contentrArArBrsszLocalFSResponse.readcs9GdddtGfdddt}|S)Nc@s(eZdZddZddZdS)z7LocalFSResponse._original_response..FakeMessagecSsgS)NrA)rGheaderrArArB getheadersszBLocalFSResponse._original_response..FakeMessage.getheaderscSsgS)NrA)rGrwdefaultrArArBget_allsz?LocalFSResponse._original_response..FakeMessage.get_allN)rkrlrmrxrzrArArArB FakeMessages  r{cs(eZdZefddZdS)z8LocalFSResponse._original_response..FakeResponsecsS)NrA)rG)r{rArBmsgsz.FakeResponse.msgN)rkrlrmpropertyr|rA)r{rArB FakeResponses r~)object)rGr~rA)r{rB_original_responsesz"LocalFSResponse._original_response)rkrlrmrHrrrsr}rrArArArBrns   rnc@s7eZdZdddddddZddZdS)LocalFSAdapterNc Cstj|j}|jjdkr=td|jntj|ddd|dd}t|} t} d| _|| _t j | } t j j | jdd} titj| d pd d 6| jd 6| d 6| _tt| d| _| jj| _| S)N localhostz)Invalid URL %r: Only localhost is allowedrJr)rKusegmtTrz text/plainz Content-TypezContent-Lengthz Last-Modifiedrb)r))rrNrOlowerrrQrrr[osstatemailutils formatdatest_mtimer mimetypes guess_typest_sizeheadersrnopenr^close) rGr`streamtimeoutverifycertproxies parsed_urlreal_urlpathnamerestatsmodifiedrArArBrbs$+     zLocalFSAdapter.sendcCsdS)NrA)rGrArArBrszLocalFSAdapter.close)rkrlrmrbrrArArArBrs  rcs:eZdZdZfddZfddZS) PipSessionNcsLtt|j||t|jdCs zpath_to_url..zfile:///) rrnormpathabspath splitdriverPsepr7r)rdrivefilepathrNrArArBr;scCs0d }t|dj}||kr,d Sd S) z9Return True if `name` is a considered as an archive file..zip.tar.gz.tar.bz2.tgz.tar .pybundle.whlrJTF)rrrrrrr)rr)rqarchivesextrArArBr Is  FcCs3t|}|r"|j|n |j|dS)N)_get_used_vcs_backendexportunpack)linklocation only_download vcs_backendrArArBr!Ss cCs=x6tjD]+}|j|jkr ||j}|Sq WdS)N)rbackendsrschemesrN)rbackendrrArArBr[srcCstt|S)N)boolr)rrArArBr#bscCs|jjjdS)Nzfile:)rNrr)rrArArBr$fscCs|jtj|jjkrQtjd|j||jftd|n|j|jkrtjd||j|jftd|j|fndS)NzPHash digest size of the package %d (%s) doesn't match the expected hash name %s!z!Hash name mismatch for package %sz?Hash of the package %s (%s) doesn't match the expected hash %s!zBad %s hash for package %s) digest_sizehashlibnew hash_namerfatalr hexdigesthash) download_hashrrArArB _check_hashjs  rc Csytj|j}Wn6ttfk rNtjd|j|fdSYnXt|d}x*|jd}|szPn|j |qaW|j |S)Nz'Unsupported hash name %s for package %sri) rrr ValueError TypeErrorrwarnrrsupdater) target_filerrfpchunkrArArB_get_hash_from_fileus  rc st|d}d}|jro|jroytj|j}Wqotk rktjd|j|fYqoXnytj d}Wn!tt t fk rd}YnXd}|dkp| }|j }z |r|rtj d|t|fq tj d|ntjd |tjd |fd d } x| d D]} |t| 7}|r|stjdt|qtjdd||t|fn|dk r|j| n|j| qPW|jWd|rtjdt|nX|S)Nwbz'Unsupported hash name %s for package %szcontent-lengthr(izDownloading %s (%s): zDownloading %s (unknown size): zDownloading %szDownloading from URL %sc3sydy,x%jj|ddD] }|VqWWn1tk rb}zt|WYdd}~XnXWn:tk rx%jj|}|sPn|VqwWYnXdS)NruF)r^rrrAttributeErrorrs) chunk_sizerr)rerArB resp_reads  # z _download_url..resp_readiz%sz %3i%% %sdz %s downloadedi@)rrrrrrrrintrKeyErrorrshow_urlstart_progressr notifyinfor show_progressrwriter end_progress) rer temp_locationrr total_length downloadedrrrrrA)rerB _download_urlsF "   ( rcCsd}tjj||j}tjj|rtdt|d }|dkr^d}q|dkrtjdt|tj |q|dkrt |}tjdt|t|ft j ||qn|rt j ||tjd t|ndS) NTz/The file %s exists. (i)gnore, (w)ipe, (b)ackup iwbFz Deleting %szBacking up %s to %szSaved %s)rrr)rrr7filenameexistsr r rrremover shutilmovecopyr)r r content_typerrdownload_locationrL dest_filerArArB _copy_files&      rc)Cs|dkrt}ntjdd}d}|jjddd}d}d} d} d} |rtjj|tj |d} | d} tjj | otjj | }tjj |st |qnd} |rtjj||j } tjj | sd} qn| r| }tj| d} tjd | |jrt||} yt| |Wqtk rtjd |d}tj| d} YqXqn|r| rt| }|jj} WdQX| }tjd | |jr|jrt| |} yt| |Wqtk rtjd |d}tj| tj| d}YqXqn|s-y#|j|d d}|jWnHtjk r}z%tj d|j!j"|fWYdd}~XnX|j#jdd} |j }|j#jd}|r^t$j%|\}}|jdpX|}nt&|d}|stj'| }|r||7}qn| r|j|jkrtjj&|jd}|r||7}qntjj||}t(|||} |jr-|jr-t| |q-n|rP| rPt)||| |nt*||| || r| rt+| || n|p| stj|ntj,|dS)Nz-unpackzpip-#rJrFr)z .content-typezFile was already downloaded %sz;Previously-downloaded file %s has bad hash, re-downloading.zUsing download cache from %sz,Cached file %s has bad hash, re-downloading.rTzHTTP error %s while getting %sz content-typezcontent-dispositionr )-rtempfilemkdtemprNrPrrr7rrr isdirrr rrrrrrrrrunlinkrrsstriprrRrr HTTPErrorrrLr[rcgi parse_headerrguess_extensionrrr rrmdir)rrdownload_cache download_dirrtemp_dirr target_urlalready_cached cache_filecache_content_type_fileralready_downloadedrrreexcr content_dispositiontypeparamsrrArArBr%s                 c Cst|j}d}tjj|r`tjj|rFt|ntj||dddS|jrt ||}t ||n|rMtjj ||j }tjj |rMtj|d}tjd||jrAt ||}yt ||d}WqGtk r=tjd|tj|YqGXqJd}qMn|r\|} n|} tj| d}t| ||||r| rt| |||ndS)NFsymlinksTrzFile was already downloaded %sz;Previously-downloaded file %s has bad hash, re-downloading.)rurl_without_fragmentrrrrr copytreerrrr7r r rrrrrrrr r) rrr link_pathr%link_path_hash download_pathrr from_pathrArArBr"RsB         )Pr email.utilsrrr\rrr.rer r1rr;Zpip.backwardcompatrrrpip.exceptionsrrpip.utilrrr r r r r rrpip.vcsrpip.logr pip._vendorrrZpip._vendor.requests.adaptersrZpip._vendor.requests.authrrZpip._vendor.requests.compatrZpip._vendor.requests.exceptionsrrZpip._vendor.requests.modelsrZpip._vendor.requests.structuresr__all__rCrDrrnrSessionrrcompileIrrrr _drive_rerrr r!rr#r$rrrrr%r"rArArArBsh            @  "M#,         < y