Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python Enhancement Proposals

Appendix: Mapping License Classifiers to SPDX Identifiers

Most single license classifiers (namely, all those not mentioned below) map to a single valid SPDX license identifier, allowing tools to infer the SPDX license identifier they correspond to, both for use when analyzing and auditing packages, and providing a semi-automated mechanism of filling the license key or the License-Expression field following the PEP 639 specification.

Some legacy license classifiers intend to specify a particular license, but do not specify the particular version or variant, leading to a critical ambiguity as to their terms, compatibility and acceptability. Tools MUST NOT attempt to automatically infer a License-Expression when one of these classifiers is used without affirmative user action:

  • License :: OSI Approved :: Academic Free License (AFL)
  • License :: OSI Approved :: Apache Software License
  • License :: OSI Approved :: Apple Public Source License
  • License :: OSI Approved :: Artistic License
  • License :: OSI Approved :: BSD License
  • License :: OSI Approved :: GNU Affero General Public License v3
  • License :: OSI Approved :: GNU Free Documentation License (FDL)
  • License :: OSI Approved :: GNU General Public License (GPL)
  • License :: OSI Approved :: GNU General Public License v2 (GPLv2)
  • License :: OSI Approved :: GNU General Public License v3 (GPLv3)
  • License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)
  • License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)
  • License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
  • License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)

A comprehensive mapping of these classifiers to their possible specific identifiers was assembled by Dustin Ingram, which tools MAY use as a reference for the identifier selection options to offer users when prompting the user to explicitly select the license identifier they intended for their project.

Note

Several additional classifiers, namely the “or later” variants of the AGPLv3, GPLv2, GPLv3 and LGPLv3, are also listed in the aforementioned mapping, but unambiguously map to their respective licenses, and so are not listed here. However, LGPLv2 is included above, as it could ambiguously refer to either the distinct v2.0 or v2.1 variants of that license.

In addition, for the various special cases, the following mappings are considered canonical and normative for the purposes of this specification:

  • Classifier License :: Public Domain MAY be mapped to the generic License-Expression: LicenseRef-Public-Domain. If tools do so, they SHOULD issue an informational warning encouraging the use of more explicit and legally portable license identifiers, such as those for the CC0 1.0 license (CC0-1.0), the Unlicense (Unlicense), or the MIT license (MIT), since the meaning associated with the term “public domain” is thoroughly dependent on the specific legal jurisdiction involved, some of which lack the concept entirely. Alternatively, tools MAY choose to treat these classifiers as ambiguous.
  • The generic and sometimes ambiguous classifiers:
    • License :: Free For Educational Use
    • License :: Free For Home Use
    • License :: Free for non-commercial use
    • License :: Freely Distributable
    • License :: Free To Use But Restricted
    • License :: Freeware
    • License :: Other/Proprietary License

    MAY be mapped to the generic License-Expression: LicenseRef-Proprietary, but tools MUST issue a prominent, informative warning if they do so. Alternatively, tools MAY choose to treat these classifiers as ambiguous.

  • The generic and ambiguous classifiers License :: OSI Approved and License :: DFSG approved do not map to any license expression, and thus tools SHOULD treat them as ambiguous, or if not MUST ignore them.
  • The classifiers License :: GUST Font License 1.0 and License :: GUST Font License 2006-09-30 have no mapping to SPDX license identifiers, and no PyPI package uses them as of 2022-07-09.

When multiple license classifiers are used, their relationship is ambiguous, and it is typically not possible to determine if all the licenses apply or if there is a choice that is possible among the licenses, In this case, tools MUST NOT automatically infer a license expression, unless one license classifier is a parent of the other, i.e. the child contains all ::-delineated components of the parent, in which case tools MAY ignore the parent classifier but SHOULD issue an informative warning when doing so.