@@ -138,6 +138,7 @@ The complete list of keys allowed in the ``[project]`` table are:
138
138
- ``gui-scripts ``
139
139
- ``keywords ``
140
140
- ``license ``
141
+ - ``license-files ``
141
142
- ``maintainers ``
142
143
- ``name ``
143
144
- ``optional-dependencies ``
@@ -236,16 +237,70 @@ The Python version requirements of the project.
236
237
``license ``
237
238
-----------
238
239
239
- - TOML _ type: table
240
+ - TOML _ type: string
241
+ - Corresponding :ref: `core metadata <core-metadata >` field:
242
+ :ref: `License-Expression <core-metadata-license-expression >`
243
+
244
+ Text string that is a valid SPDX license expression as defined in :pep: `639 `.
245
+ Tools SHOULD validate and perform case normalization of the expression.
246
+
247
+ The table subkeys of the ``license `` key are deprecated.
248
+
249
+
250
+ ``license-files ``
251
+ -----------------
252
+
253
+ - TOML _ type: array of strings
240
254
- Corresponding :ref: `core metadata <core-metadata >` field:
241
- :ref: `License <core-metadata-license >`
255
+ :ref: `License-Expression <core-metadata-license-file >`
256
+
257
+ An array specifying paths in the project source tree relative to the project
258
+ root directory (i.e. directory containing :file: `pyproject.toml ` or legacy project
259
+ configuration files, e.g. :file: `setup.py `, :file: `setup.cfg `, etc.)
260
+ to file(s) containing licenses and other legal notices to be
261
+ distributed with the package.
262
+
263
+ The strings MUST contain valid glob patterns, as specified below:
242
264
243
- The table may have one of two keys. The ``file `` key has a string
244
- value that is a file path relative to ``pyproject.toml `` to the file
245
- which contains the license for the project. Tools MUST assume the
246
- file's encoding is UTF-8. The ``text `` key has a string value which is
247
- the license of the project. These keys are mutually exclusive, so a
248
- tool MUST raise an error if the metadata specifies both keys.
265
+ - Alphanumeric characters, underscores (``_ ``), hyphens (``- ``) and dots (``. ``)
266
+ MUST be matched verbatim.
267
+
268
+ - Special glob characters: ``* ``, ``? ``, ``** `` and character ranges: ``[] ``
269
+ containing only the verbatim matched characters MUST be supported.
270
+ Within ``[...] ``, the hyphen indicates a locale-agnostic range (e.g. ``a-z ``,
271
+ order based on Unicode code points).
272
+ Hyphens at the start or end are matched literally.
273
+
274
+ - Path delimiters MUST be the forward slash character (``/ ``).
275
+ Patterns are relative to the directory containing :file: `pyproject.toml `,
276
+ therefore the leading slash character MUST NOT be used.
277
+
278
+ - Parent directory indicators (``.. ``) MUST NOT be used.
279
+
280
+ Any characters or character sequences not covered by this specification are
281
+ invalid. Projects MUST NOT use such values.
282
+ Tools consuming this field SHOULD reject invalid values with an error.
283
+
284
+ Tools MUST assume that license file content is valid UTF-8 encoded text,
285
+ and SHOULD validate this and raise an error if it is not.
286
+
287
+ Literal paths (e.g. :file: `LICENSE `) are valid globs which means they
288
+ can also be defined.
289
+
290
+ Build tools:
291
+
292
+ - MUST treat each value as a glob pattern, and MUST raise an error if the
293
+ pattern contains invalid glob syntax.
294
+ - MUST include all files matched by a listed pattern in all distribution
295
+ archives.
296
+ - MUST list each matched file path under a License-File field in the
297
+ Core Metadata.
298
+ - MUST raise an error if any individual user-specified pattern does not match
299
+ at least one file.
300
+
301
+ If the ``license-files `` key is present and
302
+ is set to a value of an empty array, then tools MUST NOT include any
303
+ license files and MUST NOT raise an error.
249
304
250
305
251
306
``authors ``/``maintainers ``
@@ -309,6 +364,12 @@ The keywords for the project.
309
364
310
365
Trove classifiers which apply to the project.
311
366
367
+ The use of ``License :: `` classifiers is deprecated and tools MAY issue a
368
+ warning informing users about that.
369
+ Build tools MAY raise an error if both the ``license `` string value
370
+ (translating to ``License-Expression `` metadata field) and the ``License :: ``
371
+ classifiers are used.
372
+
312
373
313
374
``urls ``
314
375
--------
@@ -450,6 +511,8 @@ History
450
511
- November 2020: The specification of the ``[project] `` table was approved
451
512
through :pep: `621 `.
452
513
514
+ - December 2024: The ``license `` key was redefined, the ``license-files `` key was
515
+ added and ``License:: `` classifiers were deprecated through :pep: `639 `.
453
516
454
517
455
518
.. _TOML : https://toml.io
0 commit comments