Releases: pypa/pyproject-metadata
0.10.0
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
- @DimitriPapadopoulos made their first contribution in #250
- @onerandomusername made their first contribution in #263
Full Changelog: 0.9.1...0.10.0
0.9.1
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.licensesexample 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
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=TruecausesExceptionGroup'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
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
- 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
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
Refactoring:
- Move
validate_*functions intoextras_*instead - Use
Dynamicfor 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
Features:
- Add TypedDict's in new module for typing pyproject.toml dicts
all_errors=TruecausesExceptionGroup'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
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
What's Changed
- Support unicode METADATA in the description again
- Restore
RFC822Messagewith support for unicode - Restore
write_to_rfc822with support for any Message - Restore recommendation to use string instead of bytes
Full Changelog: 0.9.0b2...0.9.0b3