python-pyproject-metadata
Port variant v12
Summary PEP 621 metadata parsing (3.12)
BROKEN
Package version 0.9.0
Homepage https://github.com/pypa/pyproject-metadata
Keywords python
Maintainer Python Automaton
License Not yet specified
Other variants v13
Ravenports Buildsheet | History
Ravensource Port Directory | History
Last modified 15 NOV 2024, 16:08:50 UTC
Port created 01 SEP 2023, 04:55:59 UTC
Subpackage Descriptions
single # pyproject-metadata [![pre-commit.ci status][pre-commit-badge]][pre-commit-link] [![checks][gha-checks-badge]][gha-checks-link] [![tests][gha-tests-badge]][gha-tests-link] [![codecov][codecov-badge]][codecov-link] [![Documentation Status][rtd-badge]][rtd-link] [![PyPI version][pypi-version]][pypi-link] > 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: ```python 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(str(pkg_info)) # core metadata ``` ## SPDX licenses (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: ```python 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. ## Dynamic Metadata (METADATA 2.2+) Pyproject-metadata supports dynamic metadata. To use it, specify your METADATA fields in `dynamic_metadata`. If you want to convert `pyproject.toml` field names to METADATA field(s), use `pyproject_metadata.pyproject_to_metadata("field-name")`, which will return a frozenset of metadata names that are touched by that field. ## Adding extra fields You can add extra fields to the Message returned by `to_rfc822()`, as long as they are valid metadata entries. ## Collecting multiple errors You can use the `all_errors` argument to `from_pyproject` to show all errors in the metadata parse at once, instead of raising an exception on the first one. The exception type will be `pyproject_metadata.errors.ExceptionGroup` (which is just `ExceptionGroup` on Python 3.11+). ## Validating extra fields By default, a warning (`pyproject_metadata.errors.ExtraKeyWarning`) will be issued for extra fields at the project table. You can pass `allow_extra_keys=` to either avoid the check (`True`) or hard error (`False`). If you want to detect extra keys, you can get them with `pyproject_metadata.extra_top_level` and `pyproject_metadata.extra_build_system`. It is recommended that build systems only warn on failures with these extra keys. ## Validating classifiers
Configuration Switches (platform-specific settings discarded)
PY312 ON Build using Python 3.12 PY313 OFF Build using Python 3.13
Package Dependencies by Type
Build (only) python312:dev:std
python-pip:single:v12
autoselect-python:single:std
Build and Runtime python312:primary:std
Runtime (only) python-packaging:single:v12
Download groups
main mirror://PYPIWHL/e8/61/9dd3e68d2b6aa40a5fc678662919be3c3a7bf22cba5a6b4437619b77e156
Distribution File Information
fc862aab066a2e87734333293b0af5845fe8ac6cb69c451a41551001e923be0b 18314 python-src/pyproject_metadata-0.9.0-py3-none-any.whl
Ports that require python-pyproject-metadata:v12
python-meson-python:v12 Meson Python build backend (PEP 517) (3.12)
python-pyzmq:v12 Python bindings for 0MQ (3.12)