Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
镜像
Python_Packaging_Authority
pip
提交
ffe55363
P
pip
项目概览
镜像
/
Python_Packaging_Authority
/
pip
12 个月 前同步成功
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
pip
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ffe55363
编写于
3月 19, 2020
作者:
P
Paul Moore
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Address review requirements
上级
cec27c74
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
24 addition
and
3 deletion
+24
-3
src/pip/_internal/resolution/resolvelib/candidates.py
src/pip/_internal/resolution/resolvelib/candidates.py
+15
-3
src/pip/_internal/resolution/resolvelib/provider.py
src/pip/_internal/resolution/resolvelib/provider.py
+8
-0
src/pip/_internal/resolution/resolvelib/requirements.py
src/pip/_internal/resolution/resolvelib/requirements.py
+1
-0
未找到文件。
src/pip/_internal/resolution/resolvelib/candidates.py
浏览文件 @
ffe55363
...
...
@@ -7,7 +7,7 @@ from pip._internal.utils.typing import MYPY_CHECK_RUNNING
from
.base
import
Candidate
if
MYPY_CHECK_RUNNING
:
from
typing
import
Dict
,
Optional
,
Sequence
from
typing
import
Any
,
Dict
,
Optional
,
Sequence
from
pip._internal.models.link
import
Link
from
pip._internal.operations.prepare
import
RequirementPreparer
...
...
@@ -17,7 +17,6 @@ if MYPY_CHECK_RUNNING:
from
pip._vendor.pkg_resources
import
Distribution
# Dummy to make lint pass
_CANDIDATE_CACHE
=
{}
# type: Dict[Link, Candidate]
...
...
@@ -74,9 +73,21 @@ class LinkCandidate(Candidate):
self
.
_version
=
None
# type: Optional[_BaseVersion]
self
.
_dist
=
None
# type: Optional[Distribution]
def
__eq__
(
self
,
other
):
# type: (Any) -> bool
if
isinstance
(
other
,
self
.
__class__
):
return
self
.
link
==
other
.
link
return
False
# Needed for Python 2, which does not implement this by default
def
__ne__
(
self
,
other
):
# type: (Any) -> bool
return
not
self
.
__eq__
(
other
)
@
property
def
name
(
self
):
# type: () -> str
"""The normalised name of the project the candidate refers to"""
if
self
.
_name
is
None
:
self
.
_name
=
canonicalize_name
(
self
.
dist
.
project_name
)
return
self
.
_name
...
...
@@ -101,7 +112,8 @@ class LinkCandidate(Candidate):
# These should be "proper" errors, not just asserts, as they
# can result from user errors like a requirement "foo @ URL"
# when the project at URL has a name of "bar" in its metadata.
assert
self
.
_name
is
None
or
self
.
_name
==
self
.
_dist
.
project_name
assert
(
self
.
_name
is
None
or
self
.
_name
==
canonicalize_name
(
self
.
_dist
.
project_name
))
assert
(
self
.
_version
is
None
or
self
.
_version
==
self
.
dist
.
parsed_version
)
return
self
.
_dist
...
...
src/pip/_internal/resolution/resolvelib/provider.py
浏览文件 @
ffe55363
...
...
@@ -38,6 +38,14 @@ class PipProvider(AbstractProvider):
def
get_install_requirement
(
self
,
c
):
# type: (Candidate) -> InstallRequirement
# The base Candidate class does not have an _ireq attribute, so we
# fetch it dynamically here, to satisfy mypy. In practice, though, we
# only ever deal with LinkedCandidate objects at the moment, which do
# have an _ireq attribute. When we have a candidate type for installed
# requirements we should probably review this.
#
# TODO: Longer term, make a proper interface for this on the candidate.
return
getattr
(
c
,
"_ireq"
,
None
)
def
identify
(
self
,
dependency
):
...
...
src/pip/_internal/resolution/resolvelib/requirements.py
浏览文件 @
ffe55363
...
...
@@ -48,6 +48,7 @@ class ExplicitRequirement(Requirement):
@
property
def
name
(
self
):
# type: () -> str
# No need to canonicalise - the candidate did this
return
self
.
candidate
.
name
def
find_matches
(
self
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录