Get started as a contributor#


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) and already have it installed , you can use the following convenience script (by default it will use Python 3.7.15, but you can change it by providing a specific <version>):

$ ./dev/ <version>

If you don’t have pyenv installed, you can use the following script that will install pyenv, set it up and create the virtual environment (with Python 3.7.15 by default):

$ ./dev/ <version>

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

(flower-<version>) $ ./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/ <version> # Default is 3.7.15
$ ./dev/ <version> # Default is 3.7.15

Compile ProtoBuf Definitions#

$ python -m flwr_tool.protoc

Auto-Format Code#

$ ./dev/

Run Linters and Tests#

$ ./dev/

Run Github Actions (CI) locally#

Developers could run the full set of Github Actions workflows under their local environment by using Act <>_. Please refer to the installation instructions under the linked repository and run the next command under Flower main cloned repository folder:

$ act

The Flower default workflow would run by setting up the required Docker machines underneath.

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.

Note that, in order to build the documentation locally (with poetry run make html, like described below), Pandoc <>_ needs to be installed on the system.