Skip to content

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.