Getting Started (for Contributors)


Flower uses pyproject.toml to manage dependencies and configure development tools (the ones which support it). Poetry is a build tool which supports PEP 517.

Developer Machine Setup

First, clone the Flower repository from GitHub:

$ git clone
$ cd flower

Second, create a virtual environment (and activate it). If you chose to use pyenv (with the pyenv-virtualenv plugin), you can use the following convenience script:

$ ./dev/

Third, install the Flower package in development mode (think pip install -e) along with all necessary dependencies:

(flower-3.7.9) $ ./dev/

Convenience Scripts

The Flower repository contains a number of convenience scripts to make recurring development tasks easier and less error-prone. See the /dev subdirectory for a full list. The following scripts are amonst the most important ones:

Create/Delete Virtual Environment

$ ./dev/
$ ./dev/

Compile ProtoBuf Definitions

$ python -m flwr_tool.protoc

Auto-Format Code

$ ./dev/

Run Linters and Tests

$ ./dev/

Build Release

Flower uses Poetry to build releases. The necessary command is wrapped in a simple script:

$ ./dev/

The resulting .whl and .tar.gz releases will be stored in the /dist subdirectory.

Build Documentation

Flower’s documentation uses Sphinx. There’s no convenience script to re-build the documentation yet, but it’s pretty easy:

$ cd doc
$ make html

This will generate HTML documentation in doc/build/html.