Skip to content

Commit 7e62316

Browse files
committed
Defer pxr-importing usd_prim_tree import in pass-2 resolver
The pass-2 resolver imported usd_prim_tree at module top, which pulls in pxr before SimulationApp is created and broke unit tests that import the generation agent. Import load_usd_prim_tree lazily inside infer() and guard UsdPrimRecord under TYPE_CHECKING, and patch the source module in the affected tests. Signed-off-by: Qian Lin <qianl@nvidia.com>
1 parent 66dc65d commit 7e62316

3 files changed

Lines changed: 11 additions & 6 deletions

File tree

isaaclab_arena/agentic_environment_generation/object_reference_prim_resolver.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from __future__ import annotations
99

1010
import json
11-
from typing import Any
11+
from typing import TYPE_CHECKING, Any
1212

1313
from pydantic import BaseModel, Field, ValidationError, ValidationInfo, model_validator
1414

@@ -18,7 +18,9 @@
1818
from isaaclab_arena.environments.arena_env_graph_spec import ArenaEnvGraphSpec
1919
from isaaclab_arena.environments.arena_env_graph_types import ObjectReferenceSpec
2020
from isaaclab_arena.utils.asset_usd import resolve_asset_usd_path
21-
from isaaclab_arena.utils.usd_prim_tree import UsdPrimRecord, load_usd_prim_tree
21+
22+
if TYPE_CHECKING:
23+
from isaaclab_arena.utils.usd_prim_tree import UsdPrimRecord
2224

2325

2426
class ResolvedObjectReferences(BaseModel):
@@ -147,6 +149,9 @@ def infer(
147149
The spec with resolved prim paths on success, otherwise ``None`` (with
148150
error lines appended to ``traces``).
149151
"""
152+
# Defer pxr import until call time to avoid conflict with SimulationApp.
153+
from isaaclab_arena.utils.usd_prim_tree import load_usd_prim_tree
154+
150155
usd_path = resolve_asset_usd_path(spec.background)
151156
prim_tree = load_usd_prim_tree(usd_path)
152157
data = self._query_backend.run_json(

isaaclab_arena/tests/test_environment_generation_agent.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def test_builds_catalogues_from_singleton_registries_when_none(self, agent):
101101
mock_build_relations.assert_called_once_with()
102102
mock_build_tasks.assert_called_once_with()
103103

104-
@patch("isaaclab_arena.agentic_environment_generation.object_reference_prim_resolver.load_usd_prim_tree")
104+
@patch("isaaclab_arena.utils.usd_prim_tree.load_usd_prim_tree")
105105
@patch("isaaclab_arena.agentic_environment_generation.object_reference_prim_resolver.resolve_asset_usd_path")
106106
def test_two_pass_generate_spec_resolves_object_references(self, mock_resolve_usd, mock_load_tree, agent):
107107
mock_resolve_usd.return_value = "/tmp/scene.usd"
@@ -120,7 +120,7 @@ def test_two_pass_generate_spec_resolves_object_references(self, mock_resolve_us
120120
assert agent.client.chat.completions.create.call_count == 2
121121
assert result.object_references
122122

123-
@patch("isaaclab_arena.agentic_environment_generation.object_reference_prim_resolver.load_usd_prim_tree")
123+
@patch("isaaclab_arena.utils.usd_prim_tree.load_usd_prim_tree")
124124
@patch("isaaclab_arena.agentic_environment_generation.object_reference_prim_resolver.resolve_asset_usd_path")
125125
def test_two_pass_generate_spec_returns_dict_on_pass2_failure(self, mock_resolve_usd, mock_load_tree, agent):
126126
mock_resolve_usd.return_value = "/tmp/scene.usd"

isaaclab_arena/tests/test_object_reference_prim_resolver.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
)
2424

2525

26-
@patch("isaaclab_arena.agentic_environment_generation.object_reference_prim_resolver.load_usd_prim_tree")
26+
@patch("isaaclab_arena.utils.usd_prim_tree.load_usd_prim_tree")
2727
@patch("isaaclab_arena.agentic_environment_generation.object_reference_prim_resolver.resolve_asset_usd_path")
2828
def test_object_reference_prim_resolver_infer_merges_llm_output(mock_resolve_usd, mock_load_tree):
2929
mock_resolve_usd.return_value = "/tmp/scene.usd"
@@ -79,7 +79,7 @@ def test_object_reference_prim_resolver_infer_merges_llm_output(mock_resolve_usd
7979
),
8080
],
8181
)
82-
@patch("isaaclab_arena.agentic_environment_generation.object_reference_prim_resolver.load_usd_prim_tree")
82+
@patch("isaaclab_arena.utils.usd_prim_tree.load_usd_prim_tree")
8383
@patch("isaaclab_arena.agentic_environment_generation.object_reference_prim_resolver.resolve_asset_usd_path")
8484
def test_object_reference_prim_resolver_infer_records_invalid_llm_output(
8585
mock_resolve_usd,

0 commit comments

Comments
 (0)