Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
后端镜像
Pdm
提交
6e00a5a4
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,发现更多精彩内容 >>
未验证
提交
6e00a5a4
编写于
7月 26, 2022
作者:
F
Frost Ming
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: TypeError when publishing a package with non-ascii in metadata
Close #1270
上级
c243244a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
10 addition
and
3 deletion
+10
-3
news/1270.bugfix.md
news/1270.bugfix.md
+1
-0
pdm/cli/commands/publish/package.py
pdm/cli/commands/publish/package.py
+9
-3
未找到文件。
news/1270.bugfix.md
0 → 100644
浏览文件 @
6e00a5a4
Fix a crash when pdm tries to publish a package with non-ASCII characters in the metadata.
pdm/cli/commands/publish/package.py
浏览文件 @
6e00a5a4
...
...
@@ -2,6 +2,7 @@ from __future__ import annotations
import
email
import
email.message
import
email.policy
import
hashlib
import
os
import
re
...
...
@@ -29,6 +30,7 @@ wheel_file_re = re.compile(
\.whl|\.dist-info)$"""
,
re
.
VERBOSE
,
)
message_policy
=
email
.
policy
.
default
.
clone
(
utf8
=
True
)
@
dataclass
...
...
@@ -104,7 +106,7 @@ class PackageFile:
fn
=
split_leading_dir
(
m
.
name
)[
1
]
if
has_leading
else
m
.
name
if
fn
==
"PKG-INFO"
:
return
email
.
message_from_binary_file
(
cast
(
IO
[
bytes
],
tar
.
extractfile
(
m
))
cast
(
IO
[
bytes
],
tar
.
extractfile
(
m
))
,
policy
=
message_policy
)
raise
ProjectError
(
f
"No PKG-INFO found in
{
filename
}
"
)
...
...
@@ -116,7 +118,9 @@ class PackageFile:
for
name
in
filenames
:
fn
=
split_leading_dir
(
name
)[
1
]
if
has_leading
else
name
if
fn
==
"PKG-INFO"
:
return
email
.
message_from_binary_file
(
zip
.
open
(
name
))
return
email
.
message_from_binary_file
(
zip
.
open
(
name
),
policy
=
message_policy
)
raise
ProjectError
(
f
"No PKG-INFO found in
{
filename
}
"
)
@
staticmethod
...
...
@@ -124,7 +128,9 @@ class PackageFile:
with
zipfile
.
ZipFile
(
filename
,
allowZip64
=
True
)
as
zip
:
for
fn
in
zip
.
namelist
():
if
fn
.
replace
(
"
\\
"
,
"/"
).
endswith
(
".dist-info/METADATA"
):
return
email
.
message_from_binary_file
(
zip
.
open
(
fn
))
return
email
.
message_from_binary_file
(
zip
.
open
(
fn
),
policy
=
message_policy
)
raise
ProjectError
(
f
"No egg-info is found in
{
filename
}
"
)
def
add_gpg_signature
(
self
,
filename
:
str
,
signature_name
:
str
)
->
None
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录