Skip to content

fix: rewrite version pins with dependency extras - #154

Merged
rapids-bot[bot] merged 1 commit into
NVIDIA:release/0.1from
AnuradhaKaruppiah:ak-version-rewrite
Jul 29, 2026
Merged

fix: rewrite version pins with dependency extras#154
rapids-bot[bot] merged 1 commit into
NVIDIA:release/0.1from
AnuradhaKaruppiah:ak-version-rewrite

Conversation

@AnuradhaKaruppiah

@AnuradhaKaruppiah AnuradhaKaruppiah commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Rewrite exact internal dependency pins that include extras, such as nemo-fabric-adapters-hermes[harness].
  • Move the Python version rewrite into a testable script and add regression coverage for extras and environment markers.

Root cause

The release regex matched bare package names only, so RC builds updated package versions but left root extras pinned to the stable version. Installing a root extra could therefore request an adapter version that was never published.

Validation

  • just --set no_uv true test-python — 531 passed, 14 skipped
  • cargo check -p fabric-python --locked
  • just wheels
  • Simulated v0.2.0-rc5 stamping and verified the built root wheel pins all adapter extras to 0.2.0rc5

Summary by CodeRabbit

  • Chores
    • Improved the Python package release version update workflow by switching to a dedicated CLI utility.
    • Automatically synchronizes versions and internal dependency pins across the main project and adapter packages.
    • Enforces that the runtime project keeps dynamic versioning and validates version/pin consistency.
  • Tests
    • Added coverage ensuring version and internal pin updates apply to adapter projects, including optional dependency extras and environment markers.

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

The release helper now invokes a standalone Python utility to synchronize package versions and internal dependency pins across project manifests. The utility validates dynamic runtime versioning and pin consistency, with pytest coverage for root and adapter manifests.

Changes

Python version synchronization

