brotli/python/brotli.py
Evgenii Kliuchnikov 2dfaadcef3 (PY) clarify compressor mode parameter values
PiperOrigin-RevId: 698023020
2024-11-19 08:15:20 -08:00

58 lines
1.9 KiB
Python

# Copyright 2016 The Brotli Authors. All rights reserved.
#
# Distributed under MIT license.
# See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
"""Functions to compress and decompress data using the Brotli library."""
import _brotli
# The library version.
version = __version__ = _brotli.__version__
# The compression mode.
MODE_GENERIC = _brotli.MODE_GENERIC
MODE_TEXT = _brotli.MODE_TEXT
MODE_FONT = _brotli.MODE_FONT
# The Compressor object.
Compressor = _brotli.Compressor
# The Decompressor object.
Decompressor = _brotli.Decompressor
# Compress a byte string.
def compress(string, mode=MODE_GENERIC, quality=11, lgwin=22, lgblock=0):
"""Compress a byte string.
Args:
string (bytes): The input data.
mode (int, optional): The compression mode; value 0 should be used for
generic input (MODE_GENERIC); value 1 might be beneficial for UTF-8 text
input (MODE_TEXT); value 2 tunes encoder for WOFF 2.0 data (MODE_FONT).
Defaults to 0.
quality (int, optional): Controls the compression-speed vs compression-
density tradeoff. The higher the quality, the slower the compression.
Range is 0 to 11. Defaults to 11.
lgwin (int, optional): Base 2 logarithm of the sliding window size. Range
is 10 to 24. Defaults to 22.
lgblock (int, optional): Base 2 logarithm of the maximum input block size.
Range is 16 to 24. If set to 0, the value will be set based on the
quality. Defaults to 0.
Returns:
The compressed byte string.
Raises:
brotli.error: If arguments are invalid, or compressor fails.
"""
compressor = Compressor(mode=mode, quality=quality, lgwin=lgwin,
lgblock=lgblock)
return compressor.process(string) + compressor.finish()
# Decompress a compressed byte string.
decompress = _brotli.decompress
# Raised if compression or decompression fails.
error = _brotli.error