Brotlipy: Python Bindings to Brotli Compression

0.7.0 · renamed · verified Sat Apr 11

brotlipy is a Python library that provides CFFI-based bindings to Google's Brotli lossless compression algorithm. It enables Python applications to efficiently compress and decompress data using Brotli, supporting both one-shot and streaming operations. Version 0.7.0 is the final release of this library, as the project has been archived and its development continues under the `brotlicffi` package.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates both one-shot and streaming compression/decompression using `brotlipy`. For one-shot operations, `brotli.compress()` and `brotli.decompress()` are used. For streaming, `brotli.Compressor()` and `brotli.Decompressor()` objects are initialized, and data is processed in chunks. Remember that `brotli.compress()` and `brotli.decompress()` expect and return byte strings.

import brotli

original_data = b"This is some data to be compressed using Brotli. It can be any bytes string."

# One-shot compression and decompression
compressed_data = brotli.compress(original_data, quality=11) # quality from 0-11
decompressed_data = brotli.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
compressor = brotli.Compressor(quality=5)
compressed_stream = b''
chunk_size = len(original_data) // 2

compressed_stream += compressor.compress(original_data[:chunk_size])
compressed_stream += compressor.compress(original_data[chunk_size:])
compressed_stream += compressor.finish()

# Streaming decompression
decompressor = brotli.Decompressor()
decompressed_stream = b''

decompressed_stream += decompressor.decompress(compressed_stream[:chunk_size])
decompressed_stream += decompressor.decompress(compressed_stream[chunk_size:])
decompressed_stream += decompressor.flush() # flush() is deprecated for Decompressor since 0.4.0 but shown in older docs

print(f"Streaming decompression matches original: {original_data == decompressed_stream}")

view raw JSON →