Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
后端镜像
Pdm
提交
347300ee
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 搜索 >>
未验证
提交
347300ee
编写于
8月 12, 2022
作者:
F
Frost Ming
提交者:
GitHub
8月 12, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: Delay the trigger of post_lock in add and update command (#1320)
上级
dfaea348
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
25 addition
and
11 deletion
+25
-11
news/1320.bugfix.md
news/1320.bugfix.md
+1
-0
src/pdm/cli/actions.py
src/pdm/cli/actions.py
+12
-10
src/pdm/cli/hooks.py
src/pdm/cli/hooks.py
+12
-1
未找到文件。
news/1320.bugfix.md
0 → 100644
浏览文件 @
347300ee
Delay the trigger of
`post_lock`
for
`add`
and
`update`
operations, to ensure the
`pyproject.toml`
is updated before the hook is run.
src/pdm/cli/actions.py
浏览文件 @
347300ee
...
@@ -275,9 +275,10 @@ def do_add(
...
@@ -275,9 +275,10 @@ def do_add(
req
.
specifier
=
get_specifier
(
""
)
req
.
specifier
=
get_specifier
(
""
)
group_deps
.
update
(
requirements
)
group_deps
.
update
(
requirements
)
reqs
=
[
r
for
deps
in
all_dependencies
.
values
()
for
r
in
deps
.
values
()]
reqs
=
[
r
for
deps
in
all_dependencies
.
values
()
for
r
in
deps
.
values
()]
resolved
=
do_lock
(
with
hooks
.
skipping
(
"post_lock"
):
project
,
strategy
,
tracked_names
,
reqs
,
dry_run
=
dry_run
,
hooks
=
hooks
resolved
=
do_lock
(
)
project
,
strategy
,
tracked_names
,
reqs
,
dry_run
=
dry_run
,
hooks
=
hooks
)
# Update dependency specifiers and lockfile hash.
# Update dependency specifiers and lockfile hash.
deps_to_update
=
group_deps
if
unconstrained
else
requirements
deps_to_update
=
group_deps
if
unconstrained
else
requirements
...
@@ -285,6 +286,7 @@ def do_add(
...
@@ -285,6 +286,7 @@ def do_add(
if
not
dry_run
:
if
not
dry_run
:
project
.
add_dependencies
(
deps_to_update
,
group
,
dev
)
project
.
add_dependencies
(
deps_to_update
,
group
,
dev
)
project
.
write_lockfile
(
project
.
lockfile
,
False
)
project
.
write_lockfile
(
project
.
lockfile
,
False
)
hooks
.
try_emit
(
"post_lock"
,
resolution
=
resolved
,
dry_run
=
dry_run
)
_populate_requirement_names
(
group_deps
)
_populate_requirement_names
(
group_deps
)
if
sync
:
if
sync
:
do_sync
(
do_sync
(
...
@@ -384,6 +386,13 @@ def do_update(
...
@@ -384,6 +386,13 @@ def do_update(
)
)
for
deps
in
updated_deps
.
values
():
for
deps
in
updated_deps
.
values
():
_populate_requirement_names
(
deps
)
_populate_requirement_names
(
deps
)
if
unconstrained
and
not
dry_run
:
# Need to update version constraints
save_version_specifiers
(
updated_deps
,
resolved
,
save
)
for
group
,
deps
in
updated_deps
.
items
():
project
.
add_dependencies
(
deps
,
group
,
dev
or
False
)
lockfile
=
project
.
lockfile
project
.
write_lockfile
(
lockfile
,
False
)
if
sync
or
dry_run
:
if
sync
or
dry_run
:
do_sync
(
do_sync
(
project
,
project
,
...
@@ -400,13 +409,6 @@ def do_update(
...
@@ -400,13 +409,6 @@ def do_update(
no_self
=
no_self
,
no_self
=
no_self
,
hooks
=
hooks
,
hooks
=
hooks
,
)
)
if
unconstrained
and
not
dry_run
:
# Need to update version constraints
save_version_specifiers
(
updated_deps
,
resolved
,
save
)
for
group
,
deps
in
updated_deps
.
items
():
project
.
add_dependencies
(
deps
,
group
,
dev
or
False
)
lockfile
=
project
.
lockfile
project
.
write_lockfile
(
lockfile
,
False
)
def
do_remove
(
def
do_remove
(
...
...
src/pdm/cli/hooks.py
浏览文件 @
347300ee
from
__future__
import
annotations
from
__future__
import
annotations
from
typing
import
Any
import
contextlib
from
typing
import
Any
,
Generator
from
blinker
import
Signal
from
blinker
import
Signal
...
@@ -21,6 +22,16 @@ class HookManager:
...
@@ -21,6 +22,16 @@ class HookManager:
self
.
project
=
project
self
.
project
=
project
self
.
skip
=
skip
or
[]
self
.
skip
=
skip
or
[]
@
contextlib
.
contextmanager
def
skipping
(
self
,
*
names
:
str
)
->
Generator
[
None
,
None
,
None
]:
"""
Temporarily skip some hooks.
"""
old_skip
=
self
.
skip
[:]
self
.
skip
.
extend
(
names
)
yield
self
.
skip
=
old_skip
@
cached_property
@
cached_property
def
skip_all
(
self
)
->
bool
:
def
skip_all
(
self
)
->
bool
:
return
":all"
in
self
.
skip
return
":all"
in
self
.
skip
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录