Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
后端镜像
Pdm
提交
cc88d92b
P
Pdm
项目概览
后端镜像
/
Pdm
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Pdm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
cc88d92b
编写于
1月 25, 2021
作者:
F
Frost Ming
提交者:
GitHub
1月 25, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #237 from frostming/feature/236
change dependencies to a list of PEP 508 strings
上级
fb24d5ac
691b5e89
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
13 addition
and
15 deletion
+13
-15
news/236.feature
news/236.feature
+1
-0
pdm/cli/utils.py
pdm/cli/utils.py
+8
-9
pdm/resolver/core.py
pdm/resolver/core.py
+1
-1
pdm/resolver/providers.py
pdm/resolver/providers.py
+3
-5
未找到文件。
news/236.feature
0 → 100644
浏览文件 @
cc88d92b
Change
the
dependencies
of
a
package in the lock file to a list of PEP 508 strings
pdm/cli/utils.py
浏览文件 @
cc88d92b
...
...
@@ -15,7 +15,7 @@ from resolvelib.structs import DirectedGraph
from
pdm.exceptions
import
NoPythonVersion
,
ProjectError
from
pdm.formats
import
FORMATS
from
pdm.formats.base
import
make_inline_table
from
pdm.formats.base
import
make_
array
,
make_
inline_table
from
pdm.iostream
import
stream
from
pdm.models.environment
import
WorkingSet
from
pdm.models.requirements
import
Requirement
,
strip_extras
...
...
@@ -26,6 +26,7 @@ if TYPE_CHECKING:
from
typing
import
Dict
,
Iterable
,
List
,
Optional
,
Tuple
from
resolvelib.resolvers
import
RequirementInformation
,
ResolutionImpossible
from
tomlkit.container
import
Container
from
pdm.models.candidates
import
Candidate
...
...
@@ -322,7 +323,11 @@ def format_reverse_dependency_graph(project: Project, graph: DirectedGraph) -> s
return
""
.
join
(
content
).
strip
()
def
format_lockfile
(
mapping
,
fetched_dependencies
,
summary_collection
):
def
format_lockfile
(
mapping
:
Dict
[
str
,
Candidate
],
fetched_dependencies
:
Dict
[
str
,
List
[
Requirement
]],
summary_collection
:
Dict
[
str
,
str
],
)
->
Container
:
"""Format lock file from a dict of resolved candidates, a mapping of dependencies
and a collection of package summaries.
"""
...
...
@@ -332,13 +337,7 @@ def format_lockfile(mapping, fetched_dependencies, summary_collection):
base
=
tomlkit
.
table
()
base
.
update
(
v
.
as_lockfile_entry
())
base
.
add
(
"summary"
,
summary_collection
[
strip_extras
(
k
)[
0
]])
deps
=
tomlkit
.
table
()
for
r
in
fetched_dependencies
[
k
].
values
():
name
,
req
=
r
.
as_req_dict
()
if
getattr
(
req
,
"items"
,
None
)
is
not
None
:
deps
.
add
(
name
,
make_inline_table
(
req
))
else
:
deps
.
add
(
name
,
req
)
deps
=
make_array
([
r
.
as_line
()
for
r
in
fetched_dependencies
[
k
]],
True
)
if
len
(
deps
)
>
0
:
base
.
add
(
"dependencies"
,
deps
)
packages
.
append
(
base
)
...
...
pdm/resolver/core.py
浏览文件 @
cc88d92b
...
...
@@ -123,7 +123,7 @@ def extract_metadata(result: Result) -> Dict[str, Metaset]:
def
resolve
(
resolver
:
Resolver
,
requirements
:
List
[
Requirement
],
requires_python
:
PySpecSet
)
->
Tuple
[
Dict
[
str
,
Candidate
],
Dict
[
str
,
Dict
[
str
,
Requirement
]],
Dict
[
str
,
str
]]:
)
->
Tuple
[
Dict
[
str
,
Candidate
],
Dict
[
str
,
List
[
Requirement
]],
Dict
[
str
,
str
]]:
"""Core function to perform the actual resolve process.
Return a tuple containing 3 items:
...
...
pdm/resolver/providers.py
浏览文件 @
cc88d92b
...
...
@@ -21,7 +21,7 @@ class BaseProvider(AbstractProvider):
self
.
allow_prereleases
=
allow_prereleases
# Root allow_prereleases value
self
.
requires_python_collection
=
{}
# type: Dict[Optional[str], PySpecSet]
self
.
summary_collection
=
{}
# type: Dict[str, str]
self
.
fetched_dependencies
=
{}
# type: Dict[str,
Dict[str, List[Requirement]
]]
self
.
fetched_dependencies
=
{}
# type: Dict[str,
List[Requirement
]]
def
identify
(
self
,
req
:
Union
[
Requirement
,
Candidate
])
->
Optional
[
str
]:
return
req
.
identify
()
...
...
@@ -75,7 +75,7 @@ class BaseProvider(AbstractProvider):
# Filter out incompatible dependencies(e.g. functools32) early so that
# we don't get errors when building wheels.
valid_deps
=
[]
valid_deps
:
List
[
Requirement
]
=
[]
for
dep
in
deps
:
if
(
dep
.
requires_python
&
requires_python
&
self
.
requires_python
...
...
@@ -85,9 +85,7 @@ class BaseProvider(AbstractProvider):
valid_deps
.
append
(
dep
)
candidate_key
=
self
.
identify
(
candidate
)
self
.
fetched_dependencies
[
candidate_key
]
=
{
self
.
identify
(
r
):
r
for
r
in
valid_deps
}
self
.
fetched_dependencies
[
candidate_key
]
=
valid_deps
self
.
summary_collection
[
candidate
.
req
.
key
]
=
summary
self
.
requires_python_collection
[
candidate
.
req
.
key
]
=
requires_python
return
valid_deps
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录