bpo-34035: Fix several AttributeError in zipfile seek() methods. (GH-8527)
(cherry picked from commit 3f8c6913b8
)
Co-authored-by: Mickaël Schoentgen <contact@tiger-222.fr>
This commit is contained in:
parent
990de2f4ca
commit
ad4f64d58c
|
@ -1646,6 +1646,8 @@ class OtherTests(unittest.TestCase):
|
|||
self.assertEqual(fp.read(5), txt[bloc:bloc+5])
|
||||
fp.seek(0, os.SEEK_END)
|
||||
self.assertEqual(fp.tell(), len(txt))
|
||||
fp.seek(0, os.SEEK_SET)
|
||||
self.assertEqual(fp.tell(), 0)
|
||||
# Check seek on memory file
|
||||
data = io.BytesIO()
|
||||
with zipfile.ZipFile(data, mode="w") as zipf:
|
||||
|
@ -1661,6 +1663,8 @@ class OtherTests(unittest.TestCase):
|
|||
self.assertEqual(fp.read(5), txt[bloc:bloc+5])
|
||||
fp.seek(0, os.SEEK_END)
|
||||
self.assertEqual(fp.tell(), len(txt))
|
||||
fp.seek(0, os.SEEK_SET)
|
||||
self.assertEqual(fp.tell(), 0)
|
||||
|
||||
def tearDown(self):
|
||||
unlink(TESTFN)
|
||||
|
|
|
@ -701,11 +701,11 @@ class _SharedFile:
|
|||
|
||||
def seek(self, offset, whence=0):
|
||||
with self._lock:
|
||||
if self.writing():
|
||||
if self._writing():
|
||||
raise ValueError("Can't reposition in the ZIP file while "
|
||||
"there is an open writing handle on it. "
|
||||
"Close the writing handle before trying to read.")
|
||||
self._file.seek(self._pos)
|
||||
self._file.seek(offset, whence)
|
||||
self._pos = self._file.tell()
|
||||
return self._pos
|
||||
|
||||
|
@ -1021,14 +1021,13 @@ class ZipExtFile(io.BufferedIOBase):
|
|||
read_offset = 0
|
||||
elif read_offset < 0:
|
||||
# Position is before the current position. Reset the ZipExtFile
|
||||
|
||||
self._fileobj.seek(self._orig_compress_start)
|
||||
self._running_crc = self._orig_start_crc
|
||||
self._compress_left = self._orig_compress_size
|
||||
self._left = self._orig_file_size
|
||||
self._readbuffer = b''
|
||||
self._offset = 0
|
||||
self._decompressor = zipfile._get_decompressor(self._compress_type)
|
||||
self._decompressor = _get_decompressor(self._compress_type)
|
||||
self._eof = False
|
||||
read_offset = new_pos
|
||||
|
||||
|
|
|
@ -1429,6 +1429,7 @@ Michael Schneider
|
|||
Peter Schneider-Kamp
|
||||
Arvin Schnell
|
||||
Nofar Schnider
|
||||
Mickaël Schoentgen
|
||||
Ed Schouten
|
||||
Scott Schram
|
||||
Robin Schreiber
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Fix several AttributeError in zipfile seek() methods. Patch by Mickaël Schoentgen.
|
Loading…
Reference in New Issue