Current File : //opt/alt/python35/lib/python3.5/site-packages/pip/index.pyc
�
�wMVc@s�dZddlZddlZddlZddlZddlZddlmZddlm Z m
Z
mZmZddl
mZmZmZmZmZddlmZmZddlmZmZmZddlmZmZdd lmZmZm Z dd
l!m"Z"m#Z#m$Z$ddl%m&Z&dgZ'd
Z(idgd6Z)de*fd��YZ+de*fd��YZ,de*fd��YZ-de*fd��YZ.e.e �Z/d�Z0d�Z1dS(s!Routines related to PyPI, indexesi����N(tlogger(tInftnormalize_nametsplitextt
is_prerelease(tDistributionNotFoundtBestVersionAlreadyInstalledtInstallationErrortInvalidWheelFilenametUnsupportedWheel(turlparseturl2pathname(t
PipSessionturl_to_pathtpath_to_url(tWheelt wheel_ext(tsupported_tagstsupported_tags_noarchtget_platform(thtml5libtrequestst
pkg_resources(tSSLErrort
PackageFinderslast.pypi.python.orgthttpsthttpcBs�eZdZeggeeedd�Zd�Zd�Zd�Z d�Z
d�Zd�Zd�Z
ejd �Zejd
ej�Zejd�Zd�Zd
�Zd�Zd�Zd�Zd�ZRS(s�This finds packages.
This is meant to match easy_install's technique for looking for
packages, by reading pages and looking for appropriate links
c
Cs�||_||_g|_t�|_t�|_||_td�|D��|_td�|D��|_ |j|j O_||_
t|_t|_
||_||_t|_| p�t�|_dS(Ncss|]}t|�VqdS(N(R(t.0tn((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pys <genexpr>4scss|]}t|�VqdS(N(R(RR((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pys <genexpr>8s(t
find_linkst
index_urlstdependency_linkst PageCachetcachetsettlogged_linkst use_wheeltallow_externaltallow_unverifiedtallow_all_externaltFalsetneed_warn_externaltneed_warn_unverifiedtallow_all_prereleasestprocess_dependency_linkst_have_warned_dependency_linksRtsession(
tselfRRR$R%R&R'R+R,R.((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt__init__&s" cCsE|jrA|js.tjdd�t|_n|jj|�ndS(Ns1.6spDependency Links processing has been deprecated with an accelerated time schedule and will be removed in pip 1.6(R,R-Rt
deprecatedtTrueRtextend(R/tlinks((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pytadd_dependency_linksSs c sGg�g���fd�}x|D]}tjj|�}|jd�}||jk}|sg|r,|rv|}nt|�}|r�tjj|�r�tjj|�}xztj|�D]}|tjj ||��q�Wq9|r
tjj|�r
�j
|�q9tjj|�r9||�q9q%�j
|�q%W��fS(st
Sort locations into "files" (archives) and "urls", and return
a pair of lists (files,urls)
csLt|�}tj|dt�ddkr;�j|�n
�j|�dS(Ntstrictis text/html(Rt mimetypest
guess_typeR(tappend(tpathturl(tfilesturls(s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt sort_pathkssfile:(tosR:texistst
startswithRR
tisdirtrealpathtlistdirtjoinR9tisfile( R/t locationsR>R;t
is_local_pathtis_file_urltis_find_linkR:titem((R<R=s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt_sort_locationsbs*
cCs�|\}}}|jr�tt�}|tkr9d}nW|jtkr�t|j�}|j�syt d|j��n|j
�}n|}||fS|SdS(sL
Function used to generate link sort key for link tuples.
The greater the return value, the more preferred it is.
If not finding wheels, then sorted by version only.
If finding wheels, then the sort order is by version, then:
1. existing installs
2. wheels ordered via Wheel.support_index_min()
3. source archives
Note: it was considered to embed this logic into the Link
comparison operators, but then different sdist links
with the same version, would have to be considered equal
isB%s is not a supported wheel for this platform. It can't be sorted.N(R$tlenRtINSTALLED_VERSIONtextRRtfilenamet supportedR tsupport_index_min(R/t
link_tupletparsed_versiontlinkt_tsupport_numtpritwheel((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt_link_sort_key�s
cCst|d|jdt�S(s�
Bring the latest version (and wheels) to the front, but maintain the existing ordering as secondary.
See the docstring for `_link_sort_key` for details.
This function is isolated for easier unit testing.
tkeytreverse(tsortedRZR2(R/tapplicable_versions((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt_sort_versions�scs��fd�}|j�d}|jr�t||jd�dt�}|j||�}|dkr�|jt|jddt��|�p�|j�q�n�dk r�g|jD]}||�^q�|j}nt|j�}xH|j D]=}�dk r�|dk r�t
j|j|�g|}q�q�W|j
|�\} }
|j
|j�\}}| j|�g|
D]}t|dt�^qn}|jg|D]}t|�^q��tjd|�x�|D]�}
tjd|
�tjt|
��}|jtkr�t|j}t|�dkrT|
|j|d|jf}tjd|�q�t|�dkr�|
|jdj|�|jf}tjd |�q�|
|jf}tjd
|�q�q�Wg}|j|jg|jD]}t|ddt�^q�|jj���g}xy|j||�D]e}tjd|j�tjd
7_z)|j|j|j|jj���Wdtjd
8_Xq(Wt|jg|jD]}t|�^q�|jj���}|rtjddjg|D]\}}}|j^q���nt|jg| D]}t|�^q |jj���}|r�|r�|r�|r�tj d|�|j!r�tjd|j�n|j"r�tjd|j�nt#d|��ng}|j$dk r|j$j%t&|j$j'fg}n|rX|j(dt�tjddjg|D]\}}}t)|j�^q,��n|||||}g}x�|D]�\}}}||j*kr�tjd||djg|j*j+D]}dj|�^q��f�q{nKt,|�r/|j-p�|j.r/|t&k r/tjd||f�q{q/n|j/|||f�q{W|j0|�}t1g|D]!\}}}|t&krb|^qb�}|r�|r�|ddt&kr�tjd|j$j'�n%tjd|j$j'|dd
f�dS|s~tj d|djg|D]\}}}|^q�f�|j!rKtjd�n|j"rktjd|j�nt#d|��n|ddt&kr�tjd|j$j'djg|dD]\}}}|^q��p�df�t2�nt|�dkr@tjd |dd
djg|D]\}}}|^q�f�n|dd}|j3dk r~|j3r~tjd!|j�n|j4dk r�|j4r�tjd"|j�n|j5r�tj6d#d$|j�n|S(%Ncs2tj|��}|jd�s.|d}n|S(Nt/(t posixpathREtendswith(R;tloc(turl_name(s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pytmkurl_pypi_url�s
ittrusteds#URLs to search for versions for %s:s* %sisS%s uses an insecure transport scheme (%s). Consider using %s if %s has it availables, sc%s uses an insecure transport scheme (%s). Consider using one of %s if %s has any of them availables*%s uses an insecure transport scheme (%s).s-fsAnalyzing links from page %sisdependency_links found: %ss<Could not find any downloads that satisfy the requirement %ssMSome externally hosted files were ignored (use --allow-external %s to allow).sWSome insecure and unverifiable files were ignored (use --allow-unverified %s to allow).s$No distributions at all found for %sR\sLocal files found: %ss-Ignoring link %s, version %s doesn't match %st,tsCIgnoring link %s, version %s is a pre-release (use --pre to allow).sLExisting installed version (%s) is most up-to-date and satisfies requirementsUExisting installed version (%s) satisfies requirement (most up-to-date version is %s)sNCould not find a version that satisfies the requirement %s (from versions: %s)sJSome externally hosted files were ignored (use --allow-external to allow).s,No distributions matching the version for %ss=Installed version (%s) is most up-to-date (past versions: %s)tnones)Using version %s (newest of versions: %s)s2%s an externally hosted file and may be unreliables,%s is potentially insecure and unverifiable.s1.7sa%s discovered using a deprecated method of parsing, in the future it will no longer be discovered(7RdtNoneRtLinkR2t _get_paget_find_url_nameRtlisttabsolute_versionsRaRER;RLRR3RtdebugR
tstrtschemetINSECURE_SCHEMESRMtnetloctwarnt_package_versionstnametlowert
_get_pagestindentR4tinfotfatalR)R*Rtsatisfied_byRTRNtversiontsortR
treqtspecsRR+tprereleasesR9R_tboolRtinternalt
verifiablet_deprecated_regexR1(R/R�tupgradeRetmain_index_urltpageR;RGR~tfile_locationst
url_locationst_flocationst_ulocationstlocationtparsedtsecure_schemestctxtfound_versionst
page_versionstdependency_versionsRUt
file_versionstinstalled_versiontall_versionsR^RTtstexisting_applicabletselected_version((Rds:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pytfind_requirement�s�
7)#
%&
;) 4< 1 !B < 4
3 C >
cCs�|jjd�s$|jd7_n|j||�}|dkrWtjd|�dSt|j�}xY|jD]N}t j
|jjd��}|t|�krptj
d||f�|SqpWdS(s�Finds the true URL name of a package, when the given name isn't quite correct.
This is usually used to implement case-insensitivity.R`sCannot fetch index base URL %sNs!Real name of requirement %s is %s(R;RbRlRjRR|RRdR4RatbasenameR:trstriptnotify(R/t index_urlRdR�R�t norm_nameRUtbase((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyRmbsc cs7t|�}t�}x|r2|jd�}||kr?qn|j|�|j||�}|dkrpqn|Vx�|j�D]�}t|j�j �}||j
kr�|jr�t|_
tjd|�q�n|jdk r|jr||jkrtjd|�t|_q�n|j|�q�WqWdS(s�
Yields (page, page_url) from the given locations, skipping
locations that have errors, and adding download/homepage links
is@Not searching %s for files because external urls are disallowed.s_Not searching %s for urls, it is an untrusted link and cannot produce safe or verifiable files.N(RnR"tpoptaddRlRjt rel_linksRRwRxR%R'R2R)RRpRfR&R*R9( R/RGR�t
all_locationstseenR�R�RUt
normalized((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyRyus6
s#egg=([^&]*)s([a-z0-9_.]+)-([a-z0-9_.-]+)s-py([123]\.?[0-9]?)$cCsqgg}}t�}xP|D]H}||kr|j|�|jrU|j|�qe|j|�qqW||S(sgReturns elements of links in order, non-egg links first, egg links second, while eliminating duplicates(R"R�tegg_fragmentR9(R/R4teggstno_eggsR�RU((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt_sort_links�s
ccs@x9|j|�D](}x|j||�D]}|Vq)WqWdS(N(R�t_link_package_versions(R/R4tsearch_nameRUtv((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyRv�scCsd}|jr|tfS|S(Ns.tar.gzs.tar.bz2s.tars.tgzs.zip(s.tar.gzs.tar.bz2s.tars.tgzs.zip(R$R(R/t
extensions((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt_known_extensions�s c
Cs�t�}d}|jr$|j}nD|j�\}}|ss||jkrotjd|�|jj|�ngS|jd�r�|d }d|}n||j �kr�||jkr�tjd||f�|jj|�ngSd|j
kr:|dkr:||jkr6tjd|�|jj|�ngS|tkrhyt|j
�}Wn#tk
r~tjd|�gSX|jj�|j�kr�tjd ||f�gS|j�s�tjd
|�gSt|dd�}|jd�r\|jd
�r\|dk r\tj|j�jjd�r\|jdt�s\tjd|�gSn|j}n|s�|j|||�}n|dkr�tjd ||f�gS|jdk r |jr t|�j�|jkr |jr tjd|�t|_gS|j dk r[|j r[t|�j�|j!kr[tjd|�t|_"gS|j#j$|�} | r�|| j%� }| j&d�}
|
t'jd kr�tjd|�gSntjd||f�t(j)|�||fgS(s�
Return an iterable of triples (pkg_resources_version_key,
link, python_version) that can be extracted from the given
link.
Meant to be overridden by subclasses, not called by clients.
sSkipping link %s; not a files.tari����s,Skipping link %s; unknown archive format: %stmacosx10s.zipsSkipping link %s; macosx10 ones1Skipping %s because the wheel filename is invalids-Skipping link %s; wrong project name (not %s)s9Skipping %s because it is not compatible with this Pythont
comes_fromtwintmacosxspypi.python.orgttagssOSkipping %s because it is a pypi-hosted binary Wheel on an unsupported platforms,Skipping %s because it is externally hosted.s<Skipping %s because it is an insecure and unverifiable file.iis/Skipping %s because Python version is incorrectsFound link %s, version: %sN(*RRjR�RR#RRpR�RbR�R:RRRPRRwRxRQtgetattrRAR
R;RtRR~t_egg_info_matchesR�RR%R'R2R)R�R&R*t_py_version_retsearchtstarttgrouptsysRt
parse_version(R/RUR�tplatformR~tegg_infoRORYR�tmatcht
py_version((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR��s�
cCs�|jj|�}|s-tjd|�dS|jd�j�}|jdd�}|j�d}|j|�r�|jd�t |�SdSdS(Ns%Could not parse version from link: %siRVt-(
t_egg_info_reR�RRpRjR�RxtreplaceRARM(R/R�R�RUR�Rwtlook_for((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR�&scCs"tj||d|jd|j�S(NR!R.(tHTMLPagetget_pageR!R.(R/RUR�((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyRl5s N(t__name__t
__module__t__doc__R2R(RjR0R5RLRZR_R�RmRytretcompilet_egg_fragment_retIR�R�R�RvR�R�R�Rl(((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyRs( * ( � )
l R cBsVeZdZdZd�Zd�Zd�Zd�Zed�Z d�Z
d�ZRS( sCache of HTML pagesicCsi|_i|_i|_dS(N(t _failurest_pagest _archives(R/((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR0As cCs|jj|d�|jkS(Ni(R�tgett
failure_limit(R/R;((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyttoo_many_failuresFscCs|jj|�S(N(R�R�(R/R;((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR�IscCs|jj|t�S(N(R�R�R((R/R;((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt
is_archiveLscCs||j|<dS(N(R�(R/R;tvalue((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pytset_is_archiveOscCs$|jj|d�||j|<dS(Ni(R�R�(R/R;tlevel((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pytadd_page_failureRscCs"x|D]}||j|<qWdS(N(R�(R/R=R�R;((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pytadd_pageUs
(R�R�R�R�R0R�R�R�R2R�R�R�(((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR <s R�cBseZdZejdej�Zejdej�ZejdejejB�Z ddd�Zd�Ze
dedd��Zedddd��Zedd ��Zed
��Zed��Zed��Zd
�Zdd�Zd�Zejdej�Zd�ZRS(s'Represents one page, along with its URLs<th>\s*home\s*pages<th>\s*download\s+urls(href=(?:"([^"]*)"|'([^']*)'|([^>\s\n]*))cCsC||_tj|jdt�|_||_||_||_dS(NtnamespaceHTMLElements(tcontentRtparseR(R�R;theadersRf(R/R�R;R�Rf((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR0bs
cCs|jS(N(R;(R/((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt__str__iscCs%|dkrt�}n|j}|jdd�d}|j|�rJdSddlm}xT|jD]I}|j�j |�rd|t
|�dkrdtjdt
��dSqdW|dk r�|j|�} | dk r�| Sny|r�|dk r
|j|�r
dSn|j}
x�dd d
ddgD]}}|
j|�r)|j|d
|�}|j�j d�rlPq�tjd||f�|dk r�|j|�ndSq)q)Wntjd|�tj|�\}}
}}}}|dkrEtjjt|��rE|jd�s|d7}ntj|d�}tjd|�n|j|didd6�}|j�|jjdd�}|j�j d�s�tjd||f�|dk r�|j|�ndS||j|j|jd|j�} Wntj k
rI}|j!j"dkrdnd}|j#||||d|d|�n�tj$k
r~}|j#||d||d|�n�tj%k
r�|j#||d|d|�ntt&k
r�}d |}|j#||||d|ddd!tj'�n-X|dk r|j(||jg| �n| SdS("Nt#iii����(t
VcsSupports+:s&Cannot look at %(scheme)s URL %(link)ss.tars.tar.gzs.tar.bz2s.tgzs.zipR.s text/htmls,Skipping page %s because of Content-Type: %ssGetting page %stfileR`s
index.htmls# file: URL is directory, getting %sR�tAcceptsContent-TypetunknownRfi�iR!R�sconnection error: %ss timed outs6There was a problem confirming the ssl certificate: %stmeth()RjRR;tsplitR�tpip.vcsR�tschemesRxRARMRRptlocalsR�R�RPRbt_get_content_typeR�R
R?R:RBRturljoinR�traise_for_statusR�ttextRfRt HTTPErrortresponsetstatus_codet_handle_failtConnectionErrortTimeoutRR�R�(tclsRUR�R!t
skip_archivesR.R;R�RrtinstRPtbad_exttcontent_typeRtR:tparamstquerytfragmenttresptexcR�treason((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR�ls� + !$
(%
icCsb|dkrtj}n|d||�|d|j|f�|dk r^|j||�ndS(NsCould not fetch URL %s: %ss7Will skip URL %s when looking for download links for %s(RjRR{R;R�(R�RUR�R;R!R�R�((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR��scCsx|dkrt�}ntj|�\}}}}}|d krFdS|j|dt�}|j�|jjdd�S(
s;Get the Content-Type of the given url, using a HEAD requestRRtftptftpsRhtallow_redirectssContent-TypeN(RRR�R( RjRR
turlsplittheadR2R�R�R�(R;R.RrRtR:R�R�R�((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR��s
cCs�t|d�s�d}g|jjd�D]*}|jdd�j�dkr(|^q(}|r�y t|djdd��}Wq�ttfk
r�d}q�Xn||_ n|j S(Nt_api_versions.//metaRwRhsapi-versioniR�(
thasattrRjR�tfindallR�Rxtintt TypeErrort
ValueErrorR(R/Rtxtmetas((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pytapi_version�s*
cCsgt|d�s`|jjd�}|dk rQ|jd�rQ|jd�|_q`|j|_n|jS(Nt _base_urls.//basethref(RR�tfindRjR�R
R;(R/R�((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pytbase_url�sccs�x�|jjd�D]�}|jd�r|jd�}|jtj|j|��}d}|jr�|jdkr�t |jd�o�d|jd�j
�k�}nt||d|�VqqWdS(sYields all links in the pages.//aRitrelR�N(R�RR�t
clean_linkR
R�RRjRR�R�Rk(R/tanchorRR;R�((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR4�s!ccs<x|j�D]}|Vq
Wx|j�D]}|Vq)WdS(N(texplicit_rel_linkstscraped_rel_links(R/R;((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR�s thomepagetdownloadccs�t|�}x�|jjd�D]�}|jd�r|jd�rt|jd�j��}||@r�|jd�}|jtj|j|��}t ||dt
�Vq�qqWdS(s)Yields all links with the given relationss.//aRRRfN(R"R�RR�R�RR
R�RRkR((R/trelsRt
found_relsRR;((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyRs
c
cs�x�|j|jfD]�}|j|j�}|s7qn|jj|jd|j��}|sdqn|jd�p�|jd�p�|jd�}|s�qn|jtj |j
|��}t||dtdt
�VqWdS(NtposiiiRfR�(t_homepage_ret_download_reR�R�t_href_retendR�RR
R�RRkR(R2(R/tregexR�t
href_matchR;((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR&s!-s[^a-z0-9$&+,/:;=?@.#%_\\|-]cCs|jjd�|�S(s�Makes sure a link is fully encoded. That is, if a ' ' shows up in
the link, it will be rewritten to %20 (while not over-quoting
% or other characters).cSsdt|jd��S(Ns%%%2xi(tordR�(R�((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt<lambda><s(t _clean_retsub(R/R;((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR7s N(RR(R�R�R�R�R�R�RRtSRRjR0R�tclassmethodR2R�tstaticmethodR�R�tpropertyRRR4R�RRR#R(((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR�Zs( [
RkcBs+eZddded�Zd�Zd�Zd�Zd�Zd�Z d�Z
d�Zd�Zd �Z
ed
��Zed��Zed��Zd
�Zed��Zed��Zejd�Zed��Zejd�Zed��Zed��Zed��Zed��ZRS(cCs1||_||_||_||_||_dS(N(R;R�R�RfR�(R/R;R�R�RfR�((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR0As
cCs.|jrd|j|jfSt|j�SdS(Ns%s (from %s)(R�R;Rq(R/((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR�Is cCsd|S(Ns <Link %s>((R/((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt__repr__OscCs|j|jkS(N(R;(R/tother((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt__eq__RscCs|j|jkS(N(R;(R/R*((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt__ne__UscCs|j|jkS(N(R;(R/R*((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt__lt__XscCs|j|jkS(N(R;(R/R*((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt__le__[scCs|j|jkS(N(R;(R/R*((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt__gt__^scCs|j|jkS(N(R;(R/R*((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt__ge__ascCs
t|j�S(N(thashR;(R/((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt__hash__dscCs\tj|j�\}}}}}tj|jd��p<|}|sXtd|j��|S(NR`sURL %r produced no filename(R
RR;RaR�R�tAssertionError(R/RVRtR:Rw((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyRPgs!cCstj|j�dS(Ni(R
RR;(R/((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyRrnscCstj|j�dS(Ni(R
RR;(R/((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR:rscCsttj|jjd���S(NR`(RRaR�R:R�(R/((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyRvscCs|j�dS(Ni(R(R/((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyROyscCs=tj|j�\}}}}}tj||||df�S(N(R
RR;t
urlunsplitRj(R/RrRtR:R�R�((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyturl_without_fragment}s!s#egg=([^&]*)cCs,|jj|j�}|sdS|jd�S(Ni(R�R�R;RjR�(R/R�((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR��ss2(sha1|sha224|sha384|sha256|sha512|md5)=([a-f0-9]+)cCs,|jj|j�}|r(|jd�SdS(Ni(t_hash_reR�R;R�Rj(R/R�((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR1�s
cCs,|jj|j�}|r(|jd�SdS(Ni(R6R�R;R�Rj(R/R�((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt hash_name�s
cCs0tj|jjdd�djdd�d�S(NR�iit?(RaR�R;R�(R/((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pytshow_url�scCs�|jpt|jdd�}|dk r�|r�y%t|jdd�}t|�}Wnttfk
rtd}nX|dks�|dkr�dS|jr�tSt Sn|dk r�t SdS(s�
Returns True if this link can be verified after download, False if it
cannot, and None if we cannot determine.
RfRiN(
RfR�R�RjRR RR1R2R((R/RfR((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR��s
N(R�R�RjR(R0R�R)R+R,R-R.R/R0R2R(RPRrR:RROR5R�R�R�R�R6R1R7R9R�(((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyRk?s0 cCs;t|�}|j}|s1t|j�d}nt|�S(sPGet a requirement from the URL, if possible. This looks for #egg
in the URLi(RkR�RRPtpackage_to_requirement(R;RUR�((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pytget_requirement_from_url�s
cCsatjd|�}|r9|jd�}|jd�}n|}d}|rYd||fS|SdS(s)Translate a name like Foo-1.2 to Foo==1.3s^(.*?)-(dev|\d.*)iiRhs%s==%sN(R�R�R�(tpackage_nameR�RwR~((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyR:�s(2R�R�R?R�R7Ratpip.logRtpip.utilRRRRtpip.exceptionsRRRRR tpip.backwardcompatR
Rtpip.downloadRR
Rt pip.wheelRRtpip.pep425tagsRRRtpip._vendorRRRtpip._vendor.requests.exceptionsRt__all__tDEFAULT_MIRROR_HOSTNAMERstobjectRR R�RkRNR;R:(((s:/opt/alt/python35/lib/python3.5/site-packages/pip/index.pyt<module>s6"(
����