This is a very thin Python wrapper Eric Biggers' excellent libdeflate.
Currently, it handles:
import deflate
level = 6 # The default; may be 1-12 for libdeflate.
compressed = deflate.gzip_compress(b"hello world!" * 1000, level)
original = deflate.gzip_decompress(compressed)
The original size of the decompressed data needs to be kept through additional logic.
import deflate
level = 6 # The default; may be 1-12 for libdeflate.
data = b"hello world!" * 1000
# DEFLATE
compressed = deflate.deflate_compress(data, level)
original = deflate.deflate_decompress(compressed, len(data))
# zlib
compressed = deflate.zlib_compress(data, level)
original = deflate.zlib_decompress(compressed, len(data))
import deflate
crc32 = deflate.crc32(b"hello world! ") # initial
crc32 = deflate.crc32(b"hello universe!", crc32) # continued
import deflate
adler32 = deflate.adler32(b"hello world! ") # initial
adler32 = deflate.adler32(b"hello universe!", adler32) # continued
pip install deflate
By default, deflate
will compile and statically link the bundled libdeflate
when you
build from source (or use the pre-compiled wheels). To link to a system-installed libdeflate
, set the
LIBDEFLATE_PREFIX
environment variable and build from source:
LIBDEFLATE_PREFIX=/opt/homebrew/Cellar/libdeflate/1.20 pip install deflate --no-binary=deflate
Be warned: you can't use this wheel on a system without the referenced libdeflate.
pip install -r requirements-dev.lock
python -m pytest