NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #76 most downloaded on PyPI
Backport of pathlib-compatible object wrapper for zip files
Last release today
03 Oct 2026
Release timing varies
gaps range from 9 days to 10 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
65 releases · first in 2018
Correct ! negation and literal ^ characters in character classes in Path.glob and Path.rglob, without matching path separators.
Correct ! negation and literal ^ characters in character classes in Path.glob and Path.rglob, without matching path separators.
Path.iterdir now raises NotADirectoryError (formerly ValueError) when call on something that's not a directory.
Path.iterdir now raises NotADirectoryError (formerly ValueError) when call on something that's not a directory. (#154)
One column per quarter.
str(Path(...)) now renders ":zipfile" for the filename when a zipfile has no filename instead of failing with a TypeError.
str(Path(...)) now renders ":zipfile" for the filename when a zipfile has no filename instead of failing with a TypeError. (#134)
Add a compatibility shim for Python 3.13 and earlier.
Add a compatibility shim for Python 3.13 and earlier. (#145)
Backported simplified tests from python/cpython#123424.
Backported simplified tests from python/cpython#123424. (#142)
Fixed .name, .stem, and other basename-based properties on Windows when working with a zipfile on disk. (#133)
Improve performances of zipfile.Path.open for non-reading modes.
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.
Make zipp.compat.overlay.zipfile hashable.
Make zipp.compat.overlay.zipfile hashable. (#126)
Replaced SanitizedNames with a more surgical fix for infinite loops, restoring support for names with special characters in the archive. (python/cpyth
Replaced SanitizedNames with a more surgical fix for infinite loops, restoring support for names with special characters in the archive. (python/cpython#123270)
Made the zipfile compatibility overlay available as zipp.compat.overlay.
Made the zipfile compatibility overlay available as zipp.compat.overlay.
Also match directories in Path.glob.
Also match directories in Path.glob. (#121)
No significant changes.
No significant changes.
Improved handling of malformed zip files.
Improved handling of malformed zip files. (#119)
Features -------- - Implement is_symlink.
Implement is_symlink. (#117)
No significant changes.
No significant changes.
No significant changes.
No significant changes.
Bypass ZipFile.namelist in glob for better performance.
Bypass ZipFile.namelist in glob for better performance. (#106)
Refactored glob functionality to support a more generalized solution with support for platform-specific path separators. (#108)
Add special accounting for pypy when computing the stack level for text encoding warnings. (#114)
Added CompleteDirs.inject classmethod to make available for use elsewhere.
Added CompleteDirs.inject classmethod to make available for use elsewhere.
Avoid matching path separators for '?' in glob.
In Path.match, Windows path separators are no longer honored. The fact that they were was incidental and never supported.
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)
Replaced the fnmatch.translate with a fresh glob-to-regex translator for more correct matching behavior.
Replaced the fnmatch.translate with a fresh glob-to-regex translator for more correct matching behavior. (#98)
Features -------- - Require Python 3.8 or later.
Require Python 3.8 or later.
gh-102209: test_implied_dirs_performance now tests measures the time complexity experimentally.
gh-102209: test_implied_dirs_performance now tests measures the time complexity experimentally.
Minor cleanup in tests, including #93.
Minor cleanup in tests, including #93.
In tests, add a fallback when func_timeout isn't available.
In tests, add a fallback when func_timeout isn't available.
gh-101566: In CompleteDirs, override ZipFile.getinfo to supply a ZipInfo for implied dirs.
gh-101566: In CompleteDirs, override ZipFile.getinfo to supply a ZipInfo for implied dirs.
gh-101144: Honor encoding as positional parameter to Path.open() and Path.read_text().
gh-101144: Honor encoding as positional parameter to Path.open() and Path.read_text().
* #85: Added support for new methods on Path: - match - glob and rglob - relative_to - is_symlink
#85: Added support for new methods on Path:
match
glob and rglob
relative_to
is_symlink
* zipp is now a package.
zipp is now a package.
Removed 'print' expression in test_pickle.
Removed 'print' expression in test_pickle.
bpo-43651: Apply io.text_encoding on Python 3.10 and later.
* #81: Path objects are now pickleable if they've been constructed from pickleable objects. Any restored objects will re-construct the zip file with t
#81: Path objects are now pickleable if they've been constructed from pickleable objects. Any restored objects will re-construct the zip file with the original arguments.
Refreshed packaging. Enrolled with Tidelift.
Refreshed packaging.
Enrolled with Tidelift.
Removed compatibility code.
Removed compatibility code.
Require Python 3.7 or later.
Require Python 3.7 or later.
#78: Only Path is exposed in the public API.
#78: Only Path is exposed in the public API.
#77: Remove news file intended only for CPython.
#77: Remove news file intended only for CPython.
#74 and bpo-44095: Added .suffix, .suffixes, and .stem properties.
#74 and bpo-44095: Added .suffix, .suffixes, and .stem properties.
Refresh package metadata.
Refresh package metadata.
Refresh packaging.
Refresh packaging.
positional arguments and no longer accepts add as a keyword argument.
#68 and bpo-42090: Path.joinpath now takes arbitrary positional arguments and no longer accepts add as a keyword argument.
Updated project metadata including badges.
Updated project metadata including badges.
bpo-42043: Add tests capturing subclassing requirements.
bpo-42043: Add tests capturing subclassing requirements.
and rely on that to resolve .name and .parent when the Path object is at the root of the zipfile.
#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.
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.
#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.
IsADirectoryError when appropriate.
#47: .open now raises FileNotFoundError and IsADirectoryError when appropriate.
#44: Merge with v1.2.0.
#44: Merge with v1.2.0.
#43: Merge with v1.1.1.
#43: Merge with v1.1.1.
in package metadata and in the python tag.
#36: Rebuild package with minimum Python version declared both in package metadata and in the python tag.
#32: Merge with v1.1.0.
#32: Merge with v1.1.0.
#30: Corrected version inference (from jaraco/skeleton#12).
#30: Corrected version inference (from jaraco/skeleton#12).
Require Python 3.6 or later.
Require Python 3.6 or later.
as pathlib.Path.open(), accepting text (default) or binary modes and soliciting keyword parameters passed through to io.TextIOWrapper (encoding, newli
#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.
#43: Restored performance of implicit dir computation.
#43: Restored performance of implicit dir computation.
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 than
#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).
Re-release of 0.6 to correspond with release as found in Python 3.8.
Re-release of 0.6 to correspond with release as found in Python 3.8.
are added and that duplicates are excluded.
#12: When adding implicit dirs, ensure that ancestral directories are added and that duplicates are excluded.
The library now relies on more_itertools.
#7: Parent of a directory now actually returns the parent.
#7: Parent of a directory now actually returns the parent.
Declared package as backport.
Declared package as backport.
Add .joinpath() method and .parent property.
Add .joinpath() method and .parent property.
Now a backport release of the zipfile.Path class.
#4: Add support for zip files with implied directories.
#4: Add support for zip files with implied directories.
#3: Fix issue where .name on a directory was empty.
#3: Fix issue where .name on a directory was empty.
#2: Fix TypeError on Python 2.7 when classic division is used.
#2: Fix TypeError on Python 2.7 when classic division is used.
Your coding agent can read these notes before it upgrades. Set up the MCP server →