Skip to content

Fixes uv run path and aligns closer to ./isaaclab.sh -i approach#5663

Merged
kellyguo11 merged 4 commits into
isaac-sim:developfrom
kellyguo11:fix-uv-run
May 18, 2026
Merged

Fixes uv run path and aligns closer to ./isaaclab.sh -i approach#5663
kellyguo11 merged 4 commits into
isaac-sim:developfrom
kellyguo11:fix-uv-run

Conversation

@kellyguo11
Copy link
Copy Markdown
Contributor

Description

Fixes the uv run path that got broken by #5650. Updates the available options to align closer with the new logic for ./isaaclab.sh -i modular installation.

Also adds more unit tests for uv run and pip package.

Type of change

  • Bug fix (non-breaking change which fixes an issue)

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I have updated the changelog and the corresponding version in the extension's config/extension.toml file
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

@github-actions github-actions Bot added bug Something isn't working isaac-lab Related to Isaac Lab team infrastructure labels May 17, 2026
Copy link
Copy Markdown

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Choose a reason for hiding this comment

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

📋 Code Review Summary

This PR fixes the uv run workflow broken by #5650 and adds comprehensive test coverage. The changes are well-structured and follow good practices.

✅ Strengths

1. pyproject.toml Changes

  • Restoring modular extras (newton, ov, rl, rtx, etc.) aligns with the documented ./isaaclab.sh -i modular installation approach
  • Adding python-preference = \"only-managed\" correctly prevents the uv venv from inheriting a conda Python, avoiding C++ runtime conflicts
  • Base dependencies now include the extras needed for the documented bare uv run train workflow (isaaclab-newton[all], isaaclab-physx[newton], isaaclab-rl[rsl-rl])

2. GitHub Actions Security

  • Pinning actions to SHA commits (e.g., actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd) is a security best practice that prevents supply chain attacks from tag mutations

3. Test Coverage

  • test_uv_run_pyproject.py provides excellent regression tests that verify:
    • Extra names match documentation
    • Modular structure without Isaac Sim bundling
    • Base dependencies cover training workflows
    • Python preference setting
  • test_run_install_ci.py tests Docker result copying behavior thoroughly

4. CI Workflow Enhancement

  • Adding wheel extras resolution dry-run test catches dependency resolution issues early
  • Using --dry-run avoids downloading packages while still validating resolution

📝 Minor Observations

  1. Timeout increase (5 → 20 min): The build-wheel job timeout was increased significantly. This is reasonable given the added install test step, but worth monitoring if this becomes a bottleneck.

  2. isaaclab-teleop removal: The all extra no longer includes isaaclab-teleop (previously present). If intentional, this is fine; if not, it may need to be re-added.

  3. isaacsim extra removed entirely: The test explicitly validates that isaacsim is not in optional-dependencies. This is a deliberate design choice to keep Isaac Sim opt-in for wheel users.

🔍 Verdict

LGTM - This is a clean bug fix with excellent test coverage. The changes correctly restore the documented uv run workflow and add safeguards to prevent similar regressions.


Automated review by Isaac Lab Review Bot


Update (9ca8ead): New commits add RSL-RL version alignment fix:

  • RSL-RL pin updated: rsl-rl-lib version in wheel builder changed from 3.1.25.0.1 to match isaaclab_rl/setup.py
  • New test added: test_wheel_builder_metadata.py ensures the wheel builder RSL-RL pin stays in sync with the source package — good safeguard against future drift
  • Changelog added: Documents the fix properly

⚠️ Note: Action references in wheel.yml changed from SHA pins (@043fb46d...) back to version tags (@v7). This is less secure but more maintainable. Acceptable trade-off for non-critical CI actions.

Still LGTM


Update (cb966ea): Added license exception for decorator package (BSD-2 with UNKNOWN marker) in .github/workflows/license-exceptions.json. This is a routine CI fix for license checker false positives. ✅ No concerns.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 17, 2026

Greptile Summary

This PR fixes the broken uv run workflow by restructuring the root pyproject.toml — replacing the old isaacsim extra with a set of modular extras (contrib, mimic, newton, ov, rl, rl-all, rtx, all) and promoting Newton/PhysX/RSL-RL to base dependencies. It also adds python-preference = \"only-managed\" to prevent conda Python from being used for the dev venv, hardens the wheel CI job (pinned SHA action refs, longer timeout, dry-run extras resolution test), and adds unit tests for both the Docker runner and the pyproject shape.

  • pyproject.toml: Drops the isaacsim extra from the dev project, adds granular module extras, and forces uv-managed Python; isaaclab-teleop is intentionally removed from the all extra.
  • wheel.yml: Action references are now hash-pinned for supply-chain safety; a new dry-run step validates that the published wheel's [isaacsim,all] extras resolve cleanly.
  • New tests: test_uv_run_pyproject.py snapshot-tests the pyproject shape; test_run_install_ci.py unit-tests the Docker runner's JUnit copy-out and --rm paths.

