[Workflow] Use Newton 1.5.0 PyPI release - #7146
Conversation
Greptile SummaryThe PR replaces the Newton
Confidence Score: 5/5The PR appears safe to merge; no concrete changed-code defect or newly introduced security issue was identified. The Newton pin, generated overrides, lock metadata, installation behavior, and targeted tests consistently transition from the Git branch to the exact published release. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
Version["project.version.newton = 1.5.0"] --> Override["uv override: newton[sim]==1.5.0"]
Override --> Lock["uv.lock: PyPI Newton 1.5.0 wheel"]
Override --> CLI["Install CLI reads exact requirement"]
CLI --> Freeze["pip freeze"]
Freeze -->|newton==1.5.0| Skip["Keep installed release"]
Freeze -->|missing or different| Install["Uninstall old Newton and install pinned release"]
Reviews (1): Last reviewed commit: "Use Newton 1.5.0 PyPI release" | Re-trigger Greptile |
There was a problem hiding this comment.
Isaac Lab Review Bot
The Newton dependency source is consistently changed from the release-1.5 Git branch to the published newton[sim]==1.5.0 release across project metadata, generated override files, the lockfile, installer behavior, tests, and changelog.
- Design and architecture: The existing single-source pin model is preserved:
[tool.isaaclab.versions].newtonsupplies the release version mirrored by the uv override and installation workflows. No new dependency configuration path or architectural coupling is introduced. - API: No public symbols, CLI arguments, or defaults change. The dependency-source transition is reflected in the installer’s user-facing status messages and pin handling without altering the installation interface.
- Implementation: The installer now detects the exact
newton==1.5.0freeze entry, while prior Git installations and Isaac Sim’s bundled 1.2.0 continue through the replacement path. The uv override mirrors, lock manifest, tests, and changelog agree on the PyPI release. The pre-existing early-return behavior still assumes that matching Newton means the separately forced schema dependency needs no repair, but this PR does not introduce that tradeoff.
No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.
Automated review; human maintainers own approval decisions.
…update-newton-1.5-pypi # Conflicts: # pyproject.toml # uv.lock
| ovrtx = "0.4.1.364340" | ||
| ovstage = "0.1.1.355824" | ||
| newton = "release-1.5" | ||
| newton = "1.5.0" |
There was a problem hiding this comment.
I think that's one of my confusions. Is there a way to define it only once?
| if frozen.returncode == 0 and any( | ||
| _requirement_name(line) == "newton" and commit in line for line in frozen.stdout.splitlines() | ||
| line.strip().lower() == f"newton=={version}" for line in frozen.stdout.splitlines() | ||
| ): |
There was a problem hiding this comment.
[P2] Agent suggestion: consider making this skip-check tolerant of a git/SHA pin — it is correct for ==1.5.0, but silently degrades for any other pin shape.
Worth saying first that this line fixes a real pre-existing bug: with the old release-1.5 branch pin the check could never match, because pip freeze records the resolved commit, never the ref name — so isaaclab -i uninstalled and reinstalled Newton from git on every run.
| freeze line | pin | before | this PR |
|---|---|---|---|
newton @ git+…@cca3bb8… |
release-1.5 |
reinstall | reinstall |
newton @ git+…@cca3bb8… |
cca3bb8… (full SHA) |
skip | reinstall |
newton==1.5.0 |
1.5.0 |
skip | skip |
The narrowing is row 2: a full-SHA pin used to be handled and now is not. If Newton ever needs a SHA pin again — a hotfix picked up between releases — version becomes a SHA, newton==<sha> matches no freeze line, and the CLI falls back to uninstall+reinstall on every invocation. No error, just churn, which is the failure mode hardest to notice.
Accepting both shapes keeps the anchored range the only thing that changes:
| if frozen.returncode == 0 and any( | |
| _requirement_name(line) == "newton" and commit in line for line in frozen.stdout.splitlines() | |
| line.strip().lower() == f"newton=={version}" for line in frozen.stdout.splitlines() | |
| ): | |
| if frozen.returncode == 0 and any( | |
| line.strip().lower() == f"newton=={version}" or line.strip().lower().endswith(f"@{version}") | |
| for line in frozen.stdout.splitlines() | |
| if _requirement_name(line) == "newton" | |
| ): |
Behaviour of the suggested predicate across six freeze/pin combinations
| installed | pin | result |
|---|---|---|
newton==1.5.0 |
1.5.0 |
skip |
newton @ git+…@<sha> |
full SHA | skip |
newton==1.2.0 (Isaac Sim's bundled) |
1.5.0 |
install |
newton @ git+…@<sha> |
1.5.0 |
install |
newton==11.5.0 |
1.5.0 |
install (no substring false-positive) |
newton-usd-schemas==1.5.0 only |
1.5.0 |
install (wrong package ignored) |
- Either accept both pin shapes, or state explicitly that a non-registry pin is unsupported.
| # dependency whose table value may be an exact pin ("1.2.3" -> ``==``) or a range | ||
| # (">=1.2.3" -> mirrored verbatim). | ||
| assert any(dep.endswith(f"newton.git@{versions['newton']}") for dep in overrides) | ||
| assert f"newton[sim]=={versions['newton']}" in overrides |
There was a problem hiding this comment.
[P3] Agent suggestion: this assertion hard-codes the registry pin shape, while the warp-lang assertion two lines below deliberately accepts either. Consider giving Newton the same treatment.
As written, returning Newton to a git pin fails this test, so a pin change and a test edit have to land together. The adjacent lines already show the preferred pattern:
warp_spec = f"warp-lang=={warp_value}" if warp_value[0].isdigit() else f"warp-lang{warp_value}"This assertion is also what keeps [tool.isaaclab.versions].newton and the [tool.uv] override from drifting — _ensure_newton installs the override string but compares against the versions-table value, so if the two ever disagree the CLI installs one version and compares against another, reinstalling forever. That makes it load-bearing, and worth having it survive a pin-shape change rather than block one.
- Accept either
newton[sim]==<version>ornewton[sim] @ git+…@<ref>, keyed off the table value the waywarp_specis.
Description
Updates the authoritative Newton pin from the
release-1.5Git branch to the publishednewton[sim]==1.5.0PyPI release.This also regenerates the wheel-builder and install-CI overrides and
uv.lock, and updates the install CLI to detect and report the pinned package release instead of a Git commit.Type of change
Screenshots
Not applicable.
Checklist
uv run isaaclab -fsource/isaaclab/changelog.d/Validation
uv run python -m pytest source/isaaclab/test/cli/test_install.py -k EnsureNewton source/isaaclab/test/cli/test_uv_run_pyproject.py -k "EnsureNewton or version_single_source"(3 passed)uv run python tools/changelog/cli.py check developuv run isaaclab -fuv lock --check