Checklist
What happened?
I'm opening this up for visibility. Fixing it is potentially a little nuanced, since py-rattler's sdist is non-conformant in a slightly different way than the other sdists I've seen 🙂
TL;DR: PEP 625 dictates the naming structure and format of sdists, and says that a valid sdist must be a pax-style tax. However, py-rattler's sdist is (1) a GNU tar, and (2) uses an S typeflag to encode a sparse entry. Either of these is sufficient to cause a failure on a strict pax decoder, although (2) is arguably more serious (since support for GNU tars is somewhat common, whereas support for sparse entries is relatively less common).
Additional Context
This can be reproduced by looking at the offending block in the latest sdist:
gunzip py_rattler-0.23.2.tar.gz
dd if=py_rattler-0.23.2.tar bs=512 skip=15819 count=1 | xxd
Observe that byte 156 (the typeflag field) is 0x53 i.e. S, which indicates a GNU sparse member.
Checklist
What happened?
I'm opening this up for visibility. Fixing it is potentially a little nuanced, since py-rattler's sdist is non-conformant in a slightly different way than the other sdists I've seen 🙂
TL;DR: PEP 625 dictates the naming structure and format of sdists, and says that a valid sdist must be a pax-style tax. However, py-rattler's sdist is (1) a GNU tar, and (2) uses an
Stypeflag to encode a sparse entry. Either of these is sufficient to cause a failure on a strict pax decoder, although (2) is arguably more serious (since support for GNU tars is somewhat common, whereas support for sparse entries is relatively less common).Additional Context
This can be reproduced by looking at the offending block in the latest sdist:
Observe that byte 156 (the
typeflagfield) is0x53i.e.S, which indicates a GNU sparse member.