Layer / File(s) Summary
Version synchronization utility and release wiring
scripts/ci/set_python_project_versions.py, justfile
The justfile delegates to the standalone utility, which updates project versions and internal nemo-fabric-* pins, validates dynamic runtime versioning, and checks pin consistency.
Version synchronization test coverage
tests/scripts/test_set_python_project_versions.py
Tests cover root and adapter manifests, dependency extras and markers, synchronized pins, and preservation of dynamic runtime versioning.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ReleaseHelper
  participant VersionSyncScript
  participant ProjectManifests
  ReleaseHelper->>VersionSyncScript: Pass computed PEP 440 version
  VersionSyncScript->>ProjectManifests: Update package versions and internal pins
  VersionSyncScript->>ProjectManifests: Validate dynamic runtime version and pin consistency
  VersionSyncScript-->>ReleaseHelper: Report success or exit with validation error
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description covers the change well but omits required template sections like Overview, reviewer start point, related issue, and checkboxes. Add the template sections: Overview, Where should reviewer start?, Related Issues, and the two confirmation checkboxes.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title follows Conventional Commits and clearly matches the version-pin rewrite changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/ci/set_python_project_versions.py`:
- Around line 25-52: The runtime manifest validation currently occurs after the
project-version write loop, allowing partial updates on failure. Move the
runtime_path/tomllib validation block before iterating over project_paths,
ensuring all failure-prone checks complete before any manifest is mutated;
preserve the existing dynamic-version validation behavior.
- Around line 27-33: Update the version replacement logic in the project-version
processing flow to match only the version field under the [project] section,
count all matching entries before replacing, and require exactly one match. Do
not use subn(..., count=1) as the invariant check; reject manifests with zero or
multiple [project].version entries before writing changes.

In `@tests/scripts/test_set_python_project_versions.py`:
- Around line 17-87: Extend
test_set_python_project_versions_updates_internal_pins_with_extras or add a
focused test covering python/pyproject.toml runtime validation: create a runtime
project with a static project.version or without dynamic including "version",
call set_python_project_versions, and assert pytest.raises(SystemExit). Keep the
existing successful dynamic-version case unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 070b1d9f-4cd8-4a08-aacb-f60e0c9ed570

📥 Commits

Reviewing files that changed from the base of the PR and between d438ac3 and 5b389da.

📒 Files selected for processing (3)
  • justfile
  • scripts/ci/set_python_project_versions.py
  • tests/scripts/test_set_python_project_versions.py
📜 Review details
⏰ Context from checks skipped due to timeout. (18)
  • GitHub Check: Preview docs
  • GitHub Check: Pre-commit
  • GitHub Check: Test (Python 3.13, linux-arm64)
  • GitHub Check: Test (Python 3.13, linux-amd64)
  • GitHub Check: Test (Python 3.11, linux-amd64)
  • GitHub Check: Test (Python 3.12, macos-arm64)
  • GitHub Check: Test (Python 3.14, macos-arm64)
  • GitHub Check: Test (Python 3.12, windows-amd64)
  • GitHub Check: Test (Python 3.13, macos-arm64)
  • GitHub Check: Test (Python 3.11, windows-amd64)
  • GitHub Check: Test (Python 3.13, windows-amd64)
  • GitHub Check: Test (Python 3.14, linux-arm64)
  • GitHub Check: Test (Python 3.11, linux-arm64)
  • GitHub Check: Test (Python 3.12, linux-arm64)
  • GitHub Check: Test (Python 3.11, macos-arm64)
  • GitHub Check: Test (Python 3.14, windows-amd64)
  • GitHub Check: Test (Python 3.14, linux-amd64)
  • GitHub Check: Test (Python 3.12, linux-amd64)
🧰 Additional context used
📓 Path-based instructions (16)
**/*.{rs,py,pyi,json,yaml,yml}

📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)

Determine and update every affected public surface, including the CLI, PyO3 bindings, Python SDK, type stubs, schemas, and adapter contract, so they remain in parity.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*

📄 CodeRabbit inference engine (.agents/skills/karpathy-guidelines/SKILL.md)

**/*: Before implementing, explicitly state assumptions, surface ambiguity and tradeoffs, present multiple interpretations when relevant, and ask for clarification rather than silently deciding or proceeding when requirements are unclear.
Prefer the minimum code needed to solve the requested problem: avoid speculative features, unnecessary abstractions, unrequested flexibility, and handling of impossible scenarios; simplify overcomplicated solutions.
When editing existing code, make surgical changes only: do not modify unrelated code, comments, formatting, or pre-existing dead code; match the existing style, and remove only unused imports, variables, or functions introduced by your changes.
Define verifiable success criteria for each task, such as writing regression tests for bugs and invalid-input tests for validation, then verify the implementation against those criteria. For multi-step work, state a brief plan with a verification check for each step.

**/*: Always spell NVIDIA in all caps; do not use Nvidia, nvidia, nVidia, nVIDIA, or NV.
Use an NVIDIA before a noun, because the name begins with an “en” sound.
Do not add a registered trademark symbol after NVIDIA when referring to the company; use trademark symbols with product names only when required by the document type or legal guidance.
Verify official capitalization, spacing, hyphenation, and spelling for NVIDIA and third-party product names; do not rewrite official product names for grammar or title-case rules.
Precede NVIDIA product names with NVIDIA on first mention when natural and accurate, and link the first mention when the destination helps the reader.
On first use, include the company name and full model qualifier when it helps identify the model; preserve official capitalization and punctuation, and use shorter family names only after establishing the full name.
For learning-oriented and developer content, do not force trademark symbols unless explicitly required; for press, ...

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
  • justfile
**/*.{rs,py}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

For native binding changes, run cargo check -p fabric-python --locked.

**/*.{rs,py}: When changing the Rust core or public schemas, run both the Rust and Python test suites.
When adding functionality, include tests in the corresponding Rust crate or the relevant area under tests/.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.{py,pyi}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

If Python code or a Python-facing adapter changes, run just test-python.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.{rs,py,pyi}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

**/*.{rs,py,pyi}: If public configuration types change, confirm schema snapshot tests in just test-rust pass and review generated schema diffs.
For schema or public contract changes, run both language suites and review changes under schemas/ and generated API references.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.{py,pyi,rs}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

For Python SDK or PyO3 binding changes, use python-tests, run focused pytest tests first, then just test-python; rebuild with just build-python when native code or packaging changes.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
tests/**/*.py

📄 CodeRabbit inference engine (.agents/skills/python-tests/SKILL.md)

tests/**/*.py: Use Pytest to run Python tests.
Do not add @pytest.mark.asyncio to tests; async tests are automatically detected and run by the async runner.
Do not add -> None return type annotations to test functions.
When mocking a class, use unittest.mock.MagicMock or unittest.mock.AsyncMock, using the spec argument when necessary, rather than defining a new class.
Prefix mocked class names with mock, not fake.
Prefer pytest fixtures over helper methods.
Do not repeat fixtures; place fixtures needed by multiple test files in conftest.py.
Define fixtures using @pytest.fixture(name="<fixture_name>"[, scope="<scope>"]) and a function named <fixture_name>_fixture; specify scope only when it is not function.
Prefer pytest.mark.parametrize over separate tests for different input types.
Use @pytest.mark.usefixtures when a fixture is needed but its return value is unused or it does not return a value.
Use the autouse restore_environ_fixture from tests/conftest.py to restore environment variables; modify variables with os.environ and do not use monkeypatch.setenv.
Avoid defensive programming in tests; access expected data directly so missing data raises a clear failure, such as using results["data"] instead of results.get("data").

Files:

  • tests/scripts/test_set_python_project_versions.py
**/*.{rs,py,toml}

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

When editing version helpers, verify every nemo-fabric-* workspace package through Cargo metadata and reject a static version in python/pyproject.toml.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.{toml,rs,py}

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

Avoid blind repository-wide replacement of version-like strings; distinguish package-version references from examples and unrelated dependency versions.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.{rs,py,html,md,mdx,toml,yml,yaml,sh,bash}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

All Rust, Python, HTML, Markdown, MDX, TOML, YAML, and shell source files must include the project SPDX copyright and Apache-2.0 license headers using the comment syntax appropriate to each file type.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.py

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Use type annotations for public Python APIs.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.{py,rs}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

**/*.{py,rs}: Keep native Python binding declarations synchronized with their Rust implementations.
Use snake_case for functions and variables; use PascalCase for Rust types and Python classes.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
{tests/**,python/tests/**}

⚙️ CodeRabbit configuration file

{tests/**,python/tests/**}: Tests should cover the behavior promised by the changed API surface, including error paths, lifecycle cleanup, and SDK/native parity where relevant.

Files:

  • tests/scripts/test_set_python_project_versions.py
{docs/package.json,docs/package-lock.json,.github/workflows/*.yml,justfile}

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Keep documentation tooling, CI workflows, install commands, build/test/clean recipes, and examples consistent with current package names and commands.

Files:

  • justfile
{pyproject.toml,python/pyproject.toml,Cargo.toml,docs/package.json,.github/workflows/*.yml,justfile}

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Reflect public packaging changes in release-facing documentation and ensure CI references the same package names and commands used by local workflows.

Files:

  • justfile
justfile

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

justfile: The set-version recipe must run just lock-python after source metadata is updated.
set_project_version must invoke both Cargo and Python project version helpers.

Files:

  • justfile
🪛 Ruff (0.16.0)
scripts/ci/set_python_project_versions.py

[warning] 33-33: Avoid specifying long messages outside the exception class

(TRY003)


[warning] 50-52: Avoid specifying long messages outside the exception class

(TRY003)


[warning] 58-58: Use list.extend to create a transformed list

(PERF401)


[warning] 69-69: Avoid specifying long messages outside the exception class

(TRY003)

🔇 Additional comments (1)
justfile (1)

243-255: 📐 Maintainability & Code Quality

Provide release-workflow validation evidence.

Please include results for just test-python and just build-python; this changes Python release/packaging behavior. As per coding guidelines, “If Python code or a Python-facing adapter changes, run just test-python” and rebuild with just build-python when packaging changes.

Source: Coding guidelines

Comment thread scripts/ci/set_python_project_versions.py
Comment thread scripts/ci/set_python_project_versions.py
Comment thread tests/scripts/test_set_python_project_versions.py

@zhongxuanwang-nv zhongxuanwang-nv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Anuradha!!!

@AnuradhaKaruppiah
AnuradhaKaruppiah marked this pull request as ready for review July 29, 2026 18:39
@AnuradhaKaruppiah
AnuradhaKaruppiah requested a review from a team as a code owner July 29, 2026 18:39
Signed-off-by: Anuradha Karuppiah <26330987+AnuradhaKaruppiah@users.noreply.github.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/ci/set_python_project_versions.py`:
- Around line 67-70: Validate the CLI version argument before
set_python_project_versions begins rewriting manifests, allowing only the
project’s expected version format and rejecting quotes, newlines, and
replacement backreferences. Ensure invalid input exits without modifying any
manifest, and add a regression test covering unsafe version text.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 06d8341f-31f6-4451-aa85-e36e7013c5eb

