License Expression

PEP 639 defined a new pyproject.toml’s license value and added a corresponding core metadata License-Expression field. This specification defines which license expressions are acceptable.

Specification

License can be defined as a text string that is a valid SPDX license expression, as documented in the SPDX specification, either Version 2.2 or a later compatible version.

A license expression can use the following license identifiers:

  • Any SPDX-listed license short-form identifiers that are published in the SPDX License List, version 3.17 or any later compatible version.

  • The custom LicenseRef-[idstring] string(s), where [idstring] is a unique string containing letters, numbers, . and/or -, to identify licenses that are not included in the SPDX license list. The custom identifiers must follow the SPDX specification, clause 10.1 of the given specification version.

Examples of valid license expressions:

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 

Examples of invalid license expressions:

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