Considering upgrading the CI from nox-based, to uv-based.
There are 3 available approaches:
- Use
nox as-is, with pip backend
- Use
nox with uv backend
- Use pure
uv
Performance was tested on two runs of the CI across Python 3.10 to 3.13 (see example).
Relative to the run-time of the current nox-based CI, nox with uv backend was faster (took ~77% of the time), and pure uv slightly faster again (took ~73% of the time). My suggestion is that we maintain nox, which is cleaner to have in the CI testing across many platforms, but move to a uv backend to get most of the speed-up.
At the same time, this change would allow us to pick up uv for our development workflow (and wouldn't prevent other approaches). It would:
- simplify the repo (we can remove
requirements.txt files, absorbing dependencies into the pyproject.toml)
- users install either with
pip install -e .[dev] or more easily with uv sync --all-extras
- we could commit the
uv.lock file, and periodically update it, if we wanted to have more control over dependencies
- having this in the repo would mean exactly replicable development environments by default (no new venv/conda env or pip install steps)
Considering upgrading the CI from
nox-based, touv-based.There are 3 available approaches:
noxas-is, withpipbackendnoxwithuvbackenduvPerformance was tested on two runs of the CI across Python 3.10 to 3.13 (see example).
Relative to the run-time of the current
nox-based CI,noxwithuvbackend was faster (took ~77% of the time), and pureuvslightly faster again (took ~73% of the time). My suggestion is that we maintainnox, which is cleaner to have in the CI testing across many platforms, but move to auvbackend to get most of the speed-up.At the same time, this change would allow us to pick up
uvfor our development workflow (and wouldn't prevent other approaches). It would:requirements.txtfiles, absorbing dependencies into thepyproject.toml)pip install -e .[dev]or more easily withuv sync --all-extrasuv.lockfile, and periodically update it, if we wanted to have more control over dependencies