名称和标准化¶
本规范定义了包和额外内容的名称必须遵循的格式。它还描述了如何对它们进行标准化,这应该在查找和比较之前完成。
名称格式¶
有效名称只能包含 ASCII 字母和数字、句点、下划线和连字符。它必须以字母或数字开头和结尾。这意味着有效的项目名称仅限于与以下正则表达式匹配的名称(使用 re.IGNORECASE
运行)
^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])\Z
名称标准化¶
名称应小写,并将字符 .
、-
或 _
的所有连续出现替换为单个 -
字符。这可以使用 Python 的 re 模块实现
import re
def normalize(name):
return re.sub(r"[-_.]+", "-", name).lower()
这意味着以下名称都是等效的
friendly-bard
(标准化形式)Friendly-Bard
FRIENDLY-BARD
friendly.bard
friendly_bard
friendly--bard
FrIeNdLy-._.-bArD
(一种糟糕的命名方式,但它是有效的)