From 1378ea0385013ad5663004360678622c50a023a2 Mon Sep 17 00:00:00 2001 From: Pepijn Date: Wed, 15 Apr 2026 10:35:02 +0200 Subject: [PATCH] fix(libero-plus): stop touching pyproject + uv.lock MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The fast-tests job was rejecting the branch because pyproject.toml had a [libero_plus] extra whose git dep wasn't represented in uv.lock. The Docker image no longer needs the extra — it clones LIBERO-plus directly and PYTHONPATH-shadows hf-libero. Drop [libero_plus] from pyproject and restore pyproject.toml + uv.lock to exactly what's on origin/main, so `uv sync --locked --extra test` is a no-op for this PR. Also repoint the doc/CI/env comments that still mentioned the extra at the Docker install path. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/benchmark_tests.yml | 3 ++- docs/source/libero_plus.mdx | 7 +++++-- pyproject.toml | 6 ------ src/lerobot/envs/configs.py | 6 +++--- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/.github/workflows/benchmark_tests.yml b/.github/workflows/benchmark_tests.yml index 46ad4d5ed..183a18a53 100644 --- a/.github/workflows/benchmark_tests.yml +++ b/.github/workflows/benchmark_tests.yml @@ -312,7 +312,8 @@ jobs: if-no-files-found: warn # ── LIBERO-plus ─────────────────────────────────────────────────────────── - # Isolated image: lerobot[libero_plus] only (LIBERO-plus from GitHub, mujoco) + # Isolated image: LIBERO-plus fork cloned into /home/user_lerobot on top of + # huggingface/lerobot-gpu (see docker/Dockerfile.benchmark.libero_plus). libero-plus-integration-test: name: LIBERO-plus — build image + 1-episode eval runs-on: diff --git a/docs/source/libero_plus.mdx b/docs/source/libero_plus.mdx index 309964e80..620aad7ec 100644 --- a/docs/source/libero_plus.mdx +++ b/docs/source/libero_plus.mdx @@ -43,10 +43,13 @@ sudo apt install libexpat1 libfontconfig1-dev libmagickwand-dev ### Python package ```bash -pip install -e ".[libero_plus]" +pip install -e ".[libero]" "robosuite==1.4.1" bddl easydict mujoco wand scikit-image gym +git clone https://github.com/sylvestf/LIBERO-plus.git +cd LIBERO-plus && pip install --no-deps -e . +pip uninstall -y hf-libero # so `import libero` resolves to the fork ``` -This installs LIBERO-plus directly from its GitHub repository. Because MuJoCo is required, only Linux is supported. +LIBERO-plus is installed from its GitHub fork rather than a pyproject extra — the fork ships as a namespace package that pip can't handle, so it must be cloned and added to `PYTHONPATH`. See `docker/Dockerfile.benchmark.libero_plus` for the canonical install. MuJoCo is required, so only Linux is supported. Set the MuJoCo rendering backend before running evaluation: diff --git a/pyproject.toml b/pyproject.toml index 4b50a77f8..10942a86f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -210,12 +210,6 @@ video_benchmark = ["scikit-image>=0.23.2,<0.26.0", "pandas>=2.2.2,<2.4.0"] 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 libero = ["lerobot[dataset]", "lerobot[transformers-dep]", "hf-libero>=0.1.3,<0.2.0; sys_platform == 'linux'", "lerobot[scipy-dep]"] -libero_plus = [ - "lerobot[dataset]", - "lerobot[transformers-dep]", - "libero @ git+https://github.com/sylvestf/LIBERO-plus.git@main ; sys_platform == 'linux'", - "lerobot[scipy-dep]", -] metaworld = ["lerobot[dataset]", "metaworld==3.0.0", "lerobot[scipy-dep]"] # All diff --git a/src/lerobot/envs/configs.py b/src/lerobot/envs/configs.py index 1b53a13d5..793197710 100644 --- a/src/lerobot/envs/configs.py +++ b/src/lerobot/envs/configs.py @@ -588,9 +588,9 @@ class LiberoPlusEnv(LiberoEnv): The gym interface is identical to LIBERO so this class reuses ``LiberoEnv`` entirely — only the registered name and default task suite differ. - Install:: - - pip install -e ".[libero_plus]" + Install: see docker/Dockerfile.benchmark.libero_plus — LIBERO-plus ships + as a namespace package from a git fork and must be cloned + PYTHONPATH'd + rather than installed as a pyproject extra. See Also: https://github.com/sylvestf/LIBERO-plus