-
Notifications
You must be signed in to change notification settings - Fork 18
fix(cli): make uv tool install the front door for nemo-platform #1248
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
callingmedic911
merged 25 commits into
main
from
aditya/uv-tool-install-front-door-50d4
Aug 13, 2026
Merged
Changes from 15 commits
Commits
Show all changes
25 commits
Select commit
Hold shift + click to select a range
234706f
fix(sdk): report the installed nemo-platform version
cursoragent 8aa84c9
feat(cli): match the missing-extra hint to the install method
cursoragent 38baa51
docs: lead with uv tool install for the PyPI install path
cursoragent cd17eb7
docs: pin the documented tool install to a supported interpreter
cursoragent 93fc656
ci: exercise the uv tool install path and assert a real version
cursoragent c650ea3
fix(sdk): declare the supported Python range on the bundled SDK
cursoragent 228f484
ci: match the version fallback exactly in the CLI smoke test
cursoragent b29fdfe
fix(ci): repair the wheel-constraints generator
cursoragent 548ac20
deps(nemo-agents): move NAT to the 1.9 line so the wheel resolves
cursoragent d6a8719
ci: install wheels without repo config in wheel-test
cursoragent 89868b2
docs: keep the interpreter flag out of the install path
cursoragent b4cc5b2
chore(licenses): refresh the manifest for the NAT bump
cursoragent 1c5a6b0
Revert "deps(nemo-agents): move NAT to the 1.9 line so the wheel reso…
cursoragent 76d1643
docs: tighten the install sections and ground the troubleshooting
cursoragent f3b3c4a
docs: trim the install-failure entry to what a user needs
cursoragent da84640
Reapply "deps(nemo-agents): move NAT to the 1.9 line so the wheel res…
cursoragent 7a73d01
chore: refresh wheel constraints for upstream patch releases
cursoragent 0b99b01
Merge remote-tracking branch 'origin/main' into aditya/uv-tool-instal…
cursoragent 903ecb9
chore: regenerate the requirements export for the NAT bump
cursoragent 6bcdc7c
chore(ci): drop the obsolete litellm cap from wheel constraints
cursoragent 0ae352a
docs: use uv for the virtual environment path too
cursoragent 1140b59
Merge remote-tracking branch 'origin/main' into aditya/uv-tool-instal…
cursoragent 77f0ff0
chore: regenerate derived artifacts after merging main
cursoragent f9d8a1b
Merge remote-tracking branch 'origin/main' into aditya/uv-tool-instal…
cursoragent 268b9bf
test(licenses): stop asserting a package the closure no longer has
cursoragent File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
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
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
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
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
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
22 changes: 22 additions & 0 deletions
22
packages/nemo_platform_ext/src/nemo_platform_ext/local/install.py
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| """How this NeMo Platform install was created.""" | ||
|
|
||
| from __future__ import annotations | ||
|
|
||
| import sys | ||
| from pathlib import Path | ||
|
|
||
|
|
||
| def services_extra_install_command() -> str: | ||
| """Return the command that adds the packaged service dependencies here. | ||
|
|
||
| ``uv tool install`` environments are managed by uv and are not meant to be | ||
| edited with pip; re-running the tool install with the extra upgrades them | ||
| in place. uv marks such an environment with a ``uv-receipt.toml`` at its | ||
| root, which is what distinguishes it from an ordinary virtual environment. | ||
| """ | ||
| if (Path(sys.prefix) / "uv-receipt.toml").is_file(): | ||
| return "uv tool install 'nemo-platform[all]'" | ||
| return "pip install 'nemo-platform[all]'" |
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| from __future__ import annotations | ||
|
|
||
| import sys | ||
| from pathlib import Path | ||
|
|
||
| import pytest | ||
| from nemo_platform_ext.local.install import services_extra_install_command | ||
|
|
||
|
|
||
| @pytest.mark.parametrize( | ||
| ("uv_tool_env", "expected"), | ||
| [ | ||
| (False, "pip install 'nemo-platform[all]'"), | ||
| (True, "uv tool install 'nemo-platform[all]'"), | ||
| ], | ||
| ) | ||
| def test_services_extra_install_command_matches_install_method( | ||
| tmp_path: Path, monkeypatch: pytest.MonkeyPatch, uv_tool_env: bool, expected: str | ||
| ) -> None: | ||
| if uv_tool_env: | ||
| (tmp_path / "uv-receipt.toml").write_text("[tool]\n") | ||
| monkeypatch.setattr(sys, "prefix", str(tmp_path)) | ||
|
|
||
| assert services_extra_install_command() == expected |
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
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
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
6 changes: 2 additions & 4 deletions
6
sdk/python/nemo-platform/src/nemo_platform/cli/commands/services/cli.py
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.