+ create standards-compliant Python wheel archives - #109
Merged
Conversation
Hawkynt
force-pushed
the
feat/wheel-writer
branch
2 times, most recently
from
August 28, 2026 17:21
52117ad to
0e8e56c
Compare
Promotes Wheel from read-only to WORM creation. A caller-supplied root *.dist-info/METADATA and WHEEL are kept as given; RECORD is regenerated from the bytes actually written, with PEP 427 URL-safe SHA-256 hashes and sizes, and its own row left empty as the spec requires. The .dist-info entries are placed last, and the reader-only metadata.ini input is ignored. A tree that carries no packaging metadata gets a minimal deterministic pair synthesized rather than being refused, which is what eight conversion pairs need. The directory takes the escaped distribution name and the metadata the dashed one.
Hawkynt
force-pushed
the
feat/wheel-writer
branch
from
August 28, 2026 20:31
0e8e56c to
1fd6744
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
*.dist-info/METADATA/WHEELmetadata when present.dist-infometadata when the source is just an arbitrary file treemetadata.iniinput during creationRECORDfrom the actual files being written using PEP 427 SHA-256 URL-safe hashes and byte sizesRECORDself-row with empty hash/size as required.dist-infolast as recommended by PEP 427Verification
Added/extended NUnit coverage for:
CanCreatecapabilityThe first CI run exposed the repository-wide conversion-matrix contract: every
IArchiveCreatabletarget must be able to carry generic archive payloads. The writer now satisfies that contract without weakening Wheel validity. Repository CI performs compile/test verification in this environment.