Py7zr Changelog¶
All notable changes to this project will be documented in this file.
Unreleased¶
v0.21.0¶
Changed¶
Speed up extraction when number of files is very large (#555)
Replace deprecated functions on python 3.12 (#550)
Added¶
Add report_update() for logging large files extraction (#558)
Document¶
Add subsection of multi-volume creation (#568)
v0.20.8¶
Fixed¶
Detect brotli import error (#543)
Changed¶
refactor: hardening SevenZipFile constructor (#547)
refactor: improve type safe functions (#545)
chore: add git export configuration (#544)
v0.20.7¶
Changed¶
Support Python 3.12 (#541)
v0.20.6¶
Fixed¶
fix: sanitize path when write (#525)
fix: allow specify target path in relative path (#530)
Avoid AttributeError on OpenBSD (#521)
Error appending file: KeyError: ‘lastwritetime’ (#517)
Document¶
Fixing a string quote in user_guide document(#524)
v0.20.5¶
Fixed¶
Remove root reference from file names (#513)
Document¶
fix typo in the readme (#510)
v0.20.4¶
Fixed¶
Installation error in Cygwin (#504)
v0.20.3¶
Fixed¶
Drop manual GC to improve performance when many files are handled. (#489, #490)
CI: fix test configurations (#494) - Fix mypy error - Skip deflate64 compression/decompression test on pypy - There is an issue in dependency inflate64 library that causes SIGABORT and SIGSEGV on pypy
v0.20.2¶
Fixed¶
Fix error with good path data, when detecting wrong path with new canonical_path(), and drop resolve() call on path.
v0.20.1¶
Security¶
Fix sanity check for path traversal attack(#480)
Add path checker in writef() and writestr() methods that ignores evil pass. - When pass arcname as evil path such as “../../../../tmp/evil.sh” - it raises ValueError
Check symlink and junction is under target folder when extraction
v0.20.0¶
Added¶
Support enhanced deflate compression.(#472)
Changed¶
Bump setuptools@63 and setuptools_scm@7 (#473)
CI: update script (#473)
Update tox config (#473)
Actions: change pypy version to 3.7 (#473)
Update readthedocs.yml (#473)
Deprecated¶
Deprecate Python 3.6 support (#473)
v0.19.0¶
Changed¶
Replace deflate64(tm) decompressor to inflate64(#459)
test: improve checks of deflate64 case(#463)
v0.18.10¶
Fixed¶
Actions: fix release script to produce wheel.(#462) there is no wheel release for v0.18.5-v0.18.9
v0.18.9¶
Fixed¶
Closing a SevenZipFile opened for appending, without adding a new file, raises exception (#378, #395)
Docs: fix URL link error (#450)
Actions: fix document compilation by installing graphviz (#450)
Docs: fix errors and warnings on documentation.
Changed¶
Add changelog into Documentation (#450)
Test on python 3.11-beta (#450)
Bump Sphinx@5.0 for Documentation (#450)
Docs: update configuration to ignore changelog links for link check
v0.18.7¶
Fixed¶
Extraction wrongly renames unix hidden dot files/directories (#448)
v0.18.6¶
Fixed¶
Decompression of some LZMA+BCJ archive may abort with gegmentation fault because of a PyBCJ bug. Bump
PyBCJ@0.6.0
that fixed it. (#447)
Removed¶
Remove in-source BCJ filter pure python code. Now it have a place in a PyBCJ project. (#447)
v0.18.5¶
Fixed¶
Limit memory consumption for extraction(#430,#434,#440)
Pyproject.toml: setuptools_scm configuration(#438)
Changed¶
Build package with
pip wheel
with python 3.9 on Ubuntu 20.04Check py3.8, 3.9 and 3.10 on Azure-Pipelines CI/CD.
v0.18.4¶
Fixed¶
Raise exception properly when threaded extraction(#431,#432)
Actions: fix tox test(#433)
Changed¶
Change pyproject.toml:license table to be text key and SPDX license name(#435, #436)
v0.18.3¶
Fixed¶
ppmd: send extra byte b”0” to pyppmd.Ppmd7Decompressor, when input is exhausted, but it indicate needs_input. This is a same behavior as p7zip decoder does. (#417)
README: fix example code(#426)
Changed¶
Bump
PyPPMd@0.18.1
(#420,#427)pyproject.toml: Add project section(#428)
v0.18.1¶
Changed¶
Limit dependency pyppmd to v0.17.x
Fixed¶
Fix mypy error with mypy 0.940(#421)
v0.18.0¶
Added¶
Support DEFLATE64 decompression(#399)
Fixed¶
Docs: fix typo for readall method argument(#416)
Changed¶
Get status down for PPMd compression/decompression(#418) PPMd decompression has a bug easily to fail decompression.
v0.17.4¶
Fixed¶
When extracting and target archive compressed with unsupported LZMA2+BCJ2, py7zr raise unexpected exception. Fix to raise better exception message
Changed¶
docs: Add explanation of empty file specification
v0.17.3¶
Security¶
Check against directory traversal attack by file pathes in archive (#406,#407)
v0.17.2¶
Fixed¶
writef method detect wrong size of data(#397)
Changed¶
Improve callback object check and error message(#387)
v0.17.1¶
Fixed¶
Allow 7zAES+LZMA2+BCJ combination for compression(#392)
Argument error when raising UnsupportedCompressionMethodError(#394)
Detect memory leak in test and fix some leaks(#388)
Fix filename and property decode in UTF-16(#391)
Changed¶
Azure: use
macos@10.15
for test(#389)
v0.17.0¶
Fixed¶
Extraction: overwrite a symbolic link sometimes failed(#383)
Allow creation of archive without any write call(#369,#372)
Type check configuration update (#384)
Adjust for type check errors (#384)
v0.16.4¶
Fixed¶
Win32 file namespace convention doesn’t work on Cygwin(#380,#381)
Win32 file namespace convention doesn’t work for network path(#380)
v0.16.3¶
Fixed¶
Reduce memory consumptions and fix memory_error on 32bit python (#370,#373,#374,#375)
Added¶
Add CI test for python 3.10 (#371)
v0.16.2¶
Added¶
Bundle type hint data
README: Add conda recipe(#342)
Changed¶
Use PyBCJ instead of bcj-cffi.(#368)
Docs: change recommended python versions
CI: benchmark on python 3.10
Test expectation for python 3.10 change
Improve exceptions and error messages
Docs: add description of ArchiveInfo class
Docs: fix typo on shutil integration(#353)
Bump pyzstd@0.15.0
Bump pyppmd@0.17.0
Fixed¶
Docs: specification error of signature header data types.
Fix infinite loop in extract(#354)
v0.16.1¶
Added¶
type hint for mypy
v0.16.0¶
Added¶
Add Brotli compression.
CI: Test on AArch64.
Changed¶
CLI: support multi-volume archive without making temporary file(#311)
Filter parameter: PPMd: mem is now accept int or “<val>{m|k|b}” as same as 7-zip command line option. int value is recognized as “1 << val” ie. 24 means 4MB.
Dependency: PyPPMd v0.14.0+
Dependency PyCryptodome to PyCryptodomex that changes package name from PyCrypto to PyCryptodome(#334)