📥 Commits

Reviewing files that changed from the base of the PR and between 5b389da and 8ae6313.

📒 Files selected for processing (3)
  • justfile
  • scripts/ci/set_python_project_versions.py
  • tests/scripts/test_set_python_project_versions.py
📜 Review details
⏰ Context from checks skipped due to timeout. (18)
  • GitHub Check: Preview docs
  • GitHub Check: Test (Python 3.13, windows-amd64)
  • GitHub Check: Test (Python 3.14, windows-amd64)
  • GitHub Check: Test (Python 3.12, windows-amd64)
  • GitHub Check: Test (Python 3.12, linux-arm64)
  • GitHub Check: Test (Python 3.14, linux-arm64)
  • GitHub Check: Test (Python 3.13, macos-arm64)
  • GitHub Check: Test (Python 3.12, linux-amd64)
  • GitHub Check: Test (Python 3.11, windows-amd64)
  • GitHub Check: Test (Python 3.13, linux-arm64)
  • GitHub Check: Test (Python 3.14, macos-arm64)
  • GitHub Check: Test (Python 3.13, linux-amd64)
  • GitHub Check: Test (Python 3.11, linux-amd64)
  • GitHub Check: Test (Python 3.11, macos-arm64)
  • GitHub Check: Test (Python 3.12, macos-arm64)
  • GitHub Check: Test (Python 3.11, linux-arm64)
  • GitHub Check: Test (Python 3.14, linux-amd64)
  • GitHub Check: Pre-commit
