Skip to content

Fix cloner lazy exports (#5920)#5931

Open
ooctipus wants to merge 1 commit into
isaac-sim:release/3.0.0-beta2from
ooctipus:cherrypick/fuction_export
Open

Fix cloner lazy exports (#5920)#5931
ooctipus wants to merge 1 commit into
isaac-sim:release/3.0.0-beta2from
ooctipus:cherrypick/fuction_export

Conversation

@ooctipus
Copy link
Copy Markdown
Collaborator

@ooctipus ooctipus commented Jun 3, 2026

cherrypick bug fix for missing cloner lazy export

# Description

Restores the package-level `isaaclab.cloner.resolve_clone_plan_source`
lazy export used by the Newton RayCaster backend. This fixes Newton
RayCaster task construction failures where
`isaaclab_newton.sensors.ray_caster` could not import the helper from
`isaaclab.cloner`.

The PR also removes stale cloner stub exports that no longer have
implementations, so every name in `isaaclab.cloner.__all__` resolves.
These stale names were not caught by existing tests because no code or
test imported or accessed `path_source_path` or `cfg_source_path`;
`lazy_export()` can import the package and resolve other names without
touching every `__all__` entry.

No new dependencies are required for this change.

@OctiZhangOctiZhang (), could you review?

Fixes # (no linked issue)

## Type of change

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

## Screenshots

Not applicable.

## Checklist

- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [ ] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- Ran `./isaaclab.sh -f`; `ruff` formatted one file, then the full hook
set was blocked because `git-lfs` is not installed in this environment.
- Ran `SKIP=check-git-lfs-pointers ./isaaclab.sh -f` after formatting;
all non-LFS hooks passed.
- [x] I have made corresponding changes to the documentation
  - No documentation update was needed for this import/export fix.
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- No test was added for this simple lazy-export correction. Validation
was done with the Newton RayCaster repro and a one-off import scan.
Note: existing `from isaaclab.cloner import _fabric_notices` test
imports do not cover this lazy-export path because `_fabric_notices` is
a real package submodule, while `resolve_clone_plan_source` is a
function that must be declared in `__init__.pyi` for `lazy_export()` to
expose it.
- [x] I have added a changelog fragment under
`source/<pkg>/changelog.d/` for every touched package (do **not** edit
`CHANGELOG.rst` or bump `extension.toml` — CI handles that)
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there
@github-actions github-actions Bot added the isaac-lab Related to Isaac Lab team label Jun 3, 2026
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Jun 3, 2026

Greptile Summary

This PR cherry-picks a bug fix that corrects the __init__.pyi lazy-export stub for isaaclab.cloner. The stub previously advertised two functions (cfg_source_path, path_source_path) that do not exist in cloner_utils.py, while omitting resolve_clone_plan_source, which is the actual implementation used for clone-plan source resolution.

  • Removes cfg_source_path and path_source_path from both __all__ and the import list in __init__.pyi — neither symbol exists anywhere in the codebase.
  • Adds resolve_clone_plan_source (defined at line 54 of cloner_utils.py) so it is correctly surfaced through the lazy-export mechanism.
  • Adds a changelog fragment under changelog.d/ describing the fix.

Confidence Score: 5/5

Safe to merge — the change is a minimal, verified stub correction with no functional logic.

The stub now exactly mirrors what cloner_utils.py exports. The two removed symbols (cfg_source_path, path_source_path) are absent from the entire source tree, and resolve_clone_plan_source is confirmed present at line 54 of cloner_utils.py. There are no callers of the old names anywhere, so there is no breakage risk.

No files require special attention.

Important Files Changed

Filename Overview
source/isaaclab/isaaclab/cloner/init.pyi Corrects the lazy-export stub: removes two non-existent symbols and adds the real resolve_clone_plan_source function, bringing the stub in sync with cloner_utils.py.
source/isaaclab/changelog.d/fix-cloner-lazy-exports.rst New changelog fragment accurately describing the fix to missing cloner lazy exports.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["isaaclab.cloner import"] --> B["__init__.py: lazy_export()"]
    B --> C["Reads __init__.pyi stub for export list"]
    C -->|"Before fix"| D["__all__ includes\ncfg_source_path ❌\npath_source_path ❌\n(missing resolve_clone_plan_source ❌)"]
    C -->|"After fix"| E["__all__ includes\nresolve_clone_plan_source ✅\n(stale names removed ✅)"]
    E --> F["cloner_utils.py\nresolve_clone_plan_source()"]
Loading

Reviews (1): Last reviewed commit: "Fix cloner lazy exports (#5920)" | Re-trigger Greptile

@ooctipus ooctipus mentioned this pull request Jun 3, 2026
7 tasks
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.

🤖 Isaac Lab Review Bot

PR #5931 — Fix cloner lazy exports (#5920)

Summary

This is a cherry-pick of #5920 onto release/3.0.0-beta2. It fixes missing lazy exports in isaaclab.cloner that caused Newton RayCaster task construction failures when trying to import resolve_clone_plan_source.

Changes Reviewed

File Change
source/isaaclab/isaaclab/cloner/__init__.pyi Removes stale exports (cfg_source_path, path_source_path), adds resolve_clone_plan_source
source/isaaclab/changelog.d/fix-cloner-lazy-exports.rst Adds changelog fragment

Findings

✅ No issues found. This is a clean, minimal fix:

  1. Correctness: The stale exports (cfg_source_path, path_source_path) that no longer have implementations are properly removed from both __all__ and the import block. The new resolve_clone_plan_source is added in alphabetical order in __all__ and imported from cloner_utils where it belongs.

  2. Alphabetical ordering: The __all__ list maintains alphabetical sort order correctly after the changes.

  3. Consistency: Both __all__ and the from .cloner_utils import (...) block are kept in sync — every name in __all__ has a corresponding import statement.

  4. Changelog: Proper changelog fragment added following the project convention.

  5. CI: pre-commit, Build Wheel, and Check changelog fragments checks have passed. Some CI jobs are still pending (Docker builds, installation tests, docs).

Verdict

👍 LGTM — Straightforward bug fix that restores a missing export and cleans up dead references. No concerns about backwards compatibility since the removed names (cfg_source_path, path_source_path) had no backing implementations.


🔍 Reviewed commit: 4639687

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

Labels

isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants