History¶
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.inject
classmethod 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.translate
with 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_performance
now 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_timeout
isn’t available.
v3.12.1¶
05 Feb 2023
gh-101566: In
CompleteDirs
, overrideZipFile.getinfo
to supply aZipInfo
for implied dirs.
v3.12.0¶
27 Jan 2023
gh-101144: Honor
encoding
as positional parameter toPath.open()
andPath.read_text()
.
v3.11.0¶
25 Nov 2022
#85: Added support for new methods on
Path
:match
glob
andrglob
relative_to
is_symlink
v3.10.0¶
23 Oct 2022
zipp
is now a package.
v3.9.1¶
23 Oct 2022
Removed ‘print’ expression in test_pickle.
bpo-43651: Apply
io.text_encoding
on Python 3.10 and later.
v3.9.0¶
08 Oct 2022
#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.
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.