Acknowledgements
Archivey builds on the work of the people who designed these formats and wrote the libraries and tools around them. This page credits the code archivey adapted, the projects it learned from and checks itself against, and the packages it uses. If we missed a project that should be here, please open an issue or a pull request.
Code adapted from other projects
Two parts of archivey are adapted from other projects' code, and their licence notices are kept in the files that hold it:
| Project | What archivey adapted | Licence |
|---|---|---|
| uncompresspy (Tiago Gomes) | The LZW decoder for .Z files (notice) |
BSD-3-Clause |
| rarfile (Marko Kreen) | RAR3 password key derivation and the RAR3 Unicode filename decoder (notice) | ISC |
The ARM64 and RISC-V branch filters used in 7z archives follow the algorithms in liblzma, from the xz project, and are checked against 7-Zip's.
Projects archivey learned from
py7zr (Hiroshi Miura and contributors) and rarfile were the main
references for how 7z and RAR archives behave in practice. Archivey's 7z and RAR readers were
checked against them at every step and take ideas from them, though not code (apart from the rarfile
pieces above). Python's zipfile and
tarfile played the same part for ZIP and TAR:
archivey read both formats through them before it had its own readers, which still follow them in
places. 7-Zip's and RARLAB's UnRAR sources were
the references for the formats themselves, and WinZip's AES specification for encrypted ZIP files.
The indexed and seekable decompressors (python-xz, indexed_bzip2, indexed_gzip, ratarmount and indexed_zstd) shaped how archivey seeks inside compressed streams, even though archivey doesn't depend on them.
Packages archivey uses
Archivey itself needs no third-party package. Optional packages add formats and features, and Install says which extra brings in which:
- pyppmd: PPMd compression in 7z and ZIP.
- inflate64: Deflate64 in ZIP and 7z.
- brotli, lz4 and backports.zstd: Brotli, LZ4 and Zstandard, as single files and inside 7z archives (Zstandard also inside ZIP). Python 3.14 and later reads Zstandard without backports.zstd.
- cryptography: AES decryption for 7z, RAR and WinZip AES ZIP files.
- pycdlib: ISO images.
- tqdm: progress bars in the command-line tool.
- rapidgzip: faster seeking in large gzip, bzip2 and DEFLATE data, such as ZIP members, and faster reading of large DEFLATE data where it pays off.
Compressed or encrypted RAR data is read with RARLAB's unrar (or rar), or with The
Unarchiver's unar. Install says which one runs when.
Projects archivey checks itself against
Tests compare what archivey reads with py7zr, rarfile, zipfile and tarfile, field by field, and
can also read libarchive's own test archives through
libarchive-c. 7-Zip, RARLAB's rar,
ncompress and several of these libraries write archivey's
test archives. Three of those archives are copied from other projects: two old RAR archives from
rarfile and an LZ4 7z archive from py7zr, each credited in its folder's README. You don't need any
of them to use archivey.
Tools archivey is built with
Archivey is built and tested with pytest, Hypothesis, Atheris, Ruff, Pyrefly, ty and MkDocs, among others. Thanks to everyone who maintains them.