Registry / serialization / python-snappy

python-snappy

JSON →
library0.7.3pypypi✓ verified 35d ago

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.

serializationdatabasedata
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
musl
py 3.103.925 runs
installs and imports cleanly · install 0.0s · import 0.000s · 22.7MB
glibc
py 3.103.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.

import snappy

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'}")
Debug
Known footguns
gotchaThe `python-snappy` library is a wrapper around the Snappy C++ library. You must have the underlying `snappy` library installed on your system before `pip install python-snappy` will succeed.
gotcha`python-snappy` functions (like `snappy.compress` and `snappy.decompress`) only operate on `bytes` objects. Passing a `str` object will result in a `TypeError`.
gotchaWhen using `StreamCompressor`, it's crucial to call `compressor.flush()` at the end of the data stream to ensure all buffered data is emitted. Failing to do so can lead to incomplete or corrupted compressed output.
gotchaThe latest versions of `python-snappy` (0.7.0+) explicitly require Python 3.7 or newer. Older Python 3 versions (e.g., 3.6) or Python 2 are no longer supported.
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.

Agent activity
13 hits · last 30 days
gptbot
4
ahrefsbot
4
claudebot
2
dotbot
1
bingbot
1
bytedance
1
Resources