Viewing File: /opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyc

ó
“tÆ_c@s_ddlZddlZddlmZddlmZmZddlmZddl	m
Z
ddlmZm
Z
ddlmZmZddlmZmZdd	lmZdd
lmZddlmZmZddlmZdd
lmZddlm Z m!Z!er­ddl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(ddl	m)Z)ddl*m+Z+ddl,m-Z-ddl.m/Z/ddlm0Z0ddl1m2Z2e(d&Z3nej4e5ƒZ6d„Z7d„Z8d„Z9de fd„ƒYZ:de:fd„ƒYZ;de:fd „ƒYZ<de fd!„ƒYZ=d"e fd#„ƒYZ>d$e fd%„ƒYZ?dS('iÿÿÿÿN(tsuppress(tInvalidSpecifiertSpecifierSet(tcanonicalize_name(tVersion(t	HashErrortMetadataInconsistent(tHTTPRangeRequestUnsupportedtdist_from_wheel_url(tinstall_req_from_editabletinstall_req_from_line(tInstallRequirement(t
indent_log(tdist_is_editabletnormalize_version_info(tget_requires_python(tMYPY_CHECK_RUNNINGi(t	Candidatetformat_name(tAnyt	FrozenSettIterabletOptionaltTupletUnion(t_BaseVersion(tDistribution(tAbstractDistribution(tLink(tRequirement(tFactorytAlreadyInstalledCandidatetEditableCandidatet
LinkCandidatecCs°|jstdƒ‚|jr1t|jƒ}n	|j}t|d|jd|jd|jd|j	d|j
dtd|jd	|j
d
|jƒƒ}|j|_||_|S(Nstemplate is editablet
user_suppliedt
comes_fromt
use_pep517tisolatedt
constrainttoptionstinstall_optionstglobal_optionsthashes(teditabletAssertionErrortreqtstrturlR
R"R#R$R%R&tdictR(R)thash_optionst
original_linktlink(R3ttemplatetlinetireq((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pytmake_install_req_from_link0s$										cCss|jstdƒ‚t|jd|jd|jd|jd|jd|jdt	d|j
d	|jd
|jƒƒS(Nstemplate not editableR"R#R$R%R&R'R(R)R*(
R+R,R	R/R"R#R$R%R&R0R(R)R1(R3R4((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pytmake_install_req_from_editableIs								cCsÍt|jƒ}|jr*t|jƒ}n9|jrNdj||jjƒ}ndj||jƒ}t|d|j	d|j
d|jd|jd|j
dtd	|jd
|jd|jƒƒ}||_|S(Ns{} @ {}s{}=={}R"R#R$R%R&R'R(R)R*(Rtproject_nameR-R.R3tformatR/tparsed_versionR
R"R#R$R%R&R0R(R)R1tsatisfied_by(tdistR4R9R5R6((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pytmake_install_req_from_dist[s&										t"_InstallRequirementBackedCandidatecBsËeZdZeZddd„Zd„Zd„Zd„Z	d„Z
ed„ƒZed„ƒZ
ed„ƒZd	„Zd
„Zd„Zd„Zd
„Zed„ƒZd„Zd„Zd„ZRS(s÷A candidate backed by an ``InstallRequirement``.

    This represents a package request with the target not being already
    in the environment, and needs to be fetched and installed. The backing
    ``InstallRequirement`` is responsible for most of the leg work; this
    class exposes appropriate information to the resolver.

    :param link: The link passed to the ``InstallRequirement``. The backing
        ``InstallRequirement`` will use this link to fetch the distribution.
    :param source_link: The link this candidate "originates" from. This is
        different from ``link`` when the link is found in the wheel cache.
        ``link`` would point to the wheel cache, while this points to the
        found remote link (e.g. from pypi.org).
    cCsL||_||_||_||_||_||_d|_t|_	dS(N(
t_linkt_source_linkt_factoryt_ireqt_namet_versiontNonet_disttFalset	_prepared(tselfR3tsource_linkR6tfactorytnametversion((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyt__init__†s
							cCs%djd|jjdt|jƒƒS(Ns{class_name}({link!r})t
class_nameR3(R:t	__class__t__name__R.R@(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyt__repr__™s	cCst|j|jfƒS(N(thashRQR@(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyt__hash__ scCs&t||jƒr"|j|jkStS(N(t
isinstanceRQR@RH(RJtother((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyt__eq__¤scCs|j|ƒS(N(RX(RJRW((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyt__ne__«scCs|jS(N(RA(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRK¯scCs.|jdkr't|jjƒ|_n|jS(s:The normalised name of the project the candidate refers toN(RDRFRR=R9(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRM´scCs(|jdkr!|jj|_n|jS(N(RERFR=R;(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRN¼scCs4dj|j|j|jjr*|jjn|jƒS(Ns{} {} (from {})(R:RMRNR@tis_filet	file_path(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pytformat_for_errorÃscCstdƒ‚dS(NsOverride in subclass(tNotImplementedError(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyt_prepare_abstract_distributionËscCs—|j}t|jƒ}|jdk	rQ|j|krQt|jd|jƒ‚n|j}|jdk	r“|j|kr“t|jd|j	ƒ‚ndS(s:Check for consistency of project name and version of dist.RMRNN(
RGRR9RDRFRRCR;RERN(RJR=RMRN((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyt_check_metadata_consistencyÏs		cCsƒ|jr
dSy|jƒ}Wn"tk
rA}|j|_‚nX|jƒ|_|jdk	sltdƒ‚|j	ƒt
|_dS(NsDistribution already installed(RIR^RRCR-tget_pkg_resources_distributionRGRFR,R_tTrue(RJt
abstract_distte((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyt_prepareÜs	
cCs$|jj}|jj}|jjo.|jj}|r|r|jr|jdk	s\t	‚t
jd|jj
pw|jƒtƒ{ttƒht
jd|j|jƒ|jjjddƒd}|jj}t|j||ƒ|_|jƒWdQXWdQXn|jdkr |jƒndS(s-Fetch metadata, using lazy wheel if possible.s
Collecting %ss+Obtaining dependency information from %s %st#iiN(RBtpreparertuse_lazy_wheelR@tis_wheelRZtrequire_hashesRDRFR,tloggertinfoRCR-RRRRER/tsplitt
downloadert_sessionRRGR_Rd(RJRfRgtremote_wheelR/tsession((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyt_fetch_metadataës"

cCs#|jdkr|jƒn|jS(N(RGRFRq(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR=s
cCsrt|jƒ}|dkrdSyt|ƒ}Wn0tk
ra}d}tj||j|ƒdSX|jj	|ƒS(Ns-Package %r has an invalid Requires-Python: %s(
RR=RFRRRjtwarningRMRBt make_requires_python_requirement(RJtrequires_pythontspecRctmessage((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyt_get_requires_python_dependencysccsX|r|jjƒnd}x+|D]#}|jjt|ƒ|jƒVq"W|jƒVdS(N((R=trequiresRBtmake_requirement_from_specR.RCRw(RJt
with_requiresRxtr((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pytiter_dependenciess
!cCs|jƒ|jS(N(RdRC(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pytget_install_requirements
N(RRt
__module__t__doc__RHtis_installedRFRORSRURXRYtpropertyRKRMRNR\R^R_RdRqR=RwR|R}(((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR?us(							
			
	cBs&eZeZddd„Zd„ZRS(c	CsÀ|}|j||ƒ}|dk	rCtjd|jƒ|j}nt||ƒ}|dk	r…|jr…|j|jkr…t|_	nt
t|ƒjd|d|d|d|d|d|ƒdS(NsUsing cached wheel link: %sR3RKR6RLRMRN(
tget_wheel_cache_entryRFRjtdebugR3R7t
persistentR2Ratoriginal_link_is_in_wheel_cachetsuperR!RO(	RJR3R4RLRMRNRKtcache_entryR6((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRO%s"		cCs|jjj|jdtƒS(Ntparallel_builds(RBRftprepare_linked_requirementRCRa(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR^CsN(RRR~RHtis_editableRFROR^(((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR!"scBs&eZeZddd„Zd„ZRS(c
CsDtt|ƒjd|d|dt||ƒd|d|d|ƒdS(NR3RKR6RLRMRN(R†R ROR8(RJR3R4RLRMRN((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyROMs	cCs|jjj|jƒS(N(RBRftprepare_editable_requirementRC(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR^_sN(RRR~RaRŠRFROR^(((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR JscBs‰eZeZdZd„Zd„Zd„Zd„Z	d„Z
ed„ƒZed„ƒZ
ed„ƒZd„Zd	„Zd
„ZRS(cCsD||_t||ƒ|_||_d}|jj|j|ƒdS(Nsalready satisfied(R=R>RCRBRftprepare_installed_requirement(RJR=R4RLtskip_reason((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyROhs
		cCsdjd|jjd|jƒS(Ns{class_name}({distribution!r})RPtdistribution(R:RQRRR=(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRSzs	cCst|j|j|jfƒS(N(RTRQRMRN(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRUscCs8t||jƒr4|j|jko3|j|jkStS(N(RVRQRMRNRH(RJRW((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRX…s"cCs|j|ƒS(N(RX(RJRW((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRYŒscCst|jjƒS(N(RR=R9(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRMscCs
|jjS(N(R=R;(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRN•scCs
t|jƒS(N(R
R=(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRŠšscCsdj|j|jƒS(Ns{} {} (Installed)(R:RMRN(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR\ŸsccsE|s
dSx4|jjƒD]#}|jjt|ƒ|jƒVqWdS(N(R=RxRBRyR.RC(RJRzR{((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR|£scCsdS(N(RF(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR}ªsN(RRR~RaR€RFRKRORSRURXRYRRMRNRŠR\R|R}(((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRds							tExtrasCandidatecBs¡eZdZd„Zd„Zd„Zd„Zd„Zed„ƒZ	ed„ƒZ
d„Zed	„ƒZed
„ƒZ
ed„ƒZd„Zd
„ZRS(síA candidate that has 'extras', indicating additional dependencies.

    Requirements can be for a project with dependencies, something like
    foo[extra].  The extras don't affect the project/version being installed
    directly, but indicate that we need additional dependencies. We model that
    by having an artificial ExtrasCandidate that wraps the "base" candidate.

    The ExtrasCandidate differs from the base in the following ways:

    1. It has a unique name, of the form foo[extra]. This causes the resolver
       to treat it as a separate node in the dependency graph.
    2. When we're getting the candidate's dependencies,
       a) We specify that we want the extra dependencies as well.
       b) We add a dependency on the base candidate.
          See below for why this is needed.
    3. We return None for the underlying InstallRequirement, as the base
       candidate will provide it, and we don't want to end up with duplicates.

    The dependency on the base candidate is needed so that the resolver can't
    decide that it should recommend foo[extra1] version 1.0 and foo[extra2]
    version 2.0. Having those candidates depend on foo=1.0 and foo=2.0
    respectively forces the resolver to recognise that this is a conflict.
    cCs||_||_dS(N(tbasetextras(RJRR‘((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyROÇs	cCs(djd|jjd|jd|jƒS(Ns.{class_name}(base={base!r}, extras={extras!r})RPRR‘(R:RQRRRR‘(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRSÐs		cCst|j|jfƒS(N(RTRR‘(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRUØscCs8t||jƒr4|j|jko3|j|jkStS(N(RVRQRR‘RH(RJRW((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRXÜs"cCs|j|ƒS(N(RX(RJRW((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRYãscCst|jj|jƒS(s:The normalised name of the project the candidate refers to(RRRMR‘(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRMçscCs
|jjS(N(RRN(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRNíscCs+dj|jjƒdjt|jƒƒƒS(Ns{} [{}]s, (R:RR\tjointsortedR‘(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR\òscCs
|jjS(N(RR€(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR€ùscCs
|jjS(N(RRŠ(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRŠþscCs
|jjS(N(RRK(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRKsccsæ|jj}|j|jƒV|s'dS|jj|jjjƒ}|jj|jjjƒ}x3t|ƒD]%}tj	d|jj
|j|ƒqjWxL|jjj|ƒD]5}|j
t|ƒ|jj|ƒ}|r©|Vq©q©WdS(Ns%%s %s does not provide the extra '%s'(RRBtmake_requirement_from_candidateR‘tintersectionR=t
differenceR“RjRrRMRNRxRyR.RC(RJRzRLtvalid_extrastinvalid_extrastextraR{trequirement((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR|s"	cCsdS(N(RF(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR}%s(RRR~RRORSRURXRYRRMRNR\R€RŠRKR|R}(((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR¯s								tRequiresPythonCandidatecBsVeZeZdZd„Zed„ƒZed„ƒZ	d„Z
d„Zd„ZRS(cCsN|dk	rt|ƒ}n
tjd }tdjd„|Dƒƒƒ|_dS(Nit.css|]}t|ƒVqdS(N(R.(t.0tc((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pys	<genexpr>7s(RFRtsystversion_infoRR’RE(RJtpy_version_infoR ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRO1s
cCsdS(Ns<Python from Requires-Python>((RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRM=scCs|jS(N(RE(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyRNCscCsdj|jƒS(Ns	Python {}(R:RN(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR\HscCsdS(N(((RJRz((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR|LscCsdS(N(RF(RJ((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR}PsN(
RRR~RHR€RFRKRORRMRNR\R|R}(((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyR›-s			(sAlreadyInstalledCandidatesEditableCandidates
LinkCandidate(@tloggingRŸtpip._vendor.contextlib2Rt pip._vendor.packaging.specifiersRRtpip._vendor.packaging.utilsRtpip._vendor.packaging.versionRtpip._internal.exceptionsRRt pip._internal.network.lazy_wheelRRtpip._internal.req.constructorsR	R
tpip._internal.req.req_installRtpip._internal.utils.loggingRtpip._internal.utils.miscR
Rtpip._internal.utils.packagingRtpip._internal.utils.typingRRRRttypingRRRRRRRtpip._vendor.pkg_resourcesRtpip._internal.distributionsRtpip._internal.models.linkRRRLRt
BaseCandidatet	getLoggerRRRjR7R8R>R?R!R RRR›(((s_/opt/alt/python35/lib/python3.5/site-packages/pip/_internal/resolution/resolvelib/candidates.pyt<module>sH.
			­(K~
Back to Directory File Manager