Conversation
Signed-off-by: William Woodruff <william@yossarian.net>
Member
Author
|
CCing some other folks who I think might be interested: @konstin @miketheman |
woodruffw
commented
Aug 18, 2026
miketheman
reviewed
Aug 18, 2026
Signed-off-by: William Woodruff <william@yossarian.net>
sethmlarson
reviewed
Sep 9, 2026
miketheman
approved these changes
Sep 9, 2026
sethmlarson
approved these changes
Sep 9, 2026
sethmlarson
left a comment
Contributor
There was a problem hiding this comment.
LGTM, thanks @woodruffw!
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.
I'm opening this as a direct living spec PR, since it's arguably just a clarification of the existing requirement, not a new one 🙂. However, if there's disagreement about that, I'm happy to take this to DPO for discussion first.
My rationale: the sdist spec already says that the tarball must be a POSIX.1-2001 pax archive. This implies a bunch of things that people may not realize, but are already fully covered by that requirement. For example, GNU-style tar files are not pax-conforming (they use a different magic and have special extended value encoding rules), and the
Stypeflag is GNU-specific.There's a passable argument to be made that
GNU.sparse.*is pax-conforming, since they're pax-style records. However:GNU.sparse.*are illegal to represent in pax, since they use duplicated record names;GNU.sparse.*in general changes the framing logic, making it hard to correctly model the parse of a sparse member with a standard pax-conforming parser.Finally, I think the most controversial part of this is adding a
NOT RECOMMENDEDfor other pax-style (but not standard) vendor records. These are technically allowed in pax, just not defined by the standard themselves. However, they're also subject to a bunch of interoperability problems. For example,SCHILY.xattris sometimes encoded as raw binary, which is not pax-conforming and causes problems for standard parsers.(And more generally, Python source distributions have no business encoding xattrs or anything like that, from what I can tell 🙂)
📚 Documentation preview 📚: https://python-packaging-user-guide--2108.org.readthedocs.build/en/2108/