Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions source/isaaclab/changelog.d/jichuanh-drop-mujoco-deps.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Removed
^^^^^^^

* Removed explicit ``mujoco`` and ``mujoco-warp`` dependencies from
:mod:`isaaclab`. These packages are not used by ``isaaclab`` core and are
now resolved transitively through Newton's ``[sim]`` extra in
:mod:`isaaclab_newton`. Users installing only the PhysX or Kit backends no
longer pull in MuJoCo.
4 changes: 1 addition & 3 deletions source/isaaclab/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,10 @@
# procedural-generation
"trimesh",
"pyglet>=2.1.6,<3",
"mujoco==3.8.0",
"mujoco-warp==3.8.0.2",
# image processing
"transformers==4.57.6",
"einops", # needed for transformers, doesn't always auto-install
"warp-lang>=1.13.0",
"warp-lang==1.13.0",
"matplotlib>=3.10.3", # minimum version for Python 3.12 support
# make sure this is consistent with isaac sim version
"pillow==12.1.1",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Changed
^^^^^^^

* Switched the Newton install to ``newton[sim]`` so that ``mujoco`` and
``mujoco-warp`` are pulled in transitively via Newton's ``[sim]`` extra.
The explicit ``mujoco==3.8.0`` and ``mujoco-warp==3.8.0.1`` pins were
removed from :mod:`isaaclab_newton` — Newton is now the single source of
truth for those versions.
4 changes: 1 addition & 3 deletions source/isaaclab_newton/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,8 @@ def run(self):
EXTRAS_REQUIRE = {
"all": [
"prettytable==3.3.0",
"mujoco==3.8.0",
"mujoco-warp==3.8.0.2",
"PyOpenGL-accelerate==3.1.10",
"newton==1.2.0rc3",
"newton[sim] @ git+https://github.com/newton-physics/newton.git@v1.2.0rc2",
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 Loosened mujoco/mujoco-warp version constraints

The previous explicit pins (mujoco==3.8.0, mujoco-warp==3.8.0.1) guaranteed exact reproducibility. Newton's [sim] extra specifies mujoco~=3.8.0 (compatible-release, i.e. >=3.8.0,<3.9.0) and mujoco-warp>=3.8.0.1,~=3.8.0, so a fresh install after a new 3.8.x release could resolve a different patch version than was tested. Since Newton is pinned to an immutable tag (v1.2.0rc2) the constraint itself won't change, but pip will still pick the latest matching patch from PyPI at install time. Worth confirming the team is comfortable trading bit-for-bit reproducibility for deferred version management.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Copy link
Copy Markdown
Collaborator Author

@hujc7 hujc7 May 12, 2026

Choose a reason for hiding this comment

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

By design — the goal of this change is for Newton to be the single source of truth for these versions, so the loosening from ==3.8.0 to ~=3.8.0 is the trade-off we accept (called out in the PR description). If a specific 3.8.x patch turns out to be incompatible, the right fix is to tighten Newton's own [sim] spec rather than override it here.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Makes sense — single source of truth in Newton with ~= as the compatibility range is a clean approach. Agreed that tightening upstream is the right lever if a patch breaks things.

],
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Changed
^^^^^^^

* Switched the Newton install spec to ``newton[sim]`` in the ``newton``
extra so the MuJoCo solver dependencies are pulled in transitively.
Required because pip resolves a git-URL requirement once for the URL;
a bare ``newton @ git+...`` here would shadow the ``[sim]`` extra
requested elsewhere.
2 changes: 1 addition & 1 deletion source/isaaclab_physx/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

EXTRAS_REQUIRE = {
"newton": [
"newton==1.2.0rc3",
"newton[sim] @ git+https://github.com/newton-physics/newton.git@v1.2.0rc2",
],
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Changed
^^^^^^^

* Switched the Newton install spec to ``newton[sim]`` in the ``newton``,
``rerun``, and ``viser`` extras so the MuJoCo solver dependencies are
pulled in transitively. Required because pip resolves a git-URL
requirement once for the URL; a bare ``newton @ git+...`` here would
shadow the ``[sim]`` extra requested elsewhere.
13 changes: 10 additions & 3 deletions source/isaaclab_visualizers/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,27 @@
"numpy",
]

# Every Newton declaration in the repo must use the SAME extra spec (`newton[sim]`).
# Pip resolves a git-URL requirement once per URL: if any package declares bare
# `newton @ git+...` while another declares `newton[sim] @ git+...`, the first
# resolution wins and silently drops the `[sim]` extra. That breaks `isaaclab_newton`
# at import time because `mujoco` / `mujoco-warp` go missing. So even the rerun/viser
# extras — which don't use the MuJoCo solver directly — must pin `newton[sim]` to
# stay consistent with `isaaclab_newton`.
EXTRAS_REQUIRE = {
"kit": [],
"newton": [
"warp-lang",
"newton==1.2.0rc3",
"newton[sim] @ git+https://github.com/newton-physics/newton.git@v1.2.0rc2",
"PyOpenGL-accelerate",
"imgui-bundle>=1.92.5",
],
"rerun": [
"newton==1.2.0rc3",
"newton[sim] @ git+https://github.com/newton-physics/newton.git@v1.2.0rc2",
"rerun-sdk>=0.29.0",
],
"viser": [
"newton==1.2.0rc3",
"newton[sim] @ git+https://github.com/newton-physics/newton.git@v1.2.0rc2",
"viser>=1.0.16",
],
Comment on lines +32 to 38
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 rerun and viser extras now force-install MuJoCo

Before this PR the rerun and viser extras pulled in bare newton (no MuJoCo). After, they request newton[sim], so users who install only isaaclab_visualizers[rerun] or isaaclab_visualizers[viser] will now also download mujoco and mujoco-warp — packages those visualization backends do not use directly. The PR description gives a valid pip-deduplication rationale (a bare newton @ git+URL elsewhere could shadow the [sim] extras), but it is worth documenting in the changelog or a comment why visualization-only extras now carry the full MuJoCo install.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Added a block comment above EXTRAS_REQUIRE explaining why even the rerun/viser extras pin newton[sim]. tl;dr: pip resolves a git-URL requirement once per URL, so a bare newton @ git+... here would shadow the [sim] extra requested by isaaclab_newton and silently break installs. Forcing [sim] everywhere is what keeps the resolution consistent — the cost is that rerun/viser-only installs carry a mujoco install they don't use, which we accept.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

TIL about pip deduplicating git-URL requirements — that explains the necessity well. The added comment should save future readers the same question. 👍

}
Expand Down
4 changes: 1 addition & 3 deletions tools/wheel_builder/res/python_packages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,7 @@ pyproject.optional-dependencies.all = [
# ================================================================================
{ "newton" = [
"warp-lang==1.13.0",
"mujoco==3.8.0",
"mujoco-warp==3.8.0.2",
"newton==1.2.0rc3",
"newton[sim] @ git+https://github.com/newton-physics/newton.git@v1.2.0rc2",
"PyOpenGL-accelerate==3.1.10"
] },
# ================================================================================
Expand Down
Loading