Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
后端镜像
Pdm
提交
ef6d7368
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,发现更多精彩内容 >>
未验证
提交
ef6d7368
编写于
2月 24, 2021
作者:
F
Frost Ming
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix sections resolve
上级
df4a35f8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
9 deletion
+26
-9
pdm/resolver/core.py
pdm/resolver/core.py
+26
-9
未找到文件。
pdm/resolver/core.py
浏览文件 @
ef6d7368
from
__future__
import
annotations
from
typing
import
TYPE_CHECKING
,
Dict
,
Iterable
,
List
,
Optional
,
Set
,
Tuple
from
typing
import
TYPE_CHECKING
,
Dict
,
List
,
Optional
,
Set
,
Tuple
from
resolvelib.resolvers
import
Criterion
,
Resolution
...
...
@@ -62,12 +62,29 @@ def _build_metaset(
return
metaset
or
Metaset
()
def
_get_sections
(
crit
:
Criterion
)
->
Iterable
[
str
]:
for
req
,
parent
in
crit
.
information
:
if
not
parent
:
yield
req
.
from_section
else
:
yield
from
parent
.
sections
def
populate_sections
(
result
:
Result
)
->
None
:
_sections_cache
:
Dict
[
str
,
List
[
str
]]
=
{}
_visited
:
Set
[
str
]
=
set
()
# a collection of visited names to avoid dead loop.
def
get_candidate_sections
(
key
:
str
)
->
List
[
str
]:
_visited
.
add
(
key
)
if
key
in
_sections_cache
:
return
_sections_cache
[
key
]
res
=
set
()
crit
:
Criterion
=
result
.
criteria
[
key
]
for
req
,
parent
in
crit
.
information
:
if
parent
is
None
:
res
.
add
(
req
.
from_section
)
else
:
pkey
=
_identify_parent
(
parent
)
if
pkey
in
_visited
:
continue
res
.
update
(
get_candidate_sections
(
pkey
))
_sections_cache
[
key
]
=
res
=
list
(
res
)
return
res
for
k
,
can
in
result
.
mapping
.
items
():
can
.
sections
=
sorted
(
get_candidate_sections
(
k
))
def
extract_metadata
(
result
:
Result
)
->
Dict
[
str
,
Metaset
]:
...
...
@@ -91,7 +108,6 @@ def extract_metadata(result: Result) -> Dict[str, Metaset]:
):
continue
new_metasets
[
k
]
=
_build_metaset
(
crit
,
all_metasets
,
keep_unresolved
)
result
.
mapping
[
k
].
sections
=
list
(
set
(
_get_sections
(
crit
)))
if
new_metasets
:
all_metasets
.
update
(
new_metasets
)
...
...
@@ -116,7 +132,6 @@ def extract_metadata(result: Result) -> Dict[str, Metaset]:
for
key
in
circular
:
crit
=
result
.
criteria
[
key
]
all_metasets
[
key
]
=
_build_metaset
(
crit
,
all_metasets
,
set
())
result
.
mapping
[
key
].
sections
=
list
(
set
(
_get_sections
(
crit
)))
return
all_metasets
...
...
@@ -159,4 +174,6 @@ def resolve(
candidate
=
mapping
[
key
]
candidate
.
marker
=
metaset
.
as_marker
()
candidate
.
hashes
=
provider
.
get_hashes
(
candidate
)
populate_sections
(
result
)
return
mapping
,
provider
.
fetched_dependencies
,
provider
.
summary_collection
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录