Skip to content

Releases: pypa/pyproject-metadata

0.9.0

23 Oct 03:35
cb74500
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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

0.9.0 beta 2

13 Sep 18:35
2f23a31
Compare
Choose a tag to compare
0.9.0 beta 2 Pre-release
Pre-release

What's Changed

  • Support unicode METADATA again
  • Remove the custom RFC822Message entirely, replaced with a custom Policy (which also handles multilines)
  • Handle multiline the way setuptools does with smart indentation
  • Remove write_to_rfc822
  • Remove the multiline warning for all metadata
  • Add some unicode and reading tests
  • Swap EmailMessage for Message
  • Add PyPI attestations

Full Changelog: 0.9.0b1...0.9.0b2

0.9.0 beta 1

13 Sep 05:47
14dcc1d
Compare
Choose a tag to compare
0.9.0 beta 1 Pre-release
Pre-release

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). The beta release is intended for backend authors to try out the changes before a final release.

What's Changed

Features:

  • Added PEP 639 support for SPDX license and license files, METADATA 2.4
  • Validate extra keys (warning, opt-in error)
  • Validate project name
  • Validate entrypoint group names
  • Add multiline warning

Fixes:

  • Correct typing for emails
  • Match EmailMessage spacing

Refactoring:

  • Move fetcher methods
  • Put validation in function
  • Prepare for EmailMessage
  • Use EmailMessage class

Internal and CI:

  • Add 3.13 to testing
  • Add ruff-format
  • Actions and dependabot
  • Better changelog auto-generation
  • Generate attestations for releases
  • macos-latest now points at macos-14
  • Refactor and cleanup tests
  • Add human readable IDs to tests
  • Fix coverage context

Full Changelog: 0.8.0...0.9.0b1