Skip to main content

Python CFFI bindings to the Brotli library

Project description

BrotliCFFI

Version Version-Conda Downloads CI Status

This library contains Python CFFI bindings for the reference Brotli encoder/decoder, available here. This allows Python software to use the Brotli compression algorithm directly from Python code.

Install from PyPI:

$ python -m pip install brotlicffi

Install from Conda:

$ conda install -c conda-forge brotlicffi

To use it simply, try this:

import brotlicffi
data = brotlicffi.decompress(compressed_data)

More information can be found in the documentation.

Using BrotliCFFI in Projects

The API is 100% compatible with the Brotli Python C bindings. We recommend installing the C bindings on CPython and the CFFI bindings everywhere else (PyPy, etc)

Essentially you use requirements like this:

install_requires=[
    "brotli; platform_python_implementation == 'CPython'",
    "brotlicffi; platform_python_implementation != 'CPython'"
]

and then import the correct Brotli library like so:

try:
    import brotlicffi as brotli
except ImportError:
    import brotli

We provide an example project that shows how to use both libraries together to support Brotli with multiple Python implementations.

License

The source code of BrotliCFFI is available under the MIT license. Brotli itself is made available under the Version 2.0 of the Apache Software License. See the LICENSE and libbrotli/LICENSE files for more information.

Authors

BrotliCFFI/brotlipy was authored by Cory Benfield and is currently maintained by Seth Michael Larson.

Changelog

1.1.0.0 (2023-09-14)

  • Upgraded libbrotli to v1.1.0

  • Added explicit support for Python 3.10, 3.11, and 3.12

  • Removed support for Python 2.7, 3.5, and 3.6

1.0.9.2 (2021-04-06)

  • Added manylinux_aarch64 wheels

1.0.9.1 (2021-01-27)

  • Avoid byte/string comparison warning in error message construction

1.0.9.0 (2021-01-20)

  • Updated to v1.0.9 of the Brotli library

  • Library version now follows Brotli version

  • Removed the dictionary parameter from compress and Compressor

  • NOTE: Python 2.7 wheels for Windows likely won’t work until google/brotli#848 is resolved

0.8.0 (2020-11-30)

  • Renamed the package on PyPI to brotlicffi, all further updates will be published to the new package. Using the brotlipy is deprecated.

  • Changed the importable namespace from brotli to brotlicffi to no longer conflict with the Brotli PyPI package.

  • Added process() method to Compressor and Decompressor.

  • Added is_finished() method to Decompressor.

0.7.0 (2017-05-30)

  • Update to v0.6.0 of the Brotli library.

0.6.0 (2016-09-08)

  • Resolved a bug where decompress() would return an empty bytestring instead of erroring if the provided bytestring was small enough.

  • Added the finish() method to the streaming decompressor.

0.5.1 (2016-08-17)

  • Update to v0.5.2 of the Brotli library.

  • Add new exception type (Error).

  • Add compatibility with C++ brotli library by aliasing Error to error.

  • Extra error checking of input parameters to the compressor.

0.5.0 (2016-08-16)

  • Update to v0.5.0 of the Brotli library.

  • Extend one-shot compression API to include all control parameters.

  • Added streaming/incremental compression API.

  • Added flags to control compression mode.

0.4.0 (2016-08-01)

Update to v0.4.0 of the Brotli library.

0.3.0 (2016-05-11)

Update to v0.3.0 of the Brotli library.

0.2.0 (2015-10-05)

Fix broken brotli.compress support on Windows.

0.1.3 (2015-10-05)

  • Added basic for brotli.compress through a C wrapper included in this library.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

brotlicffi-1.1.0.0.tar.gz (465.2 kB view hashes)

Uploaded Source

Built Distributions

brotlicffi-1.1.0.0-pp310-pypy310_pp73-win_amd64.whl (361.8 kB view hashes)

Uploaded PyPy Windows x86-64

brotlicffi-1.1.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (378.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

brotlicffi-1.1.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (379.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

brotlicffi-1.1.0.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (385.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

brotlicffi-1.1.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (397.4 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

brotlicffi-1.1.0.0-pp39-pypy39_pp73-win_amd64.whl (361.7 kB view hashes)

Uploaded PyPy Windows x86-64

brotlicffi-1.1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (378.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

brotlicffi-1.1.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (379.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

brotlicffi-1.1.0.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (385.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

brotlicffi-1.1.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (397.4 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

brotlicffi-1.1.0.0-pp38-pypy38_pp73-win_amd64.whl (361.8 kB view hashes)

Uploaded PyPy Windows x86-64

brotlicffi-1.1.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (378.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

brotlicffi-1.1.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (379.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

brotlicffi-1.1.0.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (385.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

brotlicffi-1.1.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (397.4 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

brotlicffi-1.1.0.0-pp37-pypy37_pp73-win_amd64.whl (361.7 kB view hashes)

Uploaded PyPy Windows x86-64

brotlicffi-1.1.0.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (379.0 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

brotlicffi-1.1.0.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (379.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

brotlicffi-1.1.0.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (386.0 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

brotlicffi-1.1.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (397.4 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

brotlicffi-1.1.0.0-cp37-abi3-win_amd64.whl (366.8 kB view hashes)

Uploaded CPython 3.7+ Windows x86-64

brotlicffi-1.1.0.0-cp37-abi3-win32.whl (341.7 kB view hashes)

Uploaded CPython 3.7+ Windows x86

brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view hashes)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ x86-64

brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB view hashes)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ ARM64

brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.9 MB view hashes)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

brotlicffi-1.1.0.0-cp37-abi3-macosx_10_9_x86_64.whl (453.8 kB view hashes)

Uploaded CPython 3.7+ macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page