History¶
v4.1.0¶
18 May 2026
Features¶
Path.iterdir now raises NotADirectoryError (formerly ValueError) when call on something that’s not a directory. (#154)
v4.0.0¶
13 Apr 2026
Deprecations and Removals¶
Drop workaround for stacklevel bug on older PyPy releases. (#149)
v3.23.1¶
18 Aug 2025
Bugfixes¶
str(Path(...))now renders “:zipfile” for the filename when a zipfile has no filename instead of failing with a TypeError. (#134)
v3.23.0¶
08 Jun 2025
Features¶
Add a compatibility shim for Python 3.13 and earlier. (#145)
v3.22.0¶
26 May 2025
Features¶
Backported simplified tests from python/cpython#123424. (#142)
Bugfixes¶
Fixed
.name,.stem, and other basename-based properties on Windows when working with a zipfile on disk. (#133)
v3.21.0¶
10 Nov 2024
Features¶
Improve performances of
zipfile.Path.open()for non-reading modes. (1a1928d)Rely on cached_property to cache values on the instance.
Rely on save_method_args to save method args.
v3.20.2¶
13 Sep 2024
Bugfixes¶
Make zipp.compat.overlay.zipfile hashable. (#126)
v3.20.1¶
26 Aug 2024
Bugfixes¶
Replaced SanitizedNames with a more surgical fix for infinite loops, restoring support for names with special characters in the archive. (python/cpython#123270)
v3.20.0¶
11 Aug 2024
Features¶
Made the zipfile compatibility overlay available as zipp.compat.overlay.
v3.19.3¶
11 Aug 2024
Bugfixes¶
Also match directories in Path.glob. (#121)
v3.19.2¶
04 Jun 2024
No significant changes.
v3.19.1¶
31 May 2024
Bugfixes¶
Improved handling of malformed zip files. (#119)
v3.19.0¶
26 May 2024
Features¶
Implement is_symlink. (#117)
v3.18.2¶
16 May 2024
No significant changes.
v3.18.1¶
14 Mar 2024
No significant changes.
v3.18.0¶
12 Mar 2024
Features¶
Bugfixes¶
Add special accounting for pypy when computing the stack level for text encoding warnings. (#114)
v3.17.0¶
18 Sep 2023
Features¶
Added
CompleteDirs.injectclassmethod to make available for use elsewhere.
Bugfixes¶
Avoid matching path separators for ‘?’ in glob.
v3.16.2¶
14 Jul 2023
Bugfixes¶
In
Path.match, Windows path separators are no longer honored. The fact that they were was incidental and never supported. (#92)Fixed name/suffix/suffixes/stem operations when no filename is present and the Path is not at the root of the zipfile. (#96)
Reworked glob utilizing the namelist directly. (#101)
v3.16.1¶
12 Jul 2023
Bugfixes¶
Replaced the
fnmatch.translatewith a fresh glob-to-regex translator for more correct matching behavior. (#98)
v3.16.0¶
08 Jul 2023
Features¶
Require Python 3.8 or later.
v3.15.0¶
24 Feb 2023
gh-102209:
test_implied_dirs_performancenow tests measures the time complexity experimentally.
v3.14.0¶
17 Feb 2023
Minor cleanup in tests, including #93.
v3.13.0¶
09 Feb 2023
In tests, add a fallback when
func_timeoutisn’t available.
v3.12.1¶
05 Feb 2023
gh-101566: In
CompleteDirs, overrideZipFile.getinfoto supply aZipInfofor implied dirs.
v3.12.0¶
27 Jan 2023
gh-101144: Honor
encodingas positional parameter toPath.open()andPath.read_text().
v3.11.0¶
25 Nov 2022
#85: Added support for new methods on
Path:matchglobandrglobrelative_tois_symlink
v3.10.0¶
23 Oct 2022
zippis now a package.
v3.9.1¶
23 Oct 2022
Removed ‘print’ expression in test_pickle.
bpo-43651: Apply
io.text_encodingon Python 3.10 and later.
v3.9.0¶
08 Oct 2022
#81:
Pathobjects are now pickleable if they’ve been constructed from pickleable objects. Any restored objects will re-construct the zip file with the original arguments.
v3.8.1¶
12 Jul 2022
Refreshed packaging.
Enrolled with Tidelift.
v3.8.0¶
03 Apr 2022
Removed compatibility code.
v3.7.0¶
30 Dec 2021
Require Python 3.7 or later.
v3.6.0¶
29 Sep 2021
#78: Only Path is exposed in the public API.
v3.5.1¶
28 Sep 2021
#77: Remove news file intended only for CPython.
v3.5.0¶
14 May 2021
#74 and bpo-44095: Added .suffix, .suffixes,
and .stem properties.
v3.4.2¶
02 Jul 2021
Refresh package metadata.
v3.4.1¶
04 Mar 2021
Refresh packaging.
v3.4.0¶
25 Oct 2020
#68 and bpo-42090: Path.joinpath now takes arbitrary
positional arguments and no longer accepts add as a
keyword argument.
v3.3.2¶
23 Oct 2020
Updated project metadata including badges.
v3.3.1¶
15 Oct 2020
bpo-42043: Add tests capturing subclassing requirements.
v3.3.0¶
03 Oct 2020
#9: Path objects now expose a .filename attribute
and rely on that to resolve .name and .parent when
the Path object is at the root of the zipfile.
v3.2.0¶
22 Sep 2020
#57 and bpo-40564: Mutate the passed ZipFile object type instead of making a copy. Prevents issues when both the local copy and the caller’s copy attempt to close the same file handle.
#56 and bpo-41035: Path._next now honors
subclasses.
#55: Path.is_file() now returns False for non-existent names.
v3.1.0¶
03 Mar 2020
#47: .open now raises FileNotFoundError and
IsADirectoryError when appropriate.
v3.0.0¶
17 Feb 2020
#44: Merge with v1.2.0.
v1.2.0¶
17 Feb 2020
#44: zipp.Path.open() now supports a compatible signature
as pathlib.Path.open(), accepting text (default) or binary
modes and soliciting keyword parameters passed through to
io.TextIOWrapper (encoding, newline, etc). The stream is
opened in text-mode by default now. open no
longer accepts pwd as a positional argument and does not
accept the force_zip64 parameter at all. This change is
a backward-incompatible change for that single function.
v2.2.1¶
17 Feb 2020
#43: Merge with v1.1.1.
v1.1.1¶
17 Feb 2020
#43: Restored performance of implicit dir computation.
v2.2.0¶
07 Feb 2020
#36: Rebuild package with minimum Python version declared both in package metadata and in the python tag.
v2.1.0¶
25 Jan 2020
#32: Merge with v1.1.0.
v1.1.0¶
25 Jan 2020
#32: For read-only zip files, complexity of .exists and
joinpath is now constant time instead of O(n), preventing
quadratic time in common use-cases and rendering large
zip files unusable for Path. Big thanks to Benjy Weinberger
for the bug report and contributed fix (#33).
v2.0.1¶
22 Jan 2020
#30: Corrected version inference (from jaraco/skeleton#12).
v2.0.0¶
19 Jan 2020
Require Python 3.6 or later.
v1.0.0¶
13 Jan 2020
Re-release of 0.6 to correspond with release as found in Python 3.8.
v0.6.0¶
24 Aug 2019
#12: When adding implicit dirs, ensure that ancestral directories are added and that duplicates are excluded.
The library now relies on more_itertools.
v0.5.2¶
07 Jul 2019
#7: Parent of a directory now actually returns the parent.
v0.5.1¶
16 May 2019
Declared package as backport.
v0.5.0¶
08 May 2019
Add .joinpath() method and .parent property.
Now a backport release of the zipfile.Path class.
v0.4.0¶
28 Apr 2019
#4: Add support for zip files with implied directories.
v0.3.3¶
#3: Fix issue where .name on a directory was empty.
v0.3.2¶
01 Dec 2018
#2: Fix TypeError on Python 2.7 when classic division is used.
v0.3.1¶
01 Dec 2018
#1: Fix TypeError on Python 3.5 when joining to a path-like object.
v0.3.0¶
30 Nov 2018
Add support for constructing a zipp.Path from any path-like
object.
zipp.Path is now a new-style class on Python 2.7.
v0.2.1¶
15 Nov 2018
Fix issue with __str__.
v0.2.0¶
15 Nov 2018
Drop reliance on future-fstrings.
v0.1.0¶
15 Nov 2018
Initial release with basic functionality.