- 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.
- Also match directories in Path.glob. (#121)
No significant changes.
- Improved handling of malformed zip files. (#119)
- Implement is_symlink. (#117)
No significant changes.
No significant changes.
- 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.
- 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. (#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. (#98)
- Require Python 3.8 or later.
- gh-102209:
test_implied_dirs_performance
now tests measures the time complexity experimentally.
- Minor cleanup in tests, including #93.
- In tests, add a fallback when
func_timeout
isn't available.
- gh-101566: In
CompleteDirs
, overrideZipFile.getinfo
to supply aZipInfo
for implied dirs.
- gh-101144: Honor
encoding
as positional parameter toPath.open()
andPath.read_text()
.
- #85: Added support for new methods on
Path
:match
glob
andrglob
relative_to
is_symlink
zipp
is now a package.
- 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 the original arguments.
Refreshed packaging.
Enrolled with Tidelift.
Removed compatibility code.
Require Python 3.7 or later.
#78: Only Path
is exposed in the public API.
#77: Remove news file intended only for CPython.
#74 and bpo-44095: Added .suffix
, .suffixes
,
and .stem
properties.
Refresh package metadata.
Refresh packaging.
#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.
bpo-42043: Add tests capturing subclassing requirements.
#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.
#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.
#47: .open
now raises FileNotFoundError
and
IsADirectoryError
when appropriate.
#44: Merge with v1.2.0.
#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: Merge with v1.1.1.
#43: Restored performance of implicit dir computation.
#36: Rebuild package with minimum Python version declared both in package metadata and in the python tag.
#32: Merge with v1.1.0.
#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).
#30: Corrected version inference (from jaraco/skeleton#12).
Require Python 3.6 or later.
Re-release of 0.6 to correspond with release as found in Python 3.8.
#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.
Declared package as backport.
Add .joinpath()
method and .parent
property.
Now a backport release of the zipfile.Path
class.
#4: Add support for zip files with implied directories.
#3: Fix issue where .name
on a directory was empty.
#2: Fix TypeError on Python 2.7 when classic division is used.
#1: Fix TypeError on Python 3.5 when joining to a path-like object.
Add support for constructing a zipp.Path
from any path-like
object.
zipp.Path
is now a new-style class on Python 2.7.
Fix issue with __str__
.
Drop reliance on future-fstrings.
Initial release with basic functionality.