|
37 | 37 | py7zr is a library and utility to support 7zip archive compression, decompression, |
38 | 38 | encryption and decryption written by Python programming language. |
39 | 39 |
|
| 40 | +Compression algorithms |
| 41 | +====================== |
| 42 | + |
| 43 | +'py7zr' supports algorithms and filters which `lzma module`_ and `liblzma`_ support, |
| 44 | +and supports BZip2 and Deflate that are implemented in python core libraries, |
| 45 | +It also supports ZStandard, Brotli and PPMd with third party libraries. |
| 46 | + |
| 47 | +'py7zr' is also able to encrypt and decrypt data using 3rd party encryption library. |
| 48 | + |
| 49 | + |
| 50 | +Supported algorithms |
| 51 | +-------------------- |
| 52 | + |
| 53 | +* compress |
| 54 | + * LZMA2 |
| 55 | + * LZMA |
| 56 | + * Bzip2 |
| 57 | + * Deflate |
| 58 | + * Copy |
| 59 | + * ZStandard |
| 60 | + * Brotli |
| 61 | + * Deflate64 (Decompression only) |
| 62 | + * PPMd (Experimental) |
| 63 | + |
| 64 | +* crypt |
| 65 | + * 7zAES |
| 66 | + |
| 67 | +* Filters |
| 68 | + * Delta |
| 69 | + * BCJ(X86,ARMT,ARM,PPC,SPARC,IA64) |
| 70 | + |
| 71 | +- A feature handling symbolic link is basically compatible with 'p7zip' implementation, |
| 72 | + but not work with original 7-zip because the original does not implement the feature. |
| 73 | + |
| 74 | +- ZStandard and Brotli is not default methods of 7-zip, so these archives are considered |
| 75 | + not to be compatible with original 7-zip on windows/p7zip on linux/mac. |
| 76 | + |
| 77 | +Not supported algorithms |
| 78 | +------------------------ |
| 79 | + |
| 80 | +* BCJ2 |
| 81 | + |
| 82 | +- liblzma, which Python's standard lzma module depends, does not provide BCJ2 filter. |
| 83 | + |
| 84 | + |
40 | 85 |
|
41 | 86 | Install |
42 | 87 | ======= |
@@ -294,43 +339,6 @@ Following improvements are included in CPython 3.10 |
294 | 339 | .. _`PyPy3-3090`: https://foss.heptapod.net/pypy/pypy/-/issues/3090 |
295 | 340 | .. _`PyPy3-3242`: https://foss.heptapod.net/pypy/pypy/-/issues/3242 |
296 | 341 |
|
297 | | -Compression Methods supported |
298 | | -============================= |
299 | | - |
300 | | -'py7zr' supports algorithms and filters which `lzma module`_ and `liblzma`_ support. |
301 | | -It also support BZip2 and Deflate that are implemented in python core libraries, |
302 | | -and ZStandard with third party libraries. |
303 | | - |
304 | | -Supported algorithms are: |
305 | | - |
306 | | -* compress |
307 | | - * LZMA2 |
308 | | - * LZMA |
309 | | - * Bzip2 |
310 | | - * Deflate |
311 | | - * Copy |
312 | | - * ZStandard |
313 | | - * Brotli |
314 | | - * Deflate64 (Decompression only) |
315 | | - * PPMd (Experimental) |
316 | | - |
317 | | -* crypt |
318 | | - * 7zAES |
319 | | - |
320 | | -* Filters |
321 | | - * Delta |
322 | | - * BCJ(X86,ARMT,ARM,PPC,SPARC,IA64) |
323 | | - |
324 | | -* No support |
325 | | - * BCJ2 |
326 | | - |
327 | | -- A feature handling symbolic link is basically compatible with 'p7zip' implementation, |
328 | | - but not work with original 7-zip because the original does not implement the feature. |
329 | | - |
330 | | -- ZStandard and Brotli is not default methods of 7-zip, so these archives are considered |
331 | | - not to be compatible with original 7-zip on windows/p7zip on linux/mac. |
332 | | -- liblzma, which Python's standard lzma module depends, does not provide BCJ2 filter. |
333 | | -- Deflate64 is proprietary algorithm. |
334 | 342 |
|
335 | 343 |
|
336 | 344 | Dependencies |
@@ -374,6 +382,9 @@ py7zr works well, but slower than `7-zip` and `p7zip` C/C++ implementation by se |
374 | 382 | When compression/decompression **speed** is important, it is recommended to use these |
375 | 383 | alternatives through `subprocess.run` python interface. |
376 | 384 |
|
| 385 | +py7zr consumes some memory to decompress and compress data. It requires about 300MiB - 700MiB free memory to work well at least. |
| 386 | + |
| 387 | + |
377 | 388 | Use Cases |
378 | 389 | ========= |
379 | 390 |
|
@@ -408,22 +419,3 @@ You should have received a copy of the GNU Lesser General Public |
408 | 419 | License along with this library; if not, write to the Free Software |
409 | 420 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
410 | 421 |
|
411 | | -WARNING |
412 | | -======= |
413 | | - |
414 | | -**Test archive data, which affected a malware, have been existed from Aug, 2020 - 20, Jan, 2021!** |
415 | | - |
416 | | -All the git history is re-writed, so please remove your local and fork copy of the git repository, |
417 | | -and clone again(if necessary)! |
418 | | - |
419 | | -Problematic file is named `issue_218.7z` and `issue_218_2.7z`. |
420 | | - |
421 | | -**There is NO affected in library itself.** and the test execution also does not extract the malware file. |
422 | | -There is no problem when you install py7zr with `pip` command. |
423 | | - |
424 | | -Release that has a clean source: |
425 | | - |
426 | | -- v0.11.3 and later |
427 | | -- v0.10.2 |
428 | | -- v0.9.10 |
429 | | -- v0.9.4 and before |
0 commit comments