🧰 Additional context used
📓 Path-based instructions (16)
**/*

📄 CodeRabbit inference engine (.agents/skills/karpathy-guidelines/SKILL.md)

**/*: Before implementing, explicitly state assumptions, surface ambiguity and tradeoffs, present multiple interpretations when relevant, and ask for clarification rather than silently deciding or proceeding when requirements are unclear.
Prefer the minimum code needed to solve the requested problem: avoid speculative features, unnecessary abstractions, unrequested flexibility, and handling of impossible scenarios; simplify overcomplicated solutions.
When editing existing code, make surgical changes only: do not modify unrelated code, comments, formatting, or pre-existing dead code; match the existing style, and remove only unused imports, variables, or functions introduced by your changes.
Define verifiable success criteria for each task, such as writing regression tests for bugs and invalid-input tests for validation, then verify the implementation against those criteria. For multi-step work, state a brief plan with a verification check for each step.

**/*: Always spell NVIDIA in all caps; do not use Nvidia, nvidia, nVidia, nVIDIA, or NV.
Use an NVIDIA before a noun, because the name begins with an “en” sound.
Do not add a registered trademark symbol after NVIDIA when referring to the company; use trademark symbols with product names only when required by the document type or legal guidance.
Verify official capitalization, spacing, hyphenation, and spelling for NVIDIA and third-party product names; do not rewrite official product names for grammar or title-case rules.
Precede NVIDIA product names with NVIDIA on first mention when natural and accurate, and link the first mention when the destination helps the reader.
On first use, include the company name and full model qualifier when it helps identify the model; preserve official capitalization and punctuation, and use shorter family names only after establishing the full name.
For learning-oriented and developer content, do not force trademark symbols unless explicitly required; for press, ...

Files:

  • justfile
  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
{docs/package.json,docs/package-lock.json,.github/workflows/*.yml,justfile}

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Keep documentation tooling, CI workflows, install commands, build/test/clean recipes, and examples consistent with current package names and commands.

Files:

  • justfile
{pyproject.toml,python/pyproject.toml,Cargo.toml,docs/package.json,.github/workflows/*.yml,justfile}

📄 CodeRabbit inference engine (.agents/skills/maintain-packaging/SKILL.md)

Reflect public packaging changes in release-facing documentation and ensure CI references the same package names and commands used by local workflows.

Files:

  • justfile
justfile

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

justfile: The set-version recipe must run just lock-python after source metadata is updated.
set_project_version must invoke both Cargo and Python project version helpers.

Files:

  • justfile
**/*.{rs,py,pyi,json,yaml,yml}

📄 CodeRabbit inference engine (.agents/skills/contribute-api/SKILL.md)

Determine and update every affected public surface, including the CLI, PyO3 bindings, Python SDK, type stubs, schemas, and adapter contract, so they remain in parity.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.{rs,py}

📄 CodeRabbit inference engine (.agents/skills/prepare-pr/SKILL.md)

For native binding changes, run cargo check -p fabric-python --locked.

**/*.{rs,py}: When changing the Rust core or public schemas, run both the Rust and Python test suites.
When adding functionality, include tests in the corresponding Rust crate or the relevant area under tests/.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.{py,pyi}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

If Python code or a Python-facing adapter changes, run just test-python.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.{rs,py,pyi}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

**/*.{rs,py,pyi}: If public configuration types change, confirm schema snapshot tests in just test-rust pass and review generated schema diffs.
For schema or public contract changes, run both language suites and review changes under schemas/ and generated API references.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.{py,pyi,rs}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

