Repository navigation
ci(deps): group dependabot updates and switch pip to uv - #732
Conversation
Dependabot opened one PR per dependency for anything outside the four named pattern groups. Replace those with catch-all `*` groups so each ecosystem produces a single PR per run, plus a second group with `applies-to: security-updates` since grouping defaults to version updates only. Groups cannot span `updates` entries, so the floor is two PRs: Python and GitHub Actions. Also switch the Python ecosystem from `pip` to `uv`. All dev tooling is declared in `[tool.uv].dev-dependencies`, which `pip` does not read, so ruff, pytest, asv and friends were never being updated. The `uv` ecosystem also keeps `uv.lock` in step with `pyproject.toml`. The removed `testing` and `dev-tools` groups were matching nothing, and `dev-tools` still listed black, isort and mypy, which ruff replaced. Finally, fix the Actions label. Custom labels replace the defaults and missing ones are ignored, so `github-actions` + `automated` meant those PRs landed with no labels at all. The repo label is `github_actions`.
|
Correction to this PR's description, based on the first post-merge run (#734). I claimed the
Root cause: Dependabot's uv parser reads only these pyproject keys — — per The fix is to migrate What this PR did deliver, verified on #733/#734:
|
Checklist
uv run poe formatbefore committing. — N/A, config-onlyDescription
Three changes to
.github/dependabot.yml.1. One PR per ecosystem instead of one per dependency.
The config had four named pattern groups, but per the Dependabot options reference, "any outdated dependencies that do not match a rule are updated in individual pull requests." So we were getting up to four group PRs plus a long tail of singletons.
Replaced with a catch-all
*group per ecosystem, plus a second group withapplies-to: security-updates— grouping defaults to version updates only, so security PRs would otherwise stay ungrouped.Groups cannot span
updatesentries, so the floor is two PRs per run: Python and GitHub Actions.2. Python ecosystem switched from
piptouv.All dev tooling is declared in
[tool.uv].dev-dependencies(pyproject.toml:68-88), which thepipecosystem does not read. ruff, pytest, pytest-xdist, asv, twine, hypothesis and the rest have never been bumped by Dependabot. Theuvecosystem reads them and also keepsuv.lockin step withpyproject.toml.This also explains why the removed
testinganddev-toolsgroups were matching nothing — anddev-toolsstill listedblack,isortandmypy, which ruff replaced some time ago.The
numpy/scipymajor-versionignorerules carry over unchanged.3. Fixed the GitHub Actions labels.
Custom
labelsreplace the defaults, and any label not defined in the repo is silently ignored. The Actions entry asked forgithub-actions+automated; the repo has neither (it hasgithub_actions, with an underscore). Net effect: Actions PRs have been landing with no labels at all. Switched togithub_actions.Verification
Parsed the file and checked it against the documented schema: every key under
updates[]andgroups.*is a valid option, both group identifiers satisfy^[A-Za-z][A-Za-z|_-]*[A-Za-z]$, each ecosystem has a catch-all for both version and security updates, andpyproject.toml+uv.lockare both present at/.Cross-checked every configured label against
gh label list:Each entry now has at least one label that actually lands.
Follow-ups, not in this PR
.github/labels.ymlhas never been synced. It declaresautomatedandgithub-actions, neither of which exists in the repo. I leftautomatedin the Dependabot config — it's the declared intent and is harmlessly ignored until someone syncs the file — but syncinglabels.yml(or dropping the stale entries) is worth doing separately.uvPR will be large. The dev-dependency block has never been updated, so expect a big first batch plus a fulluv.lockregeneration. Worth merging deliberately rather than on autopilot.exclude-patternson the group, orignoreat the entry level.[tool.uv] exclude-newer = "7 days"(pyproject.toml:66) will likely delay bumps by a week on top of Dependabot's own 3-day default cooldown, since Dependabot resolves viauv lock. Not harmful, just slower than the weekly schedule suggests.commit-message.prefix-development: "dev-deps"is now largely inert: a mixed prod+dev group commits underdeps. Left in place; harmless.Issue Number: N/A