python-snappy is a Python library that provides a high-performance wrapper for Google's Snappy compression library. It's designed for fast data compression and decompression, suitable for applications like data transfer, storage, and database indexing. The current version is 0.7.3. Releases are made periodically to maintain compatibility with newer Python versions and address underlying library changes.
Install & Compatibility
Where this runs
tested against v0.7.3 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.925 runs
installs and imports cleanly · install 0.0s · import 0.000s · 22.7MB
glibcpy 3.10–3.925 runs
installs and imports cleanly · install 1.9s · import 0.000s · 23MB
20MB installed
● package 20MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
Called as a function from the top-level 'snappy' module.
snappy.compress
Called as a function from the top-level 'snappy' module.
snappy.decompress
Used for incremental compression of data streams.
snappy.StreamCompressor
Used for incremental decompression of data streams.
snappy.StreamDecompressor
This quickstart demonstrates basic one-shot compression/decompression and the use of `StreamCompressor` and `StreamDecompressor` for handling larger data in chunks. Ensure the underlying Snappy C library is installed first.
import snappy
# Basic compression and decompression
original_data = b"This is some data to be compressed using snappy!" * 100
compressed_data = snappy.compress(original_data)
decompressed_data = snappy.decompress(compressed_data)
print(f"Original size: {len(original_data)} bytes")
print(f"Compressed size: {len(compressed_data)} bytes")
print(f"Decompressed data matches original: {original_data == decompressed_data}")
# Streaming compression and decompression
compressor = snappy.StreamCompressor()
compressed_stream_chunks = []
# Simulate sending data in chunks
for chunk in [b'part one', b'part two', b'part three']:
compressed_stream_chunks.append(compressor.compress(chunk))
compressed_stream_chunks.append(compressor.flush()) # Important to flush remaining data
full_compressed_stream = b''.join(compressed_stream_chunks)
decompressor = snappy.StreamDecompressor()
decompressed_stream_chunks = []
# Simulate receiving and decompressing data in chunks
for chunk in [full_compressed_stream[:15], full_compressed_stream[15:]]:
decompressed_stream_chunks.append(decompressor.decompress(chunk))
final_decompressed_stream = b''.join(decompressed_stream_chunks)
print(f"Stream decompressed data: {final_decompressed_stream}")
print(f"Stream decompressed data matches original: {final_decompressed_stream == b'part onepart twopart three'}")
Upgrade
Version history
Breaking-change detection hasn't run for this library yet.
Audit
Security & dependencies
CVE tracking and dependency tree are planned for a later release.