Extremely thin and easy-to-install Python bindings to de/compression algorithms in Rust
npx @tessl/cli install tessl/pypi-cramjam@2.11.0Extremely thin Python bindings to de/compression algorithms in Rust. Cramjam provides high-performance compression and decompression for multiple algorithms with a consistent API.
pip install cramjam# Main package with core utilities
import cramjam
from cramjam import Buffer, File, CompressionError, DecompressionError
# Individual compression modules
from cramjam import snappy, gzip, bzip2, lz4, deflate, zlib, zstd, brotli, xzimport cramjam
# Simple compression/decompression
data = b"Hello, World!" * 100
compressed = cramjam.gzip.compress(data)
decompressed = cramjam.gzip.decompress(compressed)
# Try different algorithms
compressed_brotli = cramjam.brotli.compress(data, level=6)
compressed_zstd = cramjam.zstd.compress(data, level=3)import cramjam
# Pre-allocate output buffer for efficiency
input_data = b"Large dataset" * 10000
output = cramjam.Buffer()
# Compress directly into buffer
bytes_written = cramjam.gzip.compress_into(input_data, output)
print(f"Compressed {len(input_data)} bytes to {bytes_written} bytes")import cramjam
# Use streaming compressor for large data
compressor = cramjam.zstd.Compressor(level=5)
# Process data in chunks
compressor.compress(b"First chunk of data")
compressor.compress(b"Second chunk of data")
# Get final compressed result
compressed_data = compressor.finish()import cramjam
# Create and manipulate buffers
buffer = cramjam.Buffer(b"Initial data")
buffer.write(b" additional data")
buffer.seek(0)
content = buffer.read()
# File operations
file_obj = cramjam.File("data.txt", read=True, write=True)
file_obj.write(b"File content")
file_obj.seek(0)
data = file_obj.read()All cramjam functions accept BufferProtocol objects:
bytes - Immutable byte stringsbytearray - Mutable byte arrays (often faster due to reduced allocations)memoryview - Memory views of other buffer objects__buffer__ protocolBuffer - Memory buffer with file-like interface supporting read/write operations
File - Rust-backed file object with buffer protocol support
Exceptions - Specific error types for compression failures:
CompressionError - Raised when compression operations failDecompressionError - Raised when decompression operations failcompress(data, level=None) -> Buffer and decompress(data) -> Buffercompress_into(input, output) -> int for pre-allocated buffersCompressor and Decompressor classes for chunk processingAll standard modules follow consistent patterns with compression level support:
Modules with enhanced capabilities beyond standard compress/decompress:
bytearray instead of bytes for input when possible (avoids double allocation)*_into functions with pre-allocated buffers for memory efficiencyCompressor/Decompressor) for large datasetsimport cramjam
print(cramjam.__version__) # Package version string