interoperability-peps
interoperability-peps copied to clipboard
Document "Provides-Extra"
"Provides-Extra" ( in dist-info METADATA files) is currently in "production" use for providing extras support for wheels. Both wheel and setuptools have modifications to support it. It's an oddball in that it only lived in an earlier version of PEP426, before that was revamped to json. I feel like it should mentioned publicly somewhere in PEP345 or PEP426, so at least it's searchable in the future to explain how it came to be like this. In retrospect, I guess the "failure" that led to this oddity was in accepting PEP427 (wheel) w/o realizing that for it to be used in the real world of setuptools, it required a new metadata field.
migrated from https://bitbucket.org/pypa/pypi-metadata-formats/issues/29/document-provides-extra
+1 +1 +1
PEP 426 right before it was jsonified: https://hg.python.org/peps/file/3b67372b39ba/pep-0426.txt
A line in pkg_resources dealing with Provides-Extra: https://bitbucket.org/pypa/setuptools/src/4ce518784af886e6977fa2dbe58359d0fe161d0d/pkg_resources/init.py?at=default&fileviewer=file-view-default#init.py-2854
You might also be interested in just a few lines before that where we take the () off of the version numbers from METADATA!
An addendum to 345 likely makes the most sense - as you say, I missed that 427 actually needed this particular update, unlike the other changes in the earlier drafts of 426.
Given that I only got involved after PEPs 425/426/427 had already been written, I was intrigued to find that @dholth's original idea was actually to add Provides-Extra to PEP 345 as an after-the-fact standardisation of a de facto additional field: https://hg.python.org/peps/rev/4dc72bbf9ed2
In the context of https://github.com/pypa/pypa.io/issues/11, I submitted a PR that mentions Provides-Extra as a qualifier on the reference to PEP 345 as the current metadata specification: https://github.com/pypa/pypa.io/pull/12