aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/Lib/zipfile/__init__.py
diff options
context:
space:
mode:
authorshadchin <shadchin@yandex-team.com>2024-04-28 21:17:44 +0300
committershadchin <shadchin@yandex-team.com>2024-04-28 21:25:54 +0300
commita55d99a3eb72f90355bc146baeda18aa7eb97352 (patch)
treeb17cfed786effe8b81bba022239d6729f716fbeb /contrib/tools/python3/Lib/zipfile/__init__.py
parent67bf49d08acf1277eff4c336021ac22d964bb4c4 (diff)
downloadydb-a55d99a3eb72f90355bc146baeda18aa7eb97352.tar.gz
Update Python 3 to 3.12.3
7d09de7d8b99ea2be554ef0fc61276942ca9c2e1
Diffstat (limited to 'contrib/tools/python3/Lib/zipfile/__init__.py')
-rw-r--r--contrib/tools/python3/Lib/zipfile/__init__.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/contrib/tools/python3/Lib/zipfile/__init__.py b/contrib/tools/python3/Lib/zipfile/__init__.py
index 8918484207..91358156bc 100644
--- a/contrib/tools/python3/Lib/zipfile/__init__.py
+++ b/contrib/tools/python3/Lib/zipfile/__init__.py
@@ -582,7 +582,15 @@ class ZipInfo (object):
def is_dir(self):
"""Return True if this archive member is a directory."""
- return self.filename.endswith('/')
+ if self.filename.endswith('/'):
+ return True
+ # The ZIP format specification requires to use forward slashes
+ # as the directory separator, but in practice some ZIP files
+ # created on Windows can use backward slashes. For compatibility
+ # with the extraction code which already handles this:
+ if os.path.altsep:
+ return self.filename.endswith((os.path.sep, os.path.altsep))
+ return False
# ZIP encryption uses the CRC32 one-byte primitive for scrambling some
@@ -1554,7 +1562,8 @@ class ZipFile:
self._didModify = True
def read(self, name, pwd=None):
- """Return file bytes for name."""
+ """Return file bytes for name. 'pwd' is the password to decrypt
+ encrypted files."""
with self.open(name, "r", pwd) as fp:
return fp.read()
@@ -1706,7 +1715,8 @@ class ZipFile:
"""Extract a member from the archive to the current working directory,
using its full name. Its file information is extracted as accurately
as possible. `member' may be a filename or a ZipInfo object. You can
- specify a different directory using `path'.
+ specify a different directory using `path'. You can specify the
+ password to decrypt the file using 'pwd'.
"""
if path is None:
path = os.getcwd()
@@ -1719,7 +1729,8 @@ class ZipFile:
"""Extract all members from the archive to the current working
directory. `path' specifies a different directory to extract to.
`members' is optional and must be a subset of the list returned
- by namelist().
+ by namelist(). You can specify the password to decrypt all files
+ using 'pwd'.
"""
if members is None:
members = self.namelist()