mirror of
https://github.com/huggingface/lerobot.git
synced 2026-05-20 11:09:59 +00:00
0f5f0e4091
- hirobot.yaml -> subtasks_vqa.yaml - hirobot_memory.yaml -> subtask_mem_vqa_speech.yaml - pi05_hirobot.yaml -> deleted (stale: uses plan, top-camera names; superseded by the two recipes above) - smolvla2_hirobot.yaml -> deleted (was untracked stale junk) Updated the smolvla2 / pi052 `recipe_path` config defaults, all docstring / comment references, the annotation-pipeline + recipe docs, and the three tests that loaded pi05_hirobot.yaml (repointed to the renamed recipes; the low-level-branch and pipeline-render assertions now accept a flow-only `low_level` stream as valid supervision, since the new recipes' low_level_execution has no text-CE target). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
35 lines
991 B
Python
35 lines
991 B
Python
#!/usr/bin/env python
|
|
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from lerobot.configs.recipe import MessageTurn, TrainingRecipe
|
|
|
|
|
|
def test_message_recipe_validates_unknown_binding():
|
|
with pytest.raises(ValueError, match="unknown binding"):
|
|
TrainingRecipe(
|
|
messages=[
|
|
MessageTurn(role="user", content="${missing}", stream="high_level"),
|
|
MessageTurn(role="assistant", content="ok", stream="high_level", target=True),
|
|
]
|
|
)
|
|
|
|
|
|
def test_canonical_recipe_loads():
|
|
recipe = TrainingRecipe.from_yaml(
|
|
Path("src/lerobot/configs/recipes/subtask_mem_vqa_speech.yaml")
|
|
)
|
|
|
|
assert recipe.blend is not None
|
|
assert set(recipe.blend) == {
|
|
"memory_update",
|
|
"user_interjection_response",
|
|
"high_level_subtask",
|
|
"low_level_execution",
|
|
"ask_vqa_top",
|
|
"ask_vqa_wrist",
|
|
}
|
|
assert sum(component.weight for component in recipe.blend.values()) == pytest.approx(1.0)
|