Skip to content

Migrates off deprecated Isaac Sim core extension paths#5280

Closed
kellyguo11 wants to merge 2 commits into
isaac-sim:developfrom
kellyguo11:fix-isaacsim-deprecation-api
Closed

Migrates off deprecated Isaac Sim core extension paths#5280
kellyguo11 wants to merge 2 commits into
isaac-sim:developfrom
kellyguo11:fix-isaacsim-deprecation-api

Conversation

@kellyguo11

Copy link
Copy Markdown
Contributor

Description

Switch Kit experience files, Python imports, and test helpers from deprecated isaacsim.core.* / isaacsim.sensors.* / isaacsim.robot.* module paths to their isaacsim.core.experimental.* equivalents:

  • Remove deprecated extsDeprecated extension search paths from all Kit experience files (.kit)
  • Migrate Python imports across isaaclab, isaaclab_physx, isaaclab_tasks, isaaclab_teleop, isaaclab_mimic, and isaaclab_visualizers to isaacsim.core.experimental.utils.app, isaacsim.core.experimental.prims, isaacsim.core.experimental.utils.stage, etc.
  • Expose SimulationManager as a public alias of PhysxManager in isaaclab_physx.physics so callers avoid the deprecated isaacsim.core.simulation_manager import
  • Retire standalone reproducers in test/deps/isaacsim that depended on deprecated Isaac Sim core extensions
  • Update benchmark scripts and docs to reflect the new API paths

Fixes # (issue)

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

Switch Kit experience files, Python imports, and test helpers from
deprecated isaacsim.core.* / isaacsim.sensors.* / isaacsim.robot.*
module paths to their isaacsim.core.experimental.* equivalents:

- Remove deprecated extsDeprecated extension search paths from all
  Kit experience files (.kit)
- Migrate Python imports across isaaclab, isaaclab_physx, isaaclab_tasks,
  isaaclab_teleop, isaaclab_mimic, and isaaclab_visualizers to
  isaacsim.core.experimental.utils.app, isaacsim.core.experimental.prims,
  isaacsim.core.experimental.utils.stage, etc.
- Expose SimulationManager as a public alias of PhysxManager in
  isaaclab_physx.physics so callers avoid the deprecated
  isaacsim.core.simulation_manager import
- Retire standalone reproducers in test/deps/isaacsim that depended on
  deprecated Isaac Sim core extensions
- Update benchmark scripts and docs to reflect the new API paths
@kellyguo11 kellyguo11 marked this pull request as draft April 15, 2026 04:44
@github-actions github-actions Bot added bug Something isn't working documentation Improvements or additions to documentation isaac-mimic Related to Isaac Mimic team labels Apr 15, 2026
Remove deprecated extsDeprecated extension search paths from all Isaac
Lab Kit experience files; these belong with the API migration work.
@greptile-apps

greptile-apps Bot commented Apr 15, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR migrates Isaac Lab away from deprecated isaacsim.core.*, isaacsim.sensors.*, and isaacsim.robot.* import paths to their isaacsim.core.experimental.* equivalents across six packages, and exposes SimulationManager as a public alias for PhysxManager in isaaclab_physx.physics so callers no longer need to import the deprecated isaacsim.core.simulation_manager. Five test reproducer scripts that depended on removed extensions are retired in place with RuntimeError stubs.

Confidence Score: 5/5

Safe to merge; all remaining findings are P2 style/hardening suggestions with no runtime impact.

The migration is systematic and internally consistent: every deprecated import has a clear replacement, the SimulationManager alias is correctly wired through all, the stub files, and the .pyi type stub. Changelogs and extension.toml versions are bumped in all affected packages. The two P2 comments (a missing AttributeError in one except clause, and a redundant alias in one import) do not affect correctness at runtime.

source/isaaclab/isaaclab/sim/utils/stage.py — the _context singleton patching block should also catch AttributeError.

Important Files Changed

Filename Overview
source/isaaclab_physx/isaaclab_physx/physics/physx_manager.py Adds SimulationManager = PhysxManager public alias at line 756 and adds it to __all__; clean and consistent.
source/isaaclab_physx/isaaclab_physx/physics/init.pyi Exports SimulationManager in the stub alongside PhysxManager, IsaacEvents, and PhysxCfg; consistent with the runtime module.
source/isaaclab/isaaclab/sim/utils/stage.py Adds _context singleton patching for isaacsim.core.experimental.utils.stage; the except ImportError guard does not cover AttributeError if the attribute name changes in a future isaacsim version.
source/isaaclab_physx/isaaclab_physx/sensors/contact_sensor/contact_sensor.py Migrates SimulationManager import to isaaclab_physx.physics; imports PhysxManager as SimulationManager instead of the new public alias SimulationManager directly — minor style issue.
source/isaaclab/test/deps/isaacsim/check_camera.py Retired in-place with a RuntimeError stub and clear migration message; check_floating_base_made_fixed.py, check_legged_robot_clone.py, and check_rep_texture_randomizer.py follow the same pattern.
source/isaaclab/test/assets/test_articulation_iface.py Migrated SimulationManager import to isaaclab_physx.physics; mocking pattern unchanged and correct.
source/isaaclab/isaaclab/controllers/rmp_flow.py Migrated enable_extension / get_extension_path to isaacsim.core.experimental.utils.app; logic unchanged.
source/isaaclab/isaaclab/controllers/utils.py Migrated enable_extension import to isaacsim.core.experimental.utils.app; no logic changes.
source/isaaclab_teleop/isaaclab_teleop/xr_anchor_manager.py Migrated XformPrim import to isaacsim.core.experimental.prims; suppressed with contextlib.suppress(ModuleNotFoundError) for environments without XR.
source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/path_utils.py Migrated mobility path import to isaacsim.replicator.experimental.mobility_gen; logic unchanged.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["Deprecated Paths\n(isaacsim.core.*)"] -->|"Removed"| B["isaaclab_physx.physics.SimulationManager\n= PhysxManager alias"]
    A -->|"Replaced"| C["isaacsim.core.experimental.utils.app\nenable_extension / get_extension_path"]
    A -->|"Replaced"| D["isaacsim.core.experimental.prims\nXformPrim, Articulation"]
    A -->|"Replaced"| E["isaacsim.core.experimental.utils.stage\nget_current_stage"]
    A -->|"Replaced"| F["isaacsim.core.rendering_manager\nViewportManager"]
    G["isaaclab_physx.physics.__init__"] --> B
    B -->|"Used by"| H["contact_sensor.py\nbenchmark scripts\ntest_*_iface.py"]
    I["Deprecated Test Scripts"] -->|"Retired in-place with RuntimeError"| J["check_camera.py\ncheck_floating_base_made_fixed.py\ncheck_legged_robot_clone.py\ncheck_rep_texture_randomizer.py"]
    K["check_ref_count.py"] -->|"Updated, not retired"| L["isaacsim.core.experimental.prims.Articulation"]
Loading

Comments Outside Diff (2)

  1. source/isaaclab/isaaclab/sim/utils/stage.py, line 122-130 (link)

    P2 Silent failure if _context attribute is absent

    The except ImportError guard only catches the case where isaacsim.core.experimental.utils itself cannot be imported. If the module imports successfully but does not expose a _context attribute, the assignment sim_stage._context = _context raises an unhandled AttributeError at import time, crashing any file that imports isaaclab.sim.utils.stage. Adding AttributeError to the except clause makes the guard defensive against future API changes in the isaacsim module.

  2. source/isaaclab_physx/isaaclab_physx/sensors/contact_sensor/contact_sensor.py, line 24 (link)

    P2 Use the public SimulationManager alias directly

    SimulationManager is now a first-class public export from isaaclab_physx.physics (the whole point of this PR). Importing PhysxManager under the alias SimulationManager leaks the concrete name and partially undoes that abstraction.

    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!

