When CI workflows mix multiple uv steps (e.g., install built wheels, then run tests/lint), make dependency installation deterministic and prevent later steps from overwriting earlier artifact installs.
Apply these rules:
uv lock --check (or equivalent in your uv_setup).uv sync --group <name> ....uv sync is subtractive: it can remove deps not in the selected group(s) (so expect functional differences vs non-sync installs).uv run), stop uv from resynchronizing that environment.
uv sync --only-group test ...).UV_NO_SYNC=true when using uv run/test commands that would otherwise sync and replace the wheel with the local project.Example pattern (wheel install + tests without overwriting):
# Install built wheel artifacts
uv pip install dist/*.whl
# Prevent later uv operations (including under uv run) from syncing/overwriting
export UV_NO_SYNC=true
# Run tests (may internally call uv run)
make tests # should behave like: uv run --group test pytest ...
For group-scoped test deps, prefer:
uv sync --only-group test
# then run tests
uv run pytest
This avoids the common CI failure mode where a built wheel install is replaced by the local project (or where earlier dependency changes vanish after a later uv run).
Enter the URL of a public GitHub repository