Confidence Score: 4/5

Safe to merge; the pyproject restructuring and CI hardening are straightforward with one design ambiguity worth resolving.

The core fixes (restoring documented extras, forcing uv-managed Python, pinning action SHAs) are correct and well-tested. The main concern is that the contrib optional-dependency exactly duplicates an entry already in base dependencies, making --extra contrib a silent no-op. The version-comment mismatch between upload-artifact and download-artifact is a minor maintenance hazard.

pyproject.toml — the contrib extra and the base dependencies list both declare isaaclab-contrib, which should be resolved before merging to avoid user confusion.

Important Files Changed

Filename Overview
pyproject.toml Replaces the old single isaacsim extra with a full set of modular extras and promotes newton/physx/rl to base deps; the contrib extra duplicates a base dependency.
.github/workflows/wheel.yml Timeout raised to 20 min, action refs pinned to commit SHAs, new dry-run extras resolution step added; minor version comment mismatch between upload-artifact (v7) and download-artifact (v8).
docker/test/test_run_install_ci.py New unit tests for the Docker runner covering JUnit XML copy-out and the simple --rm path with well-scoped monkeypatching.
source/isaaclab/test/cli/test_uv_run_pyproject.py New snapshot tests that validate the root pyproject.toml extras and base dependencies match documented requirements.
source/isaaclab/changelog.d/fix-uv-run-pyproject.rst Changelog entry documenting the two fixes: restored pyproject extras and forced uv-managed Python.

Reviews (1): Last reviewed commit: "Fixes uv run path and aligns closer to ...." | Re-trigger Greptile

Comment thread pyproject.toml
Comment on lines +30 to +32
contrib = [
"isaaclab-contrib",
]
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.

P2 isaaclab-contrib is already present in the base dependencies list (line 14), so the contrib optional-dependency section adds nothing — uv run --extra contrib installs exactly the same set of packages as uv run alone. This makes the option silently useless and will confuse users who expect it to pull in something extra. Either remove contrib from the base dependencies (leaving it opt-in via the extra) or remove the contrib extra entirely.

Suggested change
contrib = [
"isaaclab-contrib",
]
contrib = [
# NOTE: isaaclab-contrib is already in base dependencies;
# this extra is a no-op. Remove either this section or the
# base dependency entry so the intent is unambiguous.
"isaaclab-contrib",
]

Comment thread .github/workflows/wheel.yml Outdated
Comment on lines +156 to +165
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: ${{ steps.meta.outputs.artifact_name }}
path: tools/wheel_builder/build/dist/isaaclab-*.whl
if-no-files-found: error
retention-days: 30

- name: Download wheel artifact for install test
if: steps.changes.outputs.run_build == 'true'
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
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.

P2 upload-artifact / download-artifact version comment mismatch

actions/upload-artifact is pinned with a # v7 comment and actions/download-artifact with # v8. GitHub releases these two actions in lockstep, so matching version numbers are expected. The mismatch suggests either the download hash resolves to v7 (and the comment is wrong) or to v8 (and the upload comment is wrong). Since the pinned hash is what executes, the functional impact depends on which hash is correct, but misleading comments can cause future maintainers to chase the wrong release notes when investigating behaviour changes.

@kellyguo11 kellyguo11 merged commit 0bb80fd into isaac-sim:develop May 18, 2026
39 checks passed
matthewtrepte pushed a commit to matthewtrepte/IsaacLab that referenced this pull request May 18, 2026
…ac-sim#5663)

# Description

Fixes the uv run path that got broken by isaac-sim#5650. Updates the available
options to align closer with the new logic for ./isaaclab.sh -i modular
installation.

Also adds more unit tests for uv run and pip package.

## Type of change

<!-- As you go through the list, delete the ones that are not
applicable. -->

- Bug fix (non-breaking change which fixes an issue)

## Checklist

- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [ ] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there

<!--
As you go through the checklist above, you can mark something as done by
putting an x character in it

For example,
- [x] I have done this task
- [ ] I have not done this task
-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working infrastructure isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant