许可证表达式

PEP 639 定义了一个新的 pyproject.toml 的许可证 值,并添加了相应的 核心元数据 License-Expression 字段。本规范定义了哪些许可证表达式是可接受的。

规范

许可证可以定义为一个文本字符串,该字符串是有效的 SPDX 许可证表达式,如 SPDX 规范(版本 2.2 或更高兼容版本)中所述。

许可证表达式可以使用以下许可证标识符:

  • 任何发布在 SPDX 许可证列表(版本 3.17 或任何更高兼容版本)中的 SPDX 列出的短格式许可证标识符。

  • 自定义 LicenseRef-[idstring] 字符串,其中 [idstring] 是一个唯一的字符串,包含字母、数字、. 和/或 -,用于标识未包含在 SPDX 许可证列表中的许可证。自定义标识符必须遵循 SPDX 规范的 第 10.1 条(给定规范版本)。

有效许可证表达式的示例

MIT
BSD-3-Clause
MIT AND (Apache-2.0 OR BSD-2-Clause)
MIT OR GPL-2.0-or-later OR (FSFUL AND BSD-2-Clause)
GPL-3.0-only WITH Classpath-Exception-2.0 OR BSD-3-Clause
LicenseRef-Special-License OR CC0-1.0 OR Unlicense
LicenseRef-Proprietary

无效许可证表达式的示例

Use-it-after-midnight  # No `LicenseRef` prefix
Apache-2.0 OR 2-BSD-Clause  # 2-BSD-Clause is not a valid SPDX identifier
LicenseRef-License with spaces  # spaces are not allowed
LicenseRef-License_with_underscores  # underscore are not allowed