Skip to content

Replace nox with uv in CI #443

@emlynsg

Description

@emlynsg

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)

Metadata

Metadata

Assignees

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions