Skip to content

[Workflow] Clarify Isaac Lab wheel extras - #7168

Open
StafaH wants to merge 3 commits into
isaac-sim:developfrom
StafaH:fix/wheel-all-without-isaacsim
Open

[Workflow] Clarify Isaac Lab wheel extras#7168
StafaH wants to merge 3 commits into
isaac-sim:developfrom
StafaH:fix/wheel-all-without-isaacsim

Conversation

@StafaH

@StafaH StafaH commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Description

Clarify the Isaac Lab Python package installation flow by keeping Isaac Sim out of the curated isaaclab[all] extra and documenting its resolver requirements separately.

  • Define isaaclab[all] as the curated OV, RL-library, and visualizer set without Isaac Sim.
  • Document the override-based command specifically for isaaclab[isaacsim].
  • Declare the required tinyobjloader release candidate directly so the Isaac Sim command no longer needs --prerelease=allow.
  • Update wheel metadata tests and install CI to verify both resolution paths.

No new dependencies beyond directly declaring the existing transitive tinyobjloader requirement.

Type of change

  • Breaking change (the all extra no longer installs Isaac Sim)
  • Documentation update

Screenshots

Not applicable.

Validation

  • uv run python -m pytest source/isaaclab/test/cli/test_uv_run_pyproject.py source/isaaclab/test/cli/test_wheel_builder_metadata.py -q (19 passed)
  • Built a fresh Isaac Lab wheel successfully.
  • Verified a clean isaaclab[all] resolver dry run without overrides.
  • Verified a clean isaaclab[isaacsim] resolver dry run with overrides and without --prerelease=allow.
  • uv run isaaclab -f
  • uv run --no-project python tools/skills/cli.py check
  • uv run python tools/changelog/cli.py check develop

The full documentation build currently stops on the pre-existing wp.array | torch.Tensor annotation evaluation in source/isaaclab_physx/isaaclab_physx/assets/rigid_object_collection/kernels.py; the changed documentation and directives pass the repository RST, spelling, formatting, and Python checks.

Checklist

  • I have read and understood the contribution guidelines.
  • I have run the pre-commit checks with uv run isaaclab -f.
  • I have made corresponding changes to the documentation.
  • My changes generate no new warnings.
  • I have added tests that prove the fix is effective.
  • I have added a changelog fragment under source/isaaclab/changelog.d/.
  • I have added my name to CONTRIBUTORS.md or my name already exists there.

@StafaH
StafaH requested a review from a team August 19, 2026 07:15
@github-actions github-actions Bot added bug Something isn't working documentation Improvements or additions to documentation isaac-lab Related to Isaac Lab team infrastructure labels Aug 19, 2026
@greptile-apps

greptile-apps Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR separates Isaac Sim from the curated isaaclab[all] extra and documents the dedicated resolver flow for isaaclab[isaacsim].

  • Removes isaacsim from the all extra while retaining OV backends, RL libraries, and visualizers.
  • Declares the isolated importer’s required tinyobjloader release candidate directly.
  • Updates installation documentation, generated wheel metadata tests, lock data, and CI coverage for both installation paths.

Confidence Score: 5/5

The PR appears safe to merge, with the package metadata, documentation, and installation checks consistently reflecting the new extras split.

No concrete changed-code failure remains; the supported installation paths are represented consistently in package metadata, documentation, lock data, and CI coverage.

Important Files Changed

