fix(robomme): make docs build + fast tests green

1. Docs: add robomme to _toctree.yml under Benchmarks so doc-builder's
   TOC integrity check stops rejecting the new page.

2. Fast tests: robomme's mani-skill transitively pins numpy<2 which is
   unsatisfiable against the project's numpy>=2 base pin, so `uv sync`
   couldn't resolve a universal lockfile.

   Drop robomme as a pyproject extra entirely — it truly cannot coexist
   with the rest of the dep tree. The Dockerfile installs robomme
   directly from its git URL via `uv pip install --override`, which was
   already the runtime path. pyproject, docs, env docstrings, and the
   CI job comment all now point to the docker-only install.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Pepijn
2026-04-15 10:06:55 +02:00
parent 9589c133ba
commit ee37fb9928
7 changed files with 20 additions and 11 deletions
+2 -1
View File
@@ -312,7 +312,8 @@ jobs:
if-no-files-found: warn if-no-files-found: warn
# ── ROBOMME ─────────────────────────────────────────────────────────────── # ── ROBOMME ───────────────────────────────────────────────────────────────
# Isolated image: lerobot[robomme] only (mani-skill, SAPIEN, Vulkan chain) # Isolated image: mani-skill/SAPIEN/Vulkan chain with gymnasium and numpy
# overrides (robomme can't be a pyproject extra due to numpy<2 pin).
robomme-integration-test: robomme-integration-test:
name: RoboMME — build image + 1-episode eval name: RoboMME — build image + 1-episode eval
runs-on: runs-on:
+5 -3
View File
@@ -40,12 +40,14 @@ RUN apt-get update \
&& apt-get clean && rm -rf /var/lib/apt/lists/* && apt-get clean && rm -rf /var/lib/apt/lists/*
USER user_lerobot USER user_lerobot
# Refresh pyproject/setup.py so the PR's robomme extra is registered, then # Install smolvla + av-dep via the PR's pyproject, then layer robomme on top
# install it with gymnasium/numpy overrides to downgrade from lerobot[all]. # with gymnasium/numpy overrides. robomme isn't a pyproject extra because its
# mani-skill pin conflicts with lerobot's base numpy>=2 (see pyproject.toml).
COPY --chown=user_lerobot:user_lerobot setup.py pyproject.toml uv.lock README.md MANIFEST.in ./ COPY --chown=user_lerobot:user_lerobot setup.py pyproject.toml uv.lock README.md MANIFEST.in ./
RUN printf 'gymnasium==0.29.1\nnumpy==1.26.4\n' > /tmp/robomme_override.txt \ RUN printf 'gymnasium==0.29.1\nnumpy==1.26.4\n' > /tmp/robomme_override.txt \
&& uv pip install --no-cache --override /tmp/robomme_override.txt \ && uv pip install --no-cache --override /tmp/robomme_override.txt \
-e ".[robomme,smolvla,av-dep]" \ -e ".[smolvla,av-dep]" \
"robomme @ git+https://github.com/RoboMME/robomme_benchmark.git@main" \
&& python -c "import robomme; print('robomme import OK')" && python -c "import robomme; print('robomme import OK')"
# Overlay the PR's source code on top of the nightly image. # Overlay the PR's source code on top of the nightly image.
+2
View File
@@ -79,6 +79,8 @@
title: LIBERO title: LIBERO
- local: metaworld - local: metaworld
title: Meta-World title: Meta-World
- local: robomme
title: RoboMME
- local: envhub_isaaclab_arena - local: envhub_isaaclab_arena
title: NVIDIA IsaacLab Arena Environments title: NVIDIA IsaacLab Arena Environments
title: "Benchmarks" title: "Benchmarks"
+4 -2
View File
@@ -23,10 +23,12 @@
### Native (Linux) ### Native (Linux)
```bash ```bash
pip install 'lerobot[robomme]' pip install --override <(printf 'gymnasium==0.29.1\nnumpy==1.26.4\n') \
-e '.[smolvla,av-dep]' \
'robomme @ git+https://github.com/RoboMME/robomme_benchmark.git@main'
``` ```
> **Dependency note**: `robomme` pulls in `mani-skill` which pins `gymnasium==0.29.1` and `numpy<2.0.0`. These conflict with lerobot's default pins. On Linux you can pin both in your env; see the Docker approach below to avoid conflicts entirely. > **Dependency note**: `mani-skill` (pulled by `robomme`) pins `gymnasium==0.29.1` and `numpy<2.0.0`, which conflict with lerobot's base `numpy>=2.0.0`. That's why `robomme` is not a pyproject extra — use the override install above, or the Docker approach below to avoid conflicts entirely.
### Docker (recommended) ### Docker (recommended)
+4 -3
View File
@@ -211,9 +211,10 @@ aloha = ["lerobot[dataset]", "gym-aloha>=0.1.2,<0.2.0", "lerobot[scipy-dep]"]
pusht = ["lerobot[dataset]", "gym-pusht>=0.1.5,<0.2.0", "pymunk>=6.6.0,<7.0.0"] # TODO: Fix pymunk version in gym-pusht instead pusht = ["lerobot[dataset]", "gym-pusht>=0.1.5,<0.2.0", "pymunk>=6.6.0,<7.0.0"] # TODO: Fix pymunk version in gym-pusht instead
libero = ["lerobot[dataset]", "lerobot[transformers-dep]", "hf-libero>=0.1.3,<0.2.0; sys_platform == 'linux'", "lerobot[scipy-dep]"] libero = ["lerobot[dataset]", "lerobot[transformers-dep]", "hf-libero>=0.1.3,<0.2.0; sys_platform == 'linux'", "lerobot[scipy-dep]"]
metaworld = ["lerobot[dataset]", "metaworld==3.0.0", "lerobot[scipy-dep]"] metaworld = ["lerobot[dataset]", "metaworld==3.0.0", "lerobot[scipy-dep]"]
robomme = [ # NOTE: robomme is NOT a pyproject extra — mani-skill hard-pins numpy<2
"robomme @ git+https://github.com/RoboMME/robomme_benchmark.git@main ; sys_platform == 'linux'", # which conflicts with lerobot's numpy>=2 base pin, so the two trees can't
] # resolve into a single env. Install it only in the RoboMME Docker image
# via `uv pip install --override` (see docker/Dockerfile.benchmark.robomme).
# All # All
all = [ all = [
+2 -1
View File
@@ -585,7 +585,8 @@ class RoboMMEEnv(EnvConfig):
Dataset: lerobot/robomme (LeRobot v3.0, 1,600 episodes). Dataset: lerobot/robomme (LeRobot v3.0, 1,600 episodes).
Benchmark: https://github.com/RoboMME/robomme_benchmark Benchmark: https://github.com/RoboMME/robomme_benchmark
Requires: pip install 'lerobot[robomme]' (Linux only). Requires the `robomme` git package installed separately (Linux only);
see docker/Dockerfile.benchmark.robomme for the canonical install.
""" """
task: str = "PickXtimes" task: str = "PickXtimes"
+1 -1
View File
@@ -10,7 +10,7 @@ RoboMME tasks:
Imitation: MoveCube, InsertPeg, PatternLock, RouteStick Imitation: MoveCube, InsertPeg, PatternLock, RouteStick
Dataset: lerobot/robomme (LeRobot v3.0, 1,600 episodes) Dataset: lerobot/robomme (LeRobot v3.0, 1,600 episodes)
Install: pip install 'lerobot[robomme]' (Linux only) Install: see docker/Dockerfile.benchmark.robomme (Linux only mani-skill vs numpy pin conflict)
Benchmark: https://github.com/RoboMME/robomme_benchmark Benchmark: https://github.com/RoboMME/robomme_benchmark
""" """