Skip to main content

PEP 621 metadata parsing

Reason this release was yanked:

https://github.com/pypa/pyproject-metadata/issues/149#issuecomment-2348933752

Project description

pyproject-metadata

pre-commit.ci status checks tests codecov Documentation Status

Dataclass for PEP 621 metadata with support for core metadata generation

This project does not implement the parsing of pyproject.toml containing PEP 621 metadata.

Instead, given a Python data structure representing PEP 621 metadata (already parsed), it will validate this input and generate a PEP 643-compliant metadata file (e.g. PKG-INFO).

Usage

After installing pyproject-metadata, you can use it as a library in your scripts and programs:

from pyproject_metadata import StandardMetadata

parsed_pyproject = { ... }  # you can use parsers like `tomli` to obtain this dict
metadata = StandardMetadata.from_pyproject(parsed_pyproject, allow_extra_keys = False)
print(metadata.entrypoints)  # same fields as defined in PEP 621

pkg_info = metadata.as_rfc822()
print(bytes(pkg_info).decode("utf-8"))  # core metadata

METADATA 2.4

If project.license is a string or project.license-files is present, then METADATA 2.4+ will be used. A user is expected to validate and normalize metadata.license with an SPDX validation tool, such as the one being added to packaging. Add something like this:

if isinstance(metadata.license, str):
    metadata.license = packaging.licenses.normalize_license_expression(metadata.license)

A backend is also expected to copy entries from project.licence_files, which are paths relative to the project directory, into the dist-info/licenses folder, preserving the original source structure.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyproject_metadata-0.9.0b1.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyproject_metadata-0.9.0b1-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file pyproject_metadata-0.9.0b1.tar.gz.

File metadata

  • Download URL: pyproject_metadata-0.9.0b1.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pyproject_metadata-0.9.0b1.tar.gz
Algorithm Hash digest
SHA256 126614f9ebd38a0cfcd311928e3e6f62be21eb55c70e86cce3b83ea5adc5bf57
MD5 8562daa4761db4dfee68a27f39e99316
BLAKE2b-256 8c38c955e727ab79958f547fece9e080c1a529423b51c39b93416b6b19c99408

See more details on using hashes here.

File details

Details for the file pyproject_metadata-0.9.0b1-py3-none-any.whl.

File metadata

File hashes

Hashes for pyproject_metadata-0.9.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 a362355eaf190e279c6f917dca09acb30f4b73059e2f65fbde47f406fdf65f13
MD5 127846675d0f7edc32fcb5cf41eaa697
BLAKE2b-256 5817e797dc5dc680735d6f5172bfa7d2118f926f54b166f34a036bb0fcb85288

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page