Skip to content

PEP XXX: Wheel Variants: Package Format#4820

Closed
DEKHTIARJonathan wants to merge 1 commit intopython:mainfrom
wheelnext:pep-wheel-variants-stage
Closed

PEP XXX: Wheel Variants: Package Format#4820
DEKHTIARJonathan wants to merge 1 commit intopython:mainfrom
wheelnext:pep-wheel-variants-stage

Conversation

@DEKHTIARJonathan
Copy link
Contributor

@DEKHTIARJonathan DEKHTIARJonathan commented Feb 17, 2026

Following the suggestions given in the previous PEP 817 thread [1], we have decided to split PEP 817 into a series of smaller PEPs, with the hope that this will make it easier to comprehend the concept and discuss it.

This is the first split PEP, that specifically focuses on the low-level details necessary for variants wheels to work, that is:

  • adding variant label to the filename
  • storing variant properties in the file
  • exposing variants on the index
  • ordering/selecting variants
  • introducing variant-conditional dependencies via environment markers
  • exposing variant wheels in pylock.toml

The PEP keeps variant properties abstract, deferring their governance and determining their compatibility to a subsequent PEP, along with building wheels. We've also significantly cut motivation down (the original is kept in PEP 817 for reference). We've tried to make the "specification" part easier to comprehend, and removed the duplicate "rationale-overview", in favor of a more focused "rationale" section.

Compared to the previous iteration of PEP 817, we've also corrected the variant ordering algorithm to handle corner cases better.

[1] https://discuss.python.org/t/pep-817-wheel-variants-beyond-platform-tags/105860


📚 Documentation preview 📚: https://pep-previews--4820.org.readthedocs.build/

Following the suggestions given in the previous PEP 817 thread [1], we
have decided to split PEP 817 into a series of smaller PEPs, with the
hope that this will make it easier to comprehend the concept and discuss
it.

This is the first split PEP, that specifically focuses on the low-level
details necessary for variants wheels to work, that is:

- adding variant label to the filename
- storing variant properties in the file
- exposing variants on the index
- ordering/selecting variants
- introducing variant-conditional dependencies via environment markers
- exposing variant wheels in `pylock.toml`

The PEP keeps variant properties abstract, deferring their governance
and determining their compatibility to a subsequent PEP, along with
building wheels. We've also significantly cut motivation down (the
original is kept in PEP 817 for reference). We've tried to make the
"specification" part easier to comprehend, and removed the duplicate
"rationale-overview", in favor of a more focused "rationale" section.

Compared to the previous iteration of PEP 817, we've also corrected the
variant ordering algorithm to handle corner cases better.

[1] https://discuss.python.org/t/pep-817-wheel-variants-beyond-platform-tags/105860

Signed-off-by: Michał Górny <mgorny@quansight.com>
Co-authored-by: Jonathan Dekhtiar <jonathan@dekhtiar.com>
Co-authored-by: Konstantin Schütze <konstin@mailbox.org>
Co-authored-by: Ralf Gommers <ralf.gommers@gmail.com>
@DEKHTIARJonathan DEKHTIARJonathan requested a review from a team as a code owner February 17, 2026 19:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants