You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have recently installed Python 3.13 (Windows x64) over 3.12.
Now zipapp.create_archive(..) is creating just empty archives.
After some fiddling around I found there might be an issue in these lines:
(from zipapp.py, lines 113 ff)
with _maybe_open(target, 'wb') as fd:
_write_file_prefix(fd, interpreter)
compression = (zipfile.ZIP_DEFLATED if compressed else
zipfile.ZIP_STORED)
with zipfile.ZipFile(fd, 'w', compression=compression) as z:
for child in sorted(source.rglob('*')):
arcname = child.relative_to(source)
if filter is None or filter(arcname) and child.resolve() != arcname.resolve(): # ██ LOOK HERE ! ██
z.write(child, arcname.as_posix())
if main_py:
z.writestr('__main__.py', main_py.encode('utf-8'))
This change was introduced in Python 3.13 (have verified against 3.12 sources) and seemingly causes the trouble.
My guess is, as child is pointing to the same file as arcname, and naturally, they both resolve to the same file, no file gets added due to the != check, ever, to the archive-to-be-created.
Maybe it was intended to check against target, not arcname?
Once I monkeypatched the and child.resolve() != arcname.resolve() part away, the archive got written again.
Or am I just not doing it right?
Any help much appreciated!
Sebastian.
CPython versions tested on:
3.13
Operating systems tested on:
Windows
The text was updated successfully, but these errors were encountered:
Bug report
Bug description:
Good evening,
I have recently installed Python 3.13 (Windows x64) over 3.12.
Now
zipapp.create_archive(..)
is creating just empty archives.After some fiddling around I found there might be an issue in these lines:
(from zipapp.py, lines 113 ff)
This change was introduced in Python 3.13 (have verified against 3.12 sources) and seemingly causes the trouble.
My guess is, as
child
is pointing to the same file asarcname
, and naturally, they both resolve to the same file, no file gets added due to the!=
check, ever, to the archive-to-be-created.Maybe it was intended to check against
target
, notarcname
?Once I monkeypatched the
and child.resolve() != arcname.resolve()
part away, the archive got written again.Or am I just not doing it right?
Any help much appreciated!
Sebastian.
CPython versions tested on:
3.13
Operating systems tested on:
Windows
The text was updated successfully, but these errors were encountered: