Skip to content

Potential feature gaps when compared to the specs #1086

Description

@brettcannon

I asked ChatGPT to make a table of features that we might be missing.

Specification Covered by pypa/packaging? Notes / Implementation if Not Covered
Names and normalization ✅ Yes Implements PEP 503 via canonicalize_name() in packaging.utils 1
Core metadata specifications ✅ Yes Implements metadata parsing/validation in packaging.metadata 2
Version specifiers (PEP 440) ✅ Yes Provided via packaging.version and packaging.specifiers 1
Dependency specifiers (PEP 508) ✅ Yes Provided via packaging.requirements and packaging.markers 2
pyproject.toml spec (PEPs 518/621) ❌ No (#647) Handled by build backends (e.g. setuptools, Poetry); not parsed by packaging
Dependency Groups (PEP 735) ❌ No (#1065) Requires separate library (e.g. dependency-groups); packaging is out of scope
Inline script metadata (PEP 723) ❌ No For runtime script metadata; not a concern of packaging
Platform compatibility tags (PEP 425/600) ✅ Yes Implements via packaging.tags 2
Well-known Project URLs (PEP 753) ❌ No Normalised by index/pip; packaging only retains metadata as-is
Glob patterns ❌ No Handled by build tools; no native glob support in packaging
License Expression (SPDX / PEP 639) ✅ Yes Implemented through packaging.licenses 2
Recording installed projects (PEP 376) ❌ No Managed by installers (e.g. pip); not within packaging scope
Entry points spec ❌ No Handled by build backends and importlib.metadata; not by packaging
Direct URL origin/data (PEP 610) ❌ No (#944) Recorded by installers (pip); not by packaging
Python Virtual Environments (PEP 405) ❌ No Implemented in stdlib (venv) and virtualenv, not packaging
Externally Managed Environments (PEP 668) ❌ No Policy enforced by installers/package managers; not in packaging
Source distribution format ⚠️ Partial Filename parsing only (parse_sdist_filename()); no content handling
Binary distribution format (Wheel, PEP 427) ⚠️ Partial (#697) Filename parsing (parse_wheel_filename()); no wheel creation/content handling 12
.pypirc file ❌ No Configuration for uploads; in tools like twine/pip only
Simple repository API (PEP 503) ❌ No (#1088) Only name normalization covered; metadata fetching handled by pip/Warehouse
File Yanking (PEP 592) ❌ No (#1088) Handled by index and installer (pip); not in packaging
Index hosted attestations (PEP 658) ❌ No Security metadata handled by index/installer; not in packaging
Project Status Markers (PEP 792) ❌ No (#1088) Index metadata (e.g. deprecated); not in packaging
Python Description Formats ❌ No Description content type stored but not rendered/validated
build-details.json (PEP 739) ❌ No Generated by Python installer; read by build tools, not packaging
Reproducible Environments (beyond lock file) ❌ No Covered by pip/Pipenv; only pylock.toml lock file is supported
pylock.toml spec (PEP 751) ✅ Yes Supported in v26 through packaging.pylock
PyPA schemas ❌ No JSON schemas for validation; code validation done instead of schema-based

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions