-
-
Notifications
You must be signed in to change notification settings - Fork 32.2k
gh-51067: Add remove()
and repack()
to ZipFile
#134627
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
danny0838
wants to merge
69
commits into
python:main
Choose a base branch
from
danny0838:gh-51067-2
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+2,839
−0
Open
Changes from all commits
Commits
Show all changes
69 commits
Select commit
Hold shift + click to select a range
6aed859
Add `remove()` and `repack()` to `ZipFile`
danny0838 5453dbc
📜🤖 Added by blurb_it.
blurb-it[bot] 80ab2e2
Fix and optimize test code
danny0838 72c2a66
Handle common setups with `setUpClass`
danny0838 a4b410b
Add tests for mode `w` and `x` for `remove()`
danny0838 a9e85c6
Introduce `_calc_initial_entry_offset` and refactor
danny0838 236cd06
Optimize `_calc_initial_entry_offset` by introducing cache
danny0838 bdc58c7
Introduce `_validate_local_file_entry` and refactor
danny0838 c3c8345
Introduce `_debug` and refactor
danny0838 1b7d75a
Introduce `_move_entry_data` and rework chunk_size passing
danny0838 51c9254
Refactor `_validate_local_file_entry`
danny0838 0d971d8
Add `strict_descriptor` option
danny0838 8f0a504
Fix and improve validation tests
danny0838 0cb8682
Remove obsolete NameToInfo updating
danny0838 a788a00
Use `zinfo` rather than `info`
danny0838 ae01b8c
Raise on overlapping file blocks
danny0838 edee203
Rework writing protection
danny0838 555ac78
Update doc
danny0838 95fde31
Fix typo
danny0838 8a448e4
Add test for bytes between file entries
danny0838 4c35eb2
Check `testzip()` after zip file closed
danny0838 926338c
Support `repack(removed)`
danny0838 e76f9a1
Fix bytes between entries be removed when `removed` is passed
danny0838 93f4c25
Fix bad test code
danny0838 9e94209
Revise docstring
danny0838 3ef72c6
Add `tearDown` for tests
danny0838 fbf7588
Rename methods and parameters
danny0838 81a419a
Adjust parameter order
danny0838 c62a455
Optimize code and revise comment
danny0838 a05353c
Improve debug for `_ZipRepacker.repack()`
danny0838 3d0240c
Rework `_validate_local_file_entry_sequence` to return size or None
danny0838 31c4c93
Rework `_validate_local_file_entry_sequence` to allow passing no `che…
danny0838 f8fade1
Introduce `_scan_data_descriptor_no_sig_by_decompression`
danny0838 c80d21b
Strip only entries immediately following a referenced entry
danny0838 e1caea9
Adjust method names
danny0838 2b23d46
Add memory usage test
danny0838 de4f15b
Fix rst
danny0838 ea3259f
Optimize code
danny0838 fef92c4
Fix and optimize `_iter_scan_signature`
danny0838 8067b0c
Fix `_scan_data_descriptor`
danny0838 92d3a9c
Fix and optimize `_scan_data_descriptor_no_sig`
danny0838 b5d7ae3
Rename `_trace_compressed_block_end`
danny0838 1d5ec61
Fix `_scan_data_descriptor_no_sig_by_decompression`
danny0838 db9d0d6
Add tests for `_ZipRepacker`
danny0838 aaa566c
Remove unneeded import
danny0838 578c7c8
Add requirements
danny0838 c470c33
Fix `_scan_data_descriptor_no_sig_by_decompression` when library not …
danny0838 b1dcb07
Test with pre-calculated CRC
danny0838 04cddef
Remove unneeded import
danny0838 797a62c
Fix and optimize `repack`
danny0838 3b2f232
Remove unneeded catch type
danny0838 cb549c9
Patch more explicitly
danny0838 0f50a6f
Remove unneeded variables
danny0838 c759b63
Improve dependency check for decompression tests
danny0838 1ece5b1
Refactor and optimize `RepackHelperMixin`
danny0838 ce88616
Update NEWS
danny0838 5f093e5
Sync with danny0838/zipremove@1691ca25bf971cf1e45d5ed7d22c512636f20cb8
danny0838 11c0937
Revise NEWS
danny0838 4b2176e
Sync with danny0838/zipremove@1843d87b70e6cb129fb55446eaf4486a87d2af4d
danny0838 d9824ce
Fix timezone related timestamp issue
danny0838 85811ab
Simplify tests with data descriptors
danny0838 748ac63
Sync with danny0838/zipremove@e79042768f3c2541e0226f6bed3a9ff2ee04fac0
danny0838 001a8d0
Sync with danny0838/zipremove@87bcdb50411a355d24c35f31dcbe4273c0568cf8
danny0838 3a364ce
Sync with danny0838/zipremove@6a78bd15de87afde510f8a1b6364365c6e17f252
danny0838 0832528
Sync with danny0838/zipremove@092f98b4d7b3a0cd335fe4ba64e7090ebb3dc6da
danny0838 f20ec5d
Revise doc for `repack`
danny0838 8e69c09
Revise doc for `remove`
danny0838 725b1a3
Update `data_offset`
danny0838 9e82bb7
Revise doc for `repack`
danny0838 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not default to strict_descriptor=True given that it performs better and the zip files we expect people to be manipulating in remove/repack manners are presumed most likely to be "modern" forms?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is exactly one of the open question(#134627 (comment), #134627 (comment)).
The current quick decision is primarily since it adheres better to the spec and most Python stdlib tend to prioritize compatibility than performance. E.g.
json.dump
withensure_ascii=True
andhttp.server
with HTTP version 1.0. But it's not solid and can be changed, based on a vote or something?