https://github.com/dcwatson/deflate
Python extension wrapper for libdeflate.
https://github.com/dcwatson/deflate
Last synced: about 1 year ago
JSON representation
Python extension wrapper for libdeflate.
- Host: GitHub
- URL: https://github.com/dcwatson/deflate
- Owner: dcwatson
- License: mit
- Created: 2020-06-17T18:36:06.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2025-03-30T01:09:54.000Z (about 1 year ago)
- Last Synced: 2025-04-01T14:13:44.289Z (about 1 year ago)
- Language: C
- Size: 104 KB
- Stars: 26
- Watchers: 4
- Forks: 6
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# deflate API
This is a very thin Python wrapper Eric Biggers' excellent
[libdeflate](https://github.com/ebiggers/libdeflate).
Currently, it handles:
## Compression and decompression of gzip data, with a very basic API
```python
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)
```
## Compression and decompression of raw DEFLATE or zlib data
The original size of the decompressed data needs to be kept through additional logic.
```python
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))
```
## CRC32 computation
```python
import deflate
crc32 = deflate.crc32(b"hello world! ") # initial
crc32 = deflate.crc32(b"hello universe!", crc32) # continued
```
## Adler-32 computation
```python
import deflate
adler32 = deflate.adler32(b"hello world! ") # initial
adler32 = deflate.adler32(b"hello universe!", adler32) # continued
```
# Installation
```bash
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.
# Testing
```bash
pip install -r requirements-dev.lock
python -m pytest
```