chore: consolidate dev dependencies into PEP 735 groups - #71
Open
ramakrishnap-nv wants to merge 1 commit into
Open
chore: consolidate dev dependencies into PEP 735 groups#71ramakrishnap-nv wants to merge 1 commit into
ramakrishnap-nv wants to merge 1 commit into
Conversation
ramakrishnap-nv
requested review from
rg20 and
tmckayus
and removed request for
a team
August 4, 2026 19:23
The repo declared developer dependencies in two places at once:
[project.optional-dependencies] dev = [ruff, pytest, pre-commit]
[dependency-groups] dev = [ipykernel]
Two mechanisms, same name, different contents. Extras are also published in
package metadata, so developer tooling was advertised as an optional runtime
feature of the library.
- Move ruff/pytest/pre-commit into the `dev` dependency group and drop the
`dev` extra. Extras now hold only genuine optional runtime features
(cuda12, cuda13, cuda13-socp).
- Set `default-groups = []`. uv installs the `dev` group by default, which
would make an end-user or launchable `uv sync --extra cuda13` pull
ruff/pytest/pre-commit.
- Split ipykernel into its own `notebooks` group. Registering the Jupyter
kernel is part of the documented end-user workflow, not a dev task. It
previously sat in `dev` and only worked because uv installs that group by
default; with default-groups disabled it has to be requested explicitly.
- Update README, CONTRIBUTING and the workflows to `--group dev`, adding
`--group notebooks` to the two syncs that are followed by
`uv run python -m ipykernel install`.
- Document the extras-vs-groups split in CONTRIBUTING.
`uv sync --extra dev` now fails with a clear "Extra `dev` is not defined"
rather than silently producing an environment without the tooling.
Verified the full group matrix: bare `uv sync` pulls none of it;
`--group notebooks` gives ipykernel only; `--group dev` gives ruff/pytest
only; both gives everything. Confirmed the README flow (sync, then register
the kernel) works end to end, and that tests pass on 3.11 and 3.12 via the
`--group dev` path CI uses.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com>
ramakrishnap-nv
force-pushed
the
chore/consolidate-dev-dependencies
branch
from
August 5, 2026 19:31
5779a90 to
949772d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Developer dependencies were declared in two places at once, under the same name:
Two mechanisms, same name, different contents. Extras are also published in package metadata, so developer tooling was advertised as an optional runtime feature of the library.
Change
--extracuda12,cuda13,cuda13-socp--group devruff,pytest,pre-commit--group notebooksipykernelruff/pytest/pre-commitinto thedevgroup; drop thedevextra.default-groups = []. uv installs thedevgroup by default, which would make an end-user or launchableuv sync --extra cuda13pullruff/pytest/pre-commit.A regression this surfaced
Disabling
default-groupsbroke the documented install flow, and I caught it before pushing:uv sync --extra cuda13 uv run python -m ipykernel install ... # No module named ipykernelipykernelhad been in thedevgroup and only worked because uv installs that group by default — the README's kernel step depended on that implicitly. Registering a Jupyter kernel is an end-user task, not a dev one, soipykernelmoved to its ownnotebooksgroup, and the two CI syncs followed byuv run python -m ipykernel install(main.yml:80,release-2512.yml:59) now request it. The GPU-pytest and CPU-test syncs correctly stay--group devonly.Verification
Full group matrix, checked against a real venv:
--group devpath CI uses (60 passed, 3 skipped).uv lock --lockedclean;pre-commit run --all-filesclean.Behaviour change worth noting in review:
uv sync --extra devnow fails withThat is deliberate — a loud failure beats silently producing an environment without the tooling. The launchable notebooks are unaffected; they only ever used
uv sync --extra {cuda_suffix}.Merge ordering
Rebased onto
mainafter #67, #69 and #72 merged. Therelease-2512.ymledit was dropped, since #67 deleted that file. Still conflicts with #68, which adds anotebooksgroup (papermill,nbconvert,ipykernel) andci/utilsscripts using--extra dev— the two are compatible in intent (#68 group is a superset), but whichever merges second needs a rebase.🤖 Generated with Claude Code