Skip to content

chore(isaac): switch to create_simulation("isaac") + drop direct-constructor docs (closes #139)#166

Merged
cagataycali merged 1 commit into
strands-labs:mainfrom
yinsong1986:chore/isaac-create-simulation-switchover
Jul 7, 2026
Merged

chore(isaac): switch to create_simulation("isaac") + drop direct-constructor docs (closes #139)#166
cagataycali merged 1 commit into
strands-labs:mainfrom
yinsong1986:chore/isaac-create-simulation-switchover

Conversation

@yinsong1986

Copy link
Copy Markdown
Contributor

What changed

Downstream switch-over now that strands-labs/robots#131 has shipped the strands_robots.backends entry-point walker in the strands-robots 0.4.1 release (2026-07-01). With the walker live, create_simulation("isaac", ...) resolves to this repo's IsaacSimulation exactly like create_simulation("mujoco").

  • pyproject.toml — bump the dependency floor to strands-robots>=0.4.1 (the first release whose factory walks the entry-point group) and correct the three comments that incorrectly claimed 0.4.0 walked [project.entry-points."strands_robots.backends"], plus the stale skip-install rationale.
  • examples/libero/run_isaac.py, run_isaac_agent.py — construct via create_simulation("isaac", headless=True, num_envs=1, render_mode="rtx_realtime") instead of IsaacSimulation(IsaacConfig(...)).
  • examples/isaac_gs/app.py, render_demo.py — same switch, behavior identical (render_mode="rtx_realtime" preserved).
  • Docs (index, quickstart, simulation/overview, api-reference, architecture, README, installation, domain-randomization) — remove the now-obsolete "direct constructor" / "not wired up yet" / >=0.3.8,<0.4 notes and show create_simulation("isaac", ...) as the primary path. The direct constructor is kept only where intentional: config-object-in-hand examples, the render_mode config-field demo, and the multiprocessing/spawn example.
  • strands_robots_sim/isaac/tests/test_create_simulation_isaac.py — flip the discovery test from "assert the ValueError today, auto-flip later" to asserting create_simulation("isaac") resolves to IsaacSimulation against the >=0.4.1 floor. Skips cleanly when strands-robots is absent or below the floor (e.g. the skip-install=true hatch env).

Why

The pre-existing state was internally inconsistent: pyproject.toml already pinned strands-robots>=0.4.0 with a comment asserting 0.4.0 "walks" the entry-point group — but 0.4.0 does not (verified against the v0.4.0 tag: no _load_plugin_backends). The walker landed in v0.4.1. Meanwhile the docs still cited the older >=0.3.8,<0.4 pin and the "direct constructor workaround," so they were stale in both directions. This PR aligns the floor, the code, the tests, and the docs on the released walker.

Test surface

  • hatch run lint — clean (black + isort + flake8 over strands_robots_sim + examples).
  • hatch run test264 passed, 40 skipped, no failures. (The new positive discovery test skips in the skip-install=true hatch env, as designed.)
  • Full-install run (pip install -e . + strands-robots==0.4.1): test_create_simulation_isaac.py7 passed, including the positive test_create_simulation_isaac_resolves_to_isaac_simulation.
  • mkdocs build --strict — clean.
  • All four edited example files byte-compile clean.
  • Issue verification snippet passes:
    from strands_robots.simulation import create_simulation
    sim = create_simulation("isaac", headless=True, render_mode="rtx_realtime")
    assert type(sim).__name__ == "IsaacSimulation"   # ✅

The 7 environmental failures in test_rendering.py / test_policy_runner.py (no X11/OpenGL on the dev box) are pre-existing and out of scope for this change; not touched here.

Acceptance criteria (from #139)

1. Bump the dependency floor

  • pyproject.toml: strands-robots>=0.4.1 and corrected comments (0.4.0 did not walk the group; 0.4.1 does).

2. Switch examples to create_simulation("isaac", ...)

3. Remove the "direct constructor" workaround notes + stale pin references

  • docs/index.md — removed the direct-constructor note + the "entry-point discovery is not live yet" warning; mermaid label updated.
  • docs/getting-started/quickstart.md — replaced the "not wired up yet" note.
  • docs/simulation/overview.md — replaced the "until a future release walks the entry-point group" note.
  • docs/api-reference.md — replaced the "Until then (pinned floor >=0.3.8,<0.4)" note.
  • docs/architecture.md — flipped the !!! warning (create_simulation raises) to a !!! note (discovery is live in >=0.4.1).
  • Snippets show create_simulation("isaac", ...) as the primary path; direct constructor kept only where intentional. Also cleaned stale >=0.3.8,<0.4 / "not wired" references in README.md, docs/getting-started/installation.md, and docs/simulation/domain-randomization.md.

4. Tests

  • Flipped the existing negative test to the positive case: create_simulation("isaac") resolves to IsaacSimulation.

Out-of-scope / follow-ups

  • The 7 pre-existing X11/OpenGL environmental test failures are untouched.
  • A handful of intentional direct-constructor snippets remain (config-object-in-hand, render_mode field demo, multiprocessing spawn example) — these illustrate IsaacConfig usage on purpose and were left as-is per the issue's "keep the direct constructor only where intentional."

Project board

If this issue is on the Strands Labs - Robots board, please move #139 to In review.

Closes #139.

…tructor workarounds (closes strands-labs#139)

robots#131 shipped the strands_robots.backends entry-point walker in the
strands-robots 0.4.1 release (2026-07-01), so create_simulation("isaac", ...)
now resolves to this repo's IsaacSimulation exactly like
create_simulation("mujoco"). This is the downstream switch-over.

- pyproject.toml: bump the dependency floor to strands-robots>=0.4.1 (the
  first release whose factory walks the entry-point group) and correct the
  three comments that incorrectly claimed 0.4.0 walked it, plus the stale
  hatch skip-install rationale.
- examples/libero/run_isaac.py + run_isaac_agent.py: construct via
  create_simulation("isaac", headless=True, num_envs=1,
  render_mode="rtx_realtime") instead of IsaacSimulation(IsaacConfig(...)).
- examples/isaac_gs/app.py + render_demo.py: same switch, behavior identical
  (render_mode="rtx_realtime" preserved).
- docs (index, quickstart, overview, api-reference, architecture, README,
  installation, domain-randomization): remove the now-obsolete "direct
  constructor" / "not wired up yet" / ">=0.3.8,<0.4" notes and show
  create_simulation("isaac", ...) as the primary path. The direct
  constructor is kept only where intentional (config-object-in-hand,
  render-mode field demo, multiprocessing example).
- test_create_simulation_isaac.py: flip the discovery test from "asserts the
  ValueError today, auto-flips later" to asserting create_simulation("isaac")
  resolves to IsaacSimulation against the >=0.4.1 floor (skips cleanly when
  strands-robots is absent or below the floor).

Verification: create_simulation("isaac", headless=True,
render_mode="rtx_realtime") resolves to IsaacSimulation; hatch run lint +
hatch run test pass (264 passed, 40 skipped); the discovery test passes
positively against strands-robots 0.4.1 in a full install; mkdocs build
--strict is clean.
@cagataycali cagataycali merged commit c398a38 into strands-labs:main Jul 7, 2026
3 of 4 checks passed
@github-project-automation github-project-automation Bot moved this from In review to Done in Strands Labs - Robots Jul 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

chore(isaac): switch to create_simulation("isaac") + drop direct-constructor docs once robots#131 lands

2 participants