Reviews (1): Last reviewed commit: "Migrate off deprecated Isaac Sim core ex..." | Re-trigger Greptile

@github-actions github-actions Bot added the isaac-sim Related to Isaac Sim team label Apr 15, 2026
kellyguo11 pushed a commit to kellyguo11/IsaacLab-public that referenced this pull request Apr 16, 2026
…broken links

Combined fixes from PR isaac-sim#5279 on top of deprecation migration from PR isaac-sim#5280:

1. install.py: Add prebundle probe functions that check pip_prebundle paths
   instead of extsDeprecated, and uninstall pip torch when prebundle shadows it
2. isaaclab/__init__.py: Deprioritize ml_archive/pip_prebundle on sys.path
   so pip-installed torch/numpy/etc take priority over prebundled copies
3. setup.py: Pin mujoco==3.5.0
4. Kit files: Remove omni.warp.core to prevent conflict with pip warp-lang
5. check-links.yml: Add ubuntu.com to link checker exclusions (returns 403)
6. New tests: test_install_commands.py, test_install_prebundle.py
kellyguo11 pushed a commit to kellyguo11/IsaacLab-public that referenced this pull request Apr 16, 2026
…broken links

Combined fixes from PR isaac-sim#5279 on top of deprecation migration from PR isaac-sim#5280:

1. install.py: Add prebundle probe functions that check pip_prebundle paths
   instead of extsDeprecated, and uninstall pip torch when prebundle shadows it
2. isaaclab/__init__.py: Deprioritize ml_archive/pip_prebundle on sys.path
   so pip-installed torch/numpy/etc take priority over prebundled copies
3. setup.py: Pin mujoco==3.5.0
4. Kit files: Remove omni.warp.core to prevent conflict with pip warp-lang
5. check-links.yml: Add ubuntu.com to link checker exclusions (returns 403)
6. New tests: test_install_commands.py, test_install_prebundle.py
@AntoineRichard

Copy link
Copy Markdown
Collaborator

Closing that one too for now

kellyguo11 pushed a commit to kellyguo11/IsaacLab-public that referenced this pull request Apr 17, 2026
…broken links

Combined fixes from PR isaac-sim#5279 on top of deprecation migration from PR isaac-sim#5280:

1. install.py: Add prebundle probe functions that check pip_prebundle paths
   instead of extsDeprecated, and uninstall pip torch when prebundle shadows it
2. isaaclab/__init__.py: Deprioritize ml_archive/pip_prebundle on sys.path
   so pip-installed torch/numpy/etc take priority over prebundled copies
3. setup.py: Pin mujoco==3.5.0
4. Kit files: Remove omni.warp.core to prevent conflict with pip warp-lang
5. check-links.yml: Add ubuntu.com to link checker exclusions (returns 403)
6. New tests: test_install_commands.py, test_install_prebundle.py
kellyguo11 pushed a commit to kellyguo11/IsaacLab-public that referenced this pull request Apr 17, 2026
…broken links

Combined fixes from PR isaac-sim#5279 on top of deprecation migration from PR isaac-sim#5280:

1. install.py: Add prebundle probe functions that check pip_prebundle paths
   instead of extsDeprecated, and uninstall pip torch when prebundle shadows it
2. isaaclab/__init__.py: Deprioritize ml_archive/pip_prebundle on sys.path
   so pip-installed torch/numpy/etc take priority over prebundled copies
3. setup.py: Pin mujoco==3.5.0
4. Kit files: Remove omni.warp.core to prevent conflict with pip warp-lang
5. check-links.yml: Add ubuntu.com to link checker exclusions (returns 403)
6. New tests: test_install_commands.py, test_install_prebundle.py
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 isaac-mimic Related to Isaac Mimic team isaac-sim Related to Isaac Sim team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants