summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/zipapp.py2
-rw-r--r--Misc/NEWS.d/next/Library/2023-06-25-06-57-24.gh-issue-104527.TJEUkd.rst1
2 files changed, 2 insertions, 1 deletions
diff --git a/Lib/zipapp.py b/Lib/zipapp.py
index d8ebfcb..03a214e 100644
--- a/Lib/zipapp.py
+++ b/Lib/zipapp.py
@@ -138,7 +138,7 @@ def create_archive(source, target=None, interpreter=None, main=None,
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):
+ if filter is None or filter(arcname) and child.resolve() != arcname.resolve():
z.write(child, arcname.as_posix())
if main_py:
z.writestr('__main__.py', main_py.encode('utf-8'))
diff --git a/Misc/NEWS.d/next/Library/2023-06-25-06-57-24.gh-issue-104527.TJEUkd.rst b/Misc/NEWS.d/next/Library/2023-06-25-06-57-24.gh-issue-104527.TJEUkd.rst
new file mode 100644
index 0000000..50b845b
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-06-25-06-57-24.gh-issue-104527.TJEUkd.rst
@@ -0,0 +1 @@
+Zipapp will now skip over apending an archive to itself.