Skip to content

Commit fba2fca

Browse files
committed
Remove data_offset updating
- The `data_offset` attribute is retracted in 3.14rc: ref: python/cpython#136950
1 parent 8bedf7c commit fba2fca

File tree

2 files changed

+1
-73
lines changed

2 files changed

+1
-73
lines changed

src/zipremove/__init__.py

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,7 @@ def repack(self, zfile, removed=None):
177177
178178
Side effects:
179179
- Modifies the ZIP file in place.
180-
- Updates zfile.start_dir and zfile.data_offset to account for
181-
removed data.
180+
- Updates zfile.start_dir to account for removed data.
182181
- Sets zfile._didModify to True.
183182
- Updates header_offset and clears _end_offset of referenced
184183
ZipInfo instances.
@@ -283,15 +282,6 @@ def repack(self, zfile, removed=None):
283282
zfile.start_dir -= entry_offset
284283
zfile._didModify = True
285284

286-
# polyfill: update _data_offset if exists
287-
if getattr(zfile, '_data_offset', None):
288-
try:
289-
offset = filelist[0].header_offset
290-
except IndexError:
291-
offset = zfile.start_dir
292-
if offset < zfile._data_offset:
293-
zfile._data_offset = offset
294-
295285
# polyfill: clear ZipInfo._end_offset if exists
296286
# (Python >= 3.8 with fix #109858)
297287
if hasattr(ZipInfo, '_end_offset'):

tests/test_zipfile.py

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -985,67 +985,9 @@ def test_repack_prepended_bytes(self):
985985
fh.write(b'dummy ')
986986
fh.write(fz.read())
987987
with zipfile.ZipFile(TESTFN, 'a', self.compression) as zh:
988-
if hasattr(zh, 'data_offset'):
989-
self.assertEqual(zh.data_offset, 6)
990988
for i in ii:
991989
zh.remove(self.test_files[i][0])
992990
zh.repack()
993-
if hasattr(zh, 'data_offset'):
994-
self.assertEqual(zh.data_offset, 6)
995-
996-
# check infolist
997-
self.assertEqual(
998-
[ComparableZipInfo(zi) for zi in zh.infolist()],
999-
[ComparableZipInfo(zi) for zi in expected_zinfos],
1000-
)
1001-
1002-
# check file size
1003-
self.assertEqual(os.path.getsize(TESTFN), expected_size)
1004-
1005-
# make sure the zip file is still valid
1006-
with zipfile.ZipFile(TESTFN) as zh:
1007-
self.assertIsNone(zh.testzip())
1008-
1009-
def test_repack_prepended_file_entry(self):
1010-
for ii in ([0], [0, 1], [0, 1, 2]):
1011-
with self.subTest(remove=ii):
1012-
# calculate the expected results
1013-
fz = io.BytesIO()
1014-
test_files = [data for j, data in enumerate(self.test_files) if j not in ii]
1015-
self._prepare_zip_from_test_files(fz, test_files)
1016-
fz.seek(0)
1017-
with open(TESTFN, 'wb') as fh:
1018-
fh.write(b'dummy ')
1019-
fh.write(fz.read())
1020-
with zipfile.ZipFile(TESTFN) as zh:
1021-
expected_zinfos = list(zh.infolist())
1022-
expected_size = os.path.getsize(TESTFN)
1023-
1024-
# do the removal and check the result
1025-
fz = io.BytesIO()
1026-
with zipfile.ZipFile(fz, 'w') as zh:
1027-
for j, (file, data) in enumerate(self.test_files):
1028-
if j in ii:
1029-
zh.writestr(file, data)
1030-
fz.seek(0)
1031-
prefix = fz.read()
1032-
1033-
fz = io.BytesIO()
1034-
test_files = [data for j, data in enumerate(self.test_files) if j not in ii]
1035-
self._prepare_zip_from_test_files(fz, test_files)
1036-
fz.seek(0)
1037-
1038-
with open(TESTFN, 'wb') as fh:
1039-
fh.write(b'dummy ')
1040-
fh.write(prefix)
1041-
fh.write(fz.read())
1042-
1043-
with zipfile.ZipFile(TESTFN, 'a', self.compression) as zh:
1044-
if hasattr(zh, 'data_offset'):
1045-
self.assertEqual(zh.data_offset, 6 + len(prefix))
1046-
zh.repack()
1047-
if hasattr(zh, 'data_offset'):
1048-
self.assertEqual(zh.data_offset, 6)
1049991

1050992
# check infolist
1051993
self.assertEqual(
@@ -1235,12 +1177,8 @@ def test_repack_removed_prepended_bytes(self):
12351177
fh.write(b'dummy ')
12361178
fh.write(fz.read())
12371179
with zipfile.ZipFile(TESTFN, 'a', self.compression) as zh:
1238-
if hasattr(zh, 'data_offset'):
1239-
self.assertEqual(zh.data_offset, 6)
12401180
zinfos = [zh.remove(self.test_files[i][0]) for i in ii]
12411181
zh.repack(zinfos)
1242-
if hasattr(zh, 'data_offset'):
1243-
self.assertEqual(zh.data_offset, 6)
12441182

12451183
# check infolist
12461184
self.assertEqual(

0 commit comments

Comments
 (0)