ライセンス表現

PEP 639 では、 pyproject.toml のライセンス の新しい値を定義していて、対応する コアとなるメタデータのライセンス表現フィールドコアとなるメタデータのライセンス表現フィールド を追加しました。この仕様は、どのライセンス表現が受け入れ可能であるかを定義しています。

仕様

ライセンスは、バージョン 2.2 もしくはより新しい互換性のあるバージョンの SPDX 仕様 で文書化されているように、正当な SPDX ライセンス表現 であるテキスト文字列として定義することができます。

ライセンス表現では、次のようなライセンス識別子を使用することができます:

  • 任意の SPDX に列挙された短表現の識別子で、 SPDX ライセンスリスト のバージョン 3.17 もしくはそれ以降の互換性のあるバージョンで公開されているもの。

  • [idstring] をユニークな文字列で文字・数字・ .- を含むものとした時、カスタムの LicenseRef-[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