You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.9 KiB
56 lines
1.9 KiB
# 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__ = _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 |
|
|
|
# Compress a byte string. |
|
def compress(string, mode=MODE_GENERIC, quality=11, lgwin=22, lgblock=0, |
|
dictionary=''): |
|
"""Compress a byte string. |
|
|
|
Args: |
|
string (bytes): The input data. |
|
mode (int, optional): The compression mode can be MODE_GENERIC (default), |
|
MODE_TEXT (for UTF-8 format text input) or MODE_FONT (for WOFF 2.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. |
|
dictionary (bytes, optional): Custom dictionary. Only last sliding window |
|
size bytes will be used. |
|
|
|
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, dictionary=dictionary) |
|
return compressor.process(string) + compressor.finish() |
|
|
|
# Decompress a compressed byte string. |
|
decompress = _brotli.decompress |
|
|
|
# Raised if compression or decompression fails. |
|
error = _brotli.error
|
|
|