Edit

kc3-lang/brotli/python/brotli.py

Branch :

  • Show log

    Commit

  • Author : Evgenii Kliuchnikov
    Date : 2024-11-19 08:14:51
    Hash : 2dfaadce
    Message : (PY) clarify compressor mode parameter values PiperOrigin-RevId: 698023020

  • python/brotli.py
  • # 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