Add support for .parent and .joinpath in zipfile.Path (#13213)
diff --git a/Lib/zipfile.py b/Lib/zipfile.py
index 62475c7..8f8cb86 100644
--- a/Lib/zipfile.py
+++ b/Lib/zipfile.py
@@ -2218,12 +2218,14 @@
def __repr__(self):
return self.__repr.format(self=self)
- def __truediv__(self, add):
+ def joinpath(self, add):
next = posixpath.join(self.at, add)
next_dir = posixpath.join(self.at, add, "")
names = self._names()
return self._next(next_dir if next not in names and next_dir in names else next)
+ __truediv__ = joinpath
+
@staticmethod
def _add_implied_dirs(names):
return names + [
@@ -2232,6 +2234,13 @@
if name and name + "/" not in names
]
+ @property
+ def parent(self):
+ parent_at = posixpath.dirname(self.at)
+ if parent_at:
+ parent_at += '/'
+ return self._next(parent_at)
+
def _names(self):
return self._add_implied_dirs(self.root.namelist())