For Python SDK or PyO3 binding changes, use python-tests, run focused pytest tests first, then just test-python; rebuild with just build-python when native code or packaging changes.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
tests/**/*.py

📄 CodeRabbit inference engine (.agents/skills/python-tests/SKILL.md)

tests/**/*.py: Use Pytest to run Python tests.
Do not add @pytest.mark.asyncio to tests; async tests are automatically detected and run by the async runner.
Do not add -> None return type annotations to test functions.
When mocking a class, use unittest.mock.MagicMock or unittest.mock.AsyncMock, using the spec argument when necessary, rather than defining a new class.
Prefix mocked class names with mock, not fake.
Prefer pytest fixtures over helper methods.
Do not repeat fixtures; place fixtures needed by multiple test files in conftest.py.
Define fixtures using @pytest.fixture(name="<fixture_name>"[, scope="<scope>"]) and a function named <fixture_name>_fixture; specify scope only when it is not function.
Prefer pytest.mark.parametrize over separate tests for different input types.
Use @pytest.mark.usefixtures when a fixture is needed but its return value is unused or it does not return a value.
Use the autouse restore_environ_fixture from tests/conftest.py to restore environment variables; modify variables with os.environ and do not use monkeypatch.setenv.
Avoid defensive programming in tests; access expected data directly so missing data raises a clear failure, such as using results["data"] instead of results.get("data").

Files:

  • tests/scripts/test_set_python_project_versions.py
**/*.{rs,py,toml}

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

When editing version helpers, verify every nemo-fabric-* workspace package through Cargo metadata and reject a static version in python/pyproject.toml.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.{toml,rs,py}

📄 CodeRabbit inference engine (.agents/skills/update-project-version/SKILL.md)

Avoid blind repository-wide replacement of version-like strings; distinguish package-version references from examples and unrelated dependency versions.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.{rs,py,html,md,mdx,toml,yml,yaml,sh,bash}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

All Rust, Python, HTML, Markdown, MDX, TOML, YAML, and shell source files must include the project SPDX copyright and Apache-2.0 license headers using the comment syntax appropriate to each file type.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.py

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Use type annotations for public Python APIs.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
**/*.{py,rs}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

**/*.{py,rs}: Keep native Python binding declarations synchronized with their Rust implementations.
Use snake_case for functions and variables; use PascalCase for Rust types and Python classes.

Files:

  • tests/scripts/test_set_python_project_versions.py
  • scripts/ci/set_python_project_versions.py
{tests/**,python/tests/**}

⚙️ CodeRabbit configuration file

{tests/**,python/tests/**}: Tests should cover the behavior promised by the changed API surface, including error paths, lifecycle cleanup, and SDK/native parity where relevant.

Files:

  • tests/scripts/test_set_python_project_versions.py
🪛 Ruff (0.16.0)
scripts/ci/set_python_project_versions.py

[warning] 33-33: Avoid specifying long messages outside the exception class

(TRY003)


[warning] 50-52: Avoid specifying long messages outside the exception class

(TRY003)


[warning] 58-58: Use list.extend to create a transformed list

(PERF401)


[warning] 69-69: Avoid specifying long messages outside the exception class

(TRY003)

🔇 Additional comments (4)
scripts/ci/set_python_project_versions.py (2)

25-52: Validate every manifest before the first write.

Runtime-manifest parsing still occurs after root and adapter rewrites, so an invalid runtime manifest leaves a partial release stamp. This existing finding remains unresolved.


27-33: Enforce exactly one [project].version.

Line 30 limits subn to one replacement, so count cannot detect a second match; the pattern is also not scoped to [project]. This existing finding remains unresolved.

tests/scripts/test_set_python_project_versions.py (1)

17-87: Add runtime-validation failure coverage.

The suite still tests only the valid dynamic-version path. Add static-version and missing-dynamic cases asserting SystemExit.

As per coding guidelines, “Define verifiable success criteria … invalid-input tests for validation”; as per path instructions, tests must cover “error paths.”

Sources: Coding guidelines, Path instructions

justfile (1)

243-255: LGTM!

Comment thread scripts/ci/set_python_project_versions.py
@AnuradhaKaruppiah

Copy link
Copy Markdown
Collaborator Author

/merge

@rapids-bot
rapids-bot Bot merged commit 5bcfdf6 into NVIDIA:release/0.1 Jul 29, 2026
31 checks passed
@AnuradhaKaruppiah
AnuradhaKaruppiah deleted the ak-version-rewrite branch August 10, 2026 16:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants