Skip to content

Releases: pypa/pyproject-metadata

0.10.0

21 Nov 15:28
25e4eb2

Choose a tag to compare

This release adds support for PEP 794 (METADATA 2.5), the new import-names(paces) fields. Support hasn't rolled out in other packages yet, but once it does, you can be ready for it with this release. As usual, nothing changes if you don't specify the new fields or the new METADATA version.

Features:

  • Support import-names(paces)
  • Remove Python 3.7 support

Fixes:

  • Minimum supported version of packaging corrected (now tested)

Internal and CI:

  • Add PyPy 3.11 testing
  • Add Python 3.14 classifier
  • Use PEP 639 license
  • Use dependency groups
  • Enable branch coverage
  • Enabled most Ruff linting rules on codebase

New Contributors

Full Changelog: 0.9.1...0.10.0

0.9.1

10 Mar 22:14

Choose a tag to compare

This release fixes form feeds in License files using pre-PEP 639 syntax when using Python older than 3.12.4; this is a regression in 0.9.0 from moving to the standard library email module. Some other small fixes to validation messages were applied.

Fixes:

  • Handle form feed for Python <3.12.4
  • Some touchup based on packaging PR

Docs:

  • Fix packaging.licenses example code

Internal and CI:

  • Speed up CI a bit, add Python 3.14 alpha testing

Full Changelog: 0.9.0...0.9.1

0.9.0

23 Oct 03:35
cb74500

Choose a tag to compare

This release adds PEP 639 support (METADATA 2.4), refactors the RFC messages, and adds a lot of validation (including warnings and opt-in errors), a way to produce all validation errors at once, and more. The beta releases are intended for backend authors to try out the changes before a final release.

Features:

  • Added PEP 639 support for SPDX license and license files, METADATA 2.4
  • Validate extra keys (warning, opt-in error)
  • Functions to check top level and build-system (including PEP 735 support)
  • Add TypedDict's in new module for typing pyproject.toml dicts
  • all_errors=True causes ExceptionGroup's to be emitted
  • Support METADATA 2.1+ JSON format with new .as_json() method

Fixes:

  • Match EmailMessage spacing
  • Handle multilines the way setuptools does with smart indentation
  • Warn on multiline Summary (project.description)
  • Improve locking for just metadata fields
  • Error on extra keys in author/maintainer
  • URL name stylization removed matching PEP 753

Full Changelog: 0.8.1...0.9.0

0.9.0 RC 1

21 Oct 19:22
082b688

Choose a tag to compare

0.9.0 RC 1 Pre-release
Pre-release

Changes since last beta:

  • Remove attribute locking
  • Fix for METADATA 2.4 being set and PEP 639 recommendation
  • Support PEP 735 in top level validation
  • Adjust URL handling to better match PEP 753

Full Changelog: 0.9.0b7...0.9.0rc1

0.8.1

07 Oct 18:40
b7b59c4

Choose a tag to compare

  • Validate project name
  • Validate entrypoint group names
  • Correct typing for emails
  • Add 3.13 to testing
  • Add ruff-format
  • Actions and dependabot
  • Generate GitHub attestations for releases
  • Add PyPI attestations
  • Fix coverage context

Full Changelog: 0.8.0...0.8.1

0.9.0 beta 7

04 Oct 22:23
c3c37e5

Choose a tag to compare

0.9.0 beta 7 Pre-release
Pre-release

Refactoring:

  • Revert to double quotes in error messages for field names
  • Show the types instead of values in error messages

Docs:

  • Better API section

0.9.0 beta 6

01 Oct 02:40
b80be05

Choose a tag to compare

0.9.0 beta 6 Pre-release
Pre-release

Refactoring:

  • Move validate_* functions into extras_* instead
  • Use Dynamic for the type of .dynamic
  • Reformat single quotes to double quotes to match packaging
  • Produce standard Python repr style in error messages

Fixes:

  • Improve locking for just metadata fields

Docs:

  • Include extra badge in readme
  • Rework docs, include README and more classes
  • Changelog is now in markdown

0.9.0 beta 5

27 Sep 16:28
dc72d09

Choose a tag to compare

0.9.0 beta 5 Pre-release
Pre-release

Features:

  • Add TypedDict's in new module for typing pyproject.toml dicts
  • all_errors=True causes ExceptionGroup's to be emitted
  • Support METADATA 2.1+ JSON format with new .as_json() method

Internal and CI:

  • Require 100% coverage

Refactoring:

  • Spit up over multiple files
  • Remove data fetcher, use static types wherever possible

0.9.0 beta 4

20 Sep 19:54
4d9a930

Choose a tag to compare

0.9.0 beta 4 Pre-release
Pre-release

Features:

  • Setting a non-dynamic field is an error

Fixes:

  • Warn on multiline Summary (project.description)

Refactoring:

  • Remove indirection accessing metadata_version, add auto_metadata_version
  • Rework how dynamic works, add dynamic_metadata
  • Use dataclass instead of named tuple
  • chore: use named arguments instead of positional

0.9.0 beta 3

13 Sep 21:02
6a7a1b3

Choose a tag to compare

0.9.0 beta 3 Pre-release
Pre-release

What's Changed

  • Support unicode METADATA in the description again
  • Restore RFC822Message with support for unicode
  • Restore write_to_rfc822 with support for any Message
  • Restore recommendation to use string instead of bytes

Full Changelog: 0.9.0b2...0.9.0b3