@@ -520,87 +520,61 @@ paths in the project source tree relative to ``pyproject.toml`` to file(s)
520520containing licenses and other legal notices to be distributed with the package.
521521It corresponds to the ``License-File `` fields in the Core Metadata.
522522
523- Its value is a table, which if present MUST contain one of two optional,
524- mutually exclusive subkeys, ``paths `` and ``globs ``; if both are specified,
525- tools MUST raise an error. Both are arrays of strings; the ``paths `` subkey
526- contains verbatim file paths, and the ``globs `` subkey valid glob patterns,
527- which MUST be parsable by the ``glob `` `module <globmodule _>`__ in the
528- Python standard library.
529-
523+ Its value is an array of strings which MUST contain valid glob patterns,
524+ as specified below.
525+ The glob patterns MAY contain special glob characters: ``* ``, ``? ``, ``** ``
526+ and character ranges: ``[] ``, and tools MUST support them.
530527Path delimiters MUST be the forward slash character (``/ ``),
531528and parent directory indicators (``.. ``) MUST NOT be used.
532529Tools MUST assume that license file content is valid UTF-8 encoded text,
533530and SHOULD validate this and raise an error if it is not.
534531
535- If the ``paths `` subkey is a non-empty array, build tools:
536-
537- - MUST treat each value as a verbatim, literal file path, and
538- MUST NOT treat them as glob patterns.
539-
540- - MUST include each listed file in all distribution archives.
541-
542- - MUST NOT match any additional license files beyond those explicitly
543- statically specified by the user under the ``paths `` subkey.
532+ Literal paths (e.g. ``LICENSE ``) are treated as valid globs which means they
533+ can also be defined.
544534
545- - MUST list each file path under a ``License-File `` field in the Core Metadata.
535+ To achieve better portability, the filenames to match should only contain
536+ the alphanumeric characters and dot (``. ``).
546537
547- - MUST raise an error if one or more paths do not correspond to a valid file
548- in the project source that can be copied into the distribution archive.
549-
550- If the ``globs `` subkey is a non-empty array, build tools:
538+ Build tools:
551539
552540- MUST treat each value as a glob pattern, and MUST raise an error if the
553541 pattern contains invalid glob syntax.
554542
555- - MUST include all files matched by at least one listed pattern in all
543+ - MUST include all files matched by a listed pattern in all
556544 distribution archives.
557545
558- - MAY exclude files matched by glob patterns that can be unambiguously
559- determined to be backup, temporary, hidden, OS-generated or VCS-ignored.
560-
561546- MUST list each matched file path under a ``License-File `` field in the
562547 Core Metadata.
563548
564- - SHOULD issue a warning and MAY raise an error if no files are matched.
565-
566- - MAY issue a warning if any individual user-specified pattern
549+ - MUST raise an error if any individual user-specified pattern
567550 does not match at least one file.
568551
569- If the ``license-files `` key is present, and the `` paths `` or `` globs `` subkey
552+ If the ``license-files `` key is present and
570553is set to a value of an empty array, then tools MUST NOT include any
571554license files and MUST NOT raise an error.
572555
573-
574556Examples of valid license files declaration:
575557
576558.. code-block :: toml
577559
578560 [project]
579- license-files = { globs = ["LICEN[CS]E*", "AUTHORS*"] }
561+ license-files = ["LICEN[CS]E*", "AUTHORS*"]
580562
581563 [project]
582- license-files.paths = ["licenses/LICENSE.MIT", "licenses/LICENSE.CC0"]
564+ license-files = ["licenses/LICENSE.MIT", "licenses/LICENSE.CC0"]
583565
584566 [project]
585- license-files = { paths = [] }
567+ license-files = ["LICENSE.txt", "licenses/*"]
586568
587569 [project]
588- license-files.globs = []
570+ license-files = []
589571
590572 Examples of invalid license files declaration:
591573
592574.. code-block :: toml
593575
594576 [project]
595- license-files.globs = ["LICEN[CS]E*", "AUTHORS*"]
596- license-files.paths = ["LICENSE.MIT"]
597-
598- Reason: license-files.paths and license-files.globs are mutually exclusive.
599-
600- .. code-block :: toml
601-
602- [project]
603- license-files = { paths = ["..\LICENSE.MIT"] }
577+ license-files = ["..\LICENSE.MIT"]
604578
605579 Reason: ``.. `` must not be used.
606580``\ `` is an invalid path delimiter, ``/ `` must be used.
@@ -609,7 +583,7 @@ Reason: ``..`` must not be used.
609583.. code-block :: toml
610584
611585 [project]
612- license-files = { globs = ["LICEN{CSE*"] }
586+ license-files = ["LICEN{CSE*"]
613587
614588 Reason: "LICEN{CSE*" is not a valid glob.
615589
@@ -638,7 +612,7 @@ the ``license-files`` key instead.
638612If the specified license ``file `` is present in the source tree,
639613build tools SHOULD use it to fill the ``License-File `` field
640614in the core metadata, and MUST include the specified file
641- as if it were specified in a ``license-file.paths `` field.
615+ as if it were specified in a ``license-file `` field.
642616If the file does not exist at the specified path,
643617tools MUST raise an informative error as previously specified.
644618
@@ -725,9 +699,9 @@ and license classifiers retain backwards compatibility. A removal is
725699left to a future PEP and a new version of the Core Metadata specification.
726700
727701Specification of the new ``License-File `` Core Metadata field and adding the
728- files in the distribution codifies the existing practices of many packaging
729- tools. It is designed to be largely backwards-compatible with their existing
730- use of that field. The new ``license-files `` key in the ``[project] `` table of
702+ files in the distribution is designed to be largely backwards-compatible with
703+ the existing use of that field in many packaging tools.
704+ The new ``license-files `` key in the ``[project] `` table of
731705``pyproject.toml `` will only have an effect once users and tools adopt it.
732706
733707This PEP specifies that license files should be placed in a dedicated
@@ -781,7 +755,8 @@ If an invalid ``License-Expression`` is used, the users will not be able
781755to publish their package to PyPI and an error message will help them
782756understand they need to use SPDX identifiers.
783757It will be possible to generate a distribution with incorrect license metadata,
784- but not to publish one on PyPI or any other index server that enforces ``License-Expression `` validity.
758+ but not to publish one on PyPI or any other index server that enforces
759+ ``License-Expression `` validity.
785760For authors using the now-deprecated ``License `` field or license classifiers,
786761packaging tools may warn them and inform them of the replacement,
787762``License-Expression ``.
0 commit comments