Following system colour scheme - Python 增强提案 Selected dark colour scheme - Python 增强提案 Selected light colour scheme - Python 增强提案

Python 增强提案

PEP 566 – Python 软件包元数据 2.1

作者:
Dustin Ingram <di at python.org>
BDFL 代表:
Daniel Holth
讨论邮件列表:
Distutils-SIG 邮件列表
状态:
最终版
类型:
标准跟踪
主题:
打包
创建日期:
2017 年 12 月 1 日
Python 版本:
3.x
发布历史:

替换:
345
决议:
Distutils-SIG 消息

目录

注意

此 PEP 是一份历史文档。最新的规范性规范,核心元数据规范,在 PyPA 规范页面 上维护。

×

有关如何提出更改,请参阅 PyPA 规范更新流程

摘要

本 PEP 描述了 Python 包核心元数据规范 1.2 版和 2.1 版之间的更改。1.2 版在 PEP 345 中指定。

它还将字段规范的规范来源更改为 核心元数据规范 参考文档,其中包括字段名称及其语义和用法的详细信息。

字段

每个受支持元数据字段的名称和语义的规范来源是 核心元数据规范 文档。

标记为“(可多次使用)”的字段可以在单个 PKG-INFO 文件中多次指定。其他字段只能在 PKG-INFO 文件中出现一次。标记为“(可选)”的字段不需要出现在有效的 PKG-INFO 文件中;所有其他字段都必须存在。

2.1 版中的新增内容

Description-Content-Type(可选)

一个字符串,说明分发说明中使用的标记语法(如果有),以便工具能够智能地呈现说明。

从历史上看,像 PyPI 这样的工具假设软件包的说明采用 reStructuredText (reST) 格式,如果说明不是有效的 reST,则回退到纯文本。

此字段的引入允许 PyPI 支持其他类型的标记语法,而无需做出此假设。

此字段的完整规范在 核心元数据规范 中定义。

Provides-Extra(可选,可多次使用)

包含可选功能名称的字符串。必须是有效的 Python 标识符。可用于使依赖项取决于是否已请求可选功能。

此字段的引入允许软件包安装工具(如 pip)确定给定软件包提供了哪些额外功能,以及软件包发布工具(如 twine)可以检查使用额外功能的环境标记是否存在问题。

此字段的完整规范在 核心元数据规范 中定义。

2.1 版中的更改

名称

此字段的格式规范现在与 PEP 508 中定义的分发名称规范相同。

描述

除了 Description 标题字段外,分发的描述也可以在消息正文中提供(即,在标题后完全空一行之后,无需缩进或其他特殊格式)。

版本说明符

版本编号要求以及指定版本之间比较的语义在 PEP 440 中定义。在 PEP 440 中定义的直接引用也作为版本说明符的替代方案允许。

遵循 PEP 508,版本说明符不再需要在 Requires-Dist、Provides-Dist、Obsoletes-Dist 或 Requires-External 字段中用括号括起来,例如 requests >= 2.8.1 现在是一个有效的值。建议的格式是不带括号,但解析元数据的工具也应该能够处理带括号的版本说明符。此外,公共索引服务器 MAY 禁止这些字段中的严格版本匹配子句或直接引用。

除了 PEP 345 外,版本说明符的使用方式没有其他更改。

环境标记

**环境标记**是一种可以添加到字段末尾(分号“;”之后)的标记,以添加关于执行环境的条件。

用于声明此类条件的环境标记格式在 PEP 508 的环境标记部分中定义。

除了 PEP 345 外,环境标记的使用方式没有其他更改。

兼容 JSON 的元数据

可能需要将元数据存储在不允许重复键的数据结构中,例如 JSON。

将元数据字段转换为这种数据结构的规范方法如下

  1. 应使用 email.parser.HeaderParser 读取原始键值格式;
  2. 所有转换后的键都应转换为小写。连字符应替换为下划线,但否则应保留所有其他字符;
  3. 任何标记为“(可多次使用)”的字段的转换值应为一个包含给定键的所有原始值的列表;
  4. 应通过以逗号分隔原始值来将 Keywords 字段转换为列表;
  5. 如果存在消息正文,则应将其设置为 description 键的值。
  6. 结果应存储为一个字符串键字典。

与 PEP 345 的差异总结

  • Metadata-Version 现在为 2.1。
  • 字段现在通过 核心元数据规范 指定。
  • 添加了两个新字段:Description-Content-TypeProvides-Extra
  • Name 字段的可接受值现在根据 PEP 508 指定。
  • 添加了转换为兼容 JSON 的数据结构的规范方法。

参考文献

本文档指定了元数据格式的 2.1 版。1.0 版在 PEP 241 中指定。1.1 版在 PEP 314 中指定。1.2 版在 PEP 345 中指定。2.0 版虽然未正式接受,但在 PEP 426 中指定。

致谢

感谢 Alyssa Coghlan 和 Thomas Kluyver 为此 PEP 做出的贡献。


来源:https://github.com/python/peps/blob/main/peps/pep-0566.rst

上次修改时间:2023-10-11 12:05:51 GMT