Skip to content

[Workflow] Use Newton 1.5.0 PyPI release - #7146

Open
StafaH wants to merge 5 commits into
isaac-sim:developfrom
StafaH:update-newton-1.5-pypi
Open

[Workflow] Use Newton 1.5.0 PyPI release#7146
StafaH wants to merge 5 commits into
isaac-sim:developfrom
StafaH:update-newton-1.5-pypi

Conversation

@StafaH

@StafaH StafaH commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Description

Updates the authoritative Newton pin from the release-1.5 Git branch to the published newton[sim]==1.5.0 PyPI 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

  • Workflow/dependency update (non-breaking)

Screenshots

Not applicable.

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with uv run isaaclab -f
  • Documentation is not affected; a changelog fragment is included
  • My changes generate no new warnings
  • I have run the targeted install and pin-consistency tests
  • I have added a changelog fragment under source/isaaclab/changelog.d/
  • Contributor metadata is already represented in the repository revision history

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 develop
  • uv run isaaclab -f
  • uv lock --check

@StafaH
StafaH requested a review from a team August 18, 2026 00:33
@github-actions github-actions Bot added isaac-lab Related to Isaac Lab team infrastructure labels Aug 18, 2026
@greptile-apps

greptile-apps Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR replaces the Newton release-1.5 Git dependency with the published newton[sim]==1.5.0 release and updates installation logic to recognize the pinned package version.

  • Updates the authoritative dependency pin and generated override files.
  • Regenerates the lockfile with Newton sourced from PyPI.
  • Updates CLI messaging, installed-version detection, tests, and changelog metadata.

Confidence Score: 5/5

The 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

Filename Overview
pyproject.toml Replaces the Newton Git override and version source with an exact PyPI 1.5.0 pin.
source/isaaclab/isaaclab/cli/commands/install.py Updates Newton installation detection and user messaging from Git-commit semantics to exact release-version semantics.
source/isaaclab/test/cli/test_install.py Updates installation tests to verify exact PyPI requirement installation and freeze-based skip behavior.
source/isaaclab/test/cli/test_uv_run_pyproject.py Updates single-source pin validation to require the exact Newton PyPI override.
uv.lock Resolves Newton 1.5.0 from its published PyPI wheel instead of the release branch while preserving the surrounding dependency graph.
tools/wheel_builder/uv-overrides.txt Keeps wheel-builder resolution aligned with the authoritative Newton 1.5.0 pin.
source/isaaclab/test/install_ci/uv_pip/uv-overrides.txt Keeps install-CI resolution aligned with the authoritative Newton 1.5.0 pin.

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"]
Loading

Reviews (1): Last reviewed commit: "Use Newton 1.5.0 PyPI release" | Re-trigger Greptile

@isaaclab-review-bot isaaclab-review-bot Bot 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.

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].newton supplies 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.0 freeze 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.

Comment thread pyproject.toml Outdated
ovrtx = "0.4.1.364340"
ovstage = "0.1.1.355824"
newton = "release-1.5"
newton = "1.5.0"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think that's one of my confusions. Is there a way to define it only once?

Comment on lines 375 to 377
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()
):

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[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:

Suggested change
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

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[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> or newton[sim] @ git+…@<ref>, keyed off the table value the way warp_spec is.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

infrastructure isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants