This directory contains the code for the Python `brotli` module,
and roundtrip tests.

Only Python 3.10+ is supported.

We provide a `Makefile` to simplify common development commands.

### Installation

If you just want to install the latest release of the Python `brotli`
module, we recommend installing from [PyPI][]:

    $ pip install brotli

Alternatively, you may install directly from source by running the
following command from this directory:

    $ make install

If you already have native Brotli installed on your system and want to use
this one instead of the vendored sources, you should set
the `USE_SYSTEM_BROTLI=1` environment variable when building the wheel,
like this:

    $ USE_SYSTEM_BROTLI=1 pip install brotli --no-binary brotli

Brotli is found via the `pkg-config` utility. Moreover, you must build
all 3 `brotlicommon`, `brotlienc`, and `brotlidec` components. If you're
installing brotli from the package manager, you need the development package,
like this on Fedora:

    $ dnf install brotli brotli-devel

### Development

You may run the following commands from this directory:

    $ make          # Build the module in-place

    $ make test     # Test the module

    $ make clean    # Remove all temporary files and build output

If you wish to make the module available while still being
able to edit the source files, you can use the `setuptools`
"[development mode][]":

    $ make develop  # Install the module in "development mode"

### Code Style

Brotli code follows the [Google Python Style Guide][].
To automatically format your code, first install [YAPF][]:

    $ pip install yapf

Then, to format all files in the project, you can run:

    $ make fix      # Automatically format code

See the [YAPF usage][] documentation for more information.

[PyPI]: https://pypi.org/project/Brotli/
[development mode]: https://setuptools.readthedocs.io/en/latest/setuptools.html#development-mode
[Google Python Style Guide]: https://google.github.io/styleguide/pyguide.html
[YAPF]: https://github.com/google/yapf
[YAPF usage]: https://github.com/google/yapf#usage