Filename Overview
pyproject.toml Removes Isaac Sim from the curated aggregate extra and directly declares the isolated importer’s prerelease dependency.
uv.lock Reflects the revised all composition and the new direct tinyobjloader requirement without changing the reviewed pre-existing advisory-bearing versions.
docs/_extensions/isaaclab_docs.py Replaces the generic wheel-install directive with an Isaac-Sim-specific command using overrides and the NVIDIA index.
docs/source/setup/installation/index.rst Documents the curated all contents and separates the Isaac Sim installation procedure.
.github/workflows/wheel.yml Adds independent resolver checks for plain all installation and override-based isaacsim installation.
source/isaaclab/test/install_ci/uv_pip/test_uv_pip_install_isaaclab_all_trains_cartpole.py Verifies that the revised Isaac-Sim-free all extra installs and runs the OV-backed Cartpole workflow.
source/isaaclab/test/install_ci/uv_pip/test_uv_pip_install_isaaclab_isaacsim_imports_simulation_context.py Verifies the dedicated Isaac Sim extra resolves with overrides without globally allowing prereleases.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    Wheel[isaaclab wheel] --> All[isaaclab all]
    All --> OV[OV backends]
    All --> RL[RL libraries]
    All --> Viz[Visualizers]
    Wheel --> Sim[isaaclab isaacsim]
    Sim --> Overrides[Version overrides]
    Sim --> Nvidia[NVIDIA package index]
    Wheel --> Tiny[tinyobjloader 2.0.0rc13]
Loading

Reviews (1): Last reviewed commit: "Clarify Isaac Lab wheel extras" | 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 extras split is internally consistent across package metadata, lockfile, tests, CI, changelog, and the renamed Sphinx directive. Two documentation issues remain: the generic extras guidance overlooks that teleop also needs the Isaac Sim resolver configuration, and the new subsection structure incorrectly places shared PyTorch installation steps under the Isaac Sim-only heading.

  • Design and architecture: Separating the curated all aggregate from the resolver-sensitive isaacsim extra is coherent. The package metadata, lockfile, generated-wheel expectations, CI resolution paths, and breaking-change migration note agree. The installation-page hierarchy should be corrected so common wheel setup is not presented as Isaac Sim-specific.
  • API: The changed all and isaacsim contracts are documented and test-enforced, and the renamed directive's in-tree use is updated. However, the documentation identifies only isaacsim as requiring the specialized installation command even though teleop also directly includes isaacsim[all,extscache] and therefore needs the same NVIDIA index and overrides.
  • Implementation: The dependency path from pyproject.toml through generated wheel metadata and install CI is consistent, including the direct tinyobjloader==2.0.0rc13 requirement and removal of --prerelease=allow. The remaining implementation concern is documentation integration: the shared CUDA PyTorch and architecture-specific instructions now fall under the Isaac Sim subsection despite also applying to non-Isaac-Sim wheel installations.

Minor fixes needed. Posted 2 actionable findings inline.

Automated review; human maintainers own approval decisions.

Add extras to the package requirement when your project needs them. For a standalone environment,
use ``uv pip install "isaaclab[<extra>]"``; for a uv project, use
``uv add "isaaclab[<extra>]"``.
Add extras to the package requirement when your project needs them. Except for ``isaacsim``, use

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.

🔵 Suggestion · Api — Carve-out omits the teleop extra

The teleop extra also requires isaacsim[all,extscache]==6.0.1.0 (see [project.optional-dependencies]), which the table itself documents as coming from pypi.nvidia.com. Naming isaacsim as the sole exception implies plain uv pip install "isaaclab[teleop]" works, but it needs the same index and overrides. List teleop alongside isaacsim in the exception sentence.

remain opt-in.

.. isaaclab-uv-wheel-install::
Installing the ``isaacsim`` extra

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.

🔵 Suggestion · Implementation — New subsection scopes generic PyTorch steps to Isaac Sim

The new heading uses the same ~ level as "Optional extras", so the following "Install the CUDA-enabled PyTorch build" tab-set and aarch64 prerequisite notes now read as part of the Isaac Sim-only subsection. Those steps apply to every wheel install, including isaaclab[all], which no longer carries Isaac Sim. Place the Isaac Sim subsection after the PyTorch instructions, or give the PyTorch block its own sibling heading.

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

Labels

bug Something isn't working documentation Improvements or additions to documentation infrastructure isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants