| # 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 |