As the Python packaging world evolves, we need to evolve with it.
Python has standardized around a pyproject.toml
file, which defines metadata for the package.
The neat thing about it is that it supports project-defined build system backends. There are three notable ones today (as of this writing — August 9, 2022):
Flit is too simplistic for many of our packages. Poetry is too heavy-handed and opinionated. Setuptools is the closest match for what we have today.
However, some of our packages (Review Board and Djblets, for example) also have additional tasks required that are not covered directly by these tools:
pip install -e
with wheels is used instead of default setup.py develop
with eggs*-requirements.txt
files when in editable install mode.py
source files