mirror of
https://github.com/huggingface/lerobot.git
synced 2026-08-08 17:39:44 +00:00
Compare commits
base: admin/lerobot:docs/writing-standard
admin/lerobot:main
admin/lerobot:codex/language-runtime
admin/lerobot:docs/robots-api-documentation
admin/lerobot:auto/update-uv-lock
admin/lerobot:codex/recipe-binding-resolution
admin/lerobot:feat/add_interactive_rollout
admin/lerobot:feat/add_interactive_rollout_task
admin/lerobot:dependabot/github_actions/actions-f59c27ddf5
admin/lerobot:codex/pi05-pi052-training-time-rtc
admin/lerobot:feat/docstrings-rl
admin/lerobot:feat/docstrings-rollout
admin/lerobot:feat/sonic_encoder_decoder
admin/lerobot:docs/writing-standard
admin/lerobot:feat/unitree_g1_sonic_rebased
admin/lerobot:feat/docstrings-policies
admin/lerobot:feat/docstrings-datasets
admin/lerobot:feat/docstrings-configs
admin/lerobot:feat/docstrings-processor
admin/lerobot:feat/docstrings-transforms
admin/lerobot:feat/docstrings-optim
admin/lerobot:feat/docstrings-teleoperators
admin/lerobot:feat/docstrings-motors
admin/lerobot:feat/docstrings-cameras
admin/lerobot:feat/openarm_ee_kinematics
admin/lerobot:feat/streaming-consistency
admin/lerobot:feat/dataset-episodes-filtering
admin/lerobot:pr/4027
admin/lerobot:codex/pi05-se3-6d-training-rtc
admin/lerobot:feat/g1_onboard_controller
admin/lerobot:refactor/use_specialized_processors
admin/lerobot:nikodem/OpenGalaxeaTest
admin/lerobot:experiment/add-recap
admin/lerobot:experiment/wm-tshirt-folding
admin/lerobot:feat/vla-jepa-refactor
admin/lerobot:feat/dataset-filtering
admin/lerobot:security-fix/-github-workflows-claude-yml-1785501621
admin/lerobot:feat/g1_ort_session_options
admin/lerobot:feat/sonic_motor_gains
admin/lerobot:feat/g1_better_reset
admin/lerobot:docs/redesign
admin/lerobot:fix/pin-pretrained-commit
admin/lerobot:codex/pi052-language-policy
admin/lerobot:codex/episode-video-streaming-byte-cache
admin/lerobot:pr/3720
admin/lerobot:codex/pi05-two-step-proprio
admin/lerobot:fix/peft-training
admin/lerobot:feat/unitree_openarm
admin/lerobot:feat/smolvla-on-steerable
admin/lerobot:feat/sync-relative-actions
admin/lerobot:fix/rtc-action-keys-ordering
admin/lerobot:feat/add-recap
admin/lerobot:community-dataset-v3-migration
admin/lerobot:feat/ax-arm-support
admin/lerobot:feat/unitree-go2
admin/lerobot:flow-matching/action-expert-block
admin/lerobot:flow-matching/sampling-divergences
admin/lerobot:flow-matching/euler-direction
admin/lerobot:feat/modifying-policy-contract
admin/lerobot:codex/smolvla-visual-mem
admin/lerobot:feat/recompute-stats-readonly-and-visual
admin/lerobot:fix/pi0fast-double-bos-degenerate-generation
admin/lerobot:feat/unitree_locomotion_ik
admin/lerobot:fix/zero-shaped-features
admin/lerobot:mrussi/glove_visualizer
admin/lerobot:feat/onnx_support
admin/lerobot:feat/dynamixel-protocol-1
admin/lerobot:feat/rollout/dagger-episode-save
admin/lerobot:fix/safe-autocasts
admin/lerobot:feat/streaming-hf-native
admin/lerobot:evo1-internvl3-hf-refactor
admin/lerobot:depth-stats-unit
admin/lerobot:feat/mjlab_motion_imitation
admin/lerobot:feat/depth-in-robots
admin/lerobot:feat/remote_inference_draft
admin/lerobot:claude/stoic-pasteur-uwqfl8
admin/lerobot:rebot-mit-mode
admin/lerobot:feat/depth-frames
admin/lerobot:feat/audio_dataset
admin/lerobot:codex/model-profiling
admin/lerobot:feat/libero-benchmark
admin/lerobot:feat/benchmark-ci-clean
admin/lerobot:fix/loading-errors
admin/lerobot:feat/health-dashboard
admin/lerobot:feat/umi
admin/lerobot:feat/relative_umi
admin/lerobot:feat/add-auto-subtask-annotation
admin/lerobot:feat/robomme-integration
admin/lerobot:feat/dataset-visualization-tools
admin/lerobot:feat/RL-token
admin/lerobot:feat/multi-dataset
admin/lerobot:feat/libero-plus-integration
admin/lerobot:fix/dataset-conversion
admin/lerobot:feat/robocasa-benchmark
admin/lerobot:chore/fix-datasets
admin/lerobot:feat/add-pi05
admin/lerobot:feat/trim-episode-start-main
admin/lerobot:feat/trim-episode-start-skip-short
admin/lerobot:test/nightly-2
admin/lerobot:test/nightly-fix
admin/lerobot:security-fix/-github-workflows-nightly-yml-1772713391
admin/lerobot:fix/pandas-parquet-dataset-v30
admin/lerobot:feat/robot-teleop-pipeline
admin/lerobot:pr-2996
admin/lerobot:feat/slurm-mirror-dataset-script
admin/lerobot:fix-missing-teleop-imports
admin/lerobot:feat/improve_serial_exo
admin/lerobot:fix/ci-tv5
admin/lerobot:feat/trim_episodes
admin/lerobot:envs/support-more-args
admin/lerobot:openarms_wallx_rebased_3
admin/lerobot:feat/mirror
admin/lerobot:exp/wave-token
admin/lerobot:pr-2888
admin/lerobot:tmp/fold_training
admin/lerobot:feat/dart
admin/lerobot:feat/training_time_rtc
admin/lerobot:exp/videovla_additions
admin/lerobot:exp/video-encoder
admin/lerobot:feat/anyskin-sensors
admin/lerobot:fix/force_cpu_nit
admin/lerobot:openarms_wallx_rebased_2
admin/lerobot:feat/inter
admin/lerobot:feat/try_interpolation
admin/lerobot:feat/openarm_relative_ee
admin/lerobot:feat/pifast
admin/lerobot:feat/pi0fast
admin/lerobot:pr-1411
admin/lerobot:peft-precommit-fixes
admin/lerobot:feat/add-hirobot
admin/lerobot:openarms_wallx_rebased
admin/lerobot:openarms_tmp_rebase
admin/lerobot:refactor/replay-buffer-gymnasium-terminology
admin/lerobot:feat/add_record
admin/lerobot:feat/test_hi
admin/lerobot:feat/optimizer_fusion
admin/lerobot:feat/bilateral_teleop
admin/lerobot:jade/slurm-job
admin/lerobot:feat/compare_state_action
admin/lerobot:feat/unitree_g1_threading_fix
admin/lerobot:feat/behavior-1k
admin/lerobot:feat/convert_egodex
admin/lerobot:feat/unitree_g1
admin/lerobot:feat/sarm_uniform-sampling
admin/lerobot:fix/unitree_g1_robot_linter
admin/lerobot:feat/add_openarm
admin/lerobot:feat/fracapuano-behavior-1k
admin/lerobot:convert-hdf5
admin/lerobot:feat/rtc-docs
admin/lerobot:feat/dummy
admin/lerobot:fix/libero-reset
admin/lerobot:feat/fracapuano-distributed-dataset-merging
admin/lerobot:feat/add_dsrl
admin/lerobot:fix/conversion_script_images
admin/lerobot:feat/multi-process-cameras
admin/lerobot:feat/custom_teleop
admin/lerobot:tmp/add_openarm
admin/lerobot:tmp/wip_dsrl
admin/lerobot:docs/add-env-api
admin/lerobot:feat/accelerate-melt-gpus
admin/lerobot:feat/add_macos_ci
admin/lerobot:fix/keyboard_ee_teleop
admin/lerobot:revert/raise_empty_feature_processor_normalize
admin/lerobot:patch/fracapuano-improve-reward-classifier
admin/lerobot:feat/add-memory-benchmark-pipeline
admin/lerobot:feat/add_pi_pipeline_accell
admin/lerobot:feat/add-memory-benchmark
admin/lerobot:feat/add-multidataset-training
admin/lerobot:feat/profile-streaming
admin/lerobot:feat/add-sim-libero-pipeline
admin/lerobot:smolvla-dev
admin/lerobot:feat/validate_pi_libero
admin/lerobot:fix/aloha
admin/lerobot:user/CarolinePascal/2025_09_12_update_video_benchmark
admin/lerobot:fracapuano/12_09_25-update-dataset-docs
admin/lerobot:fix/pi0
admin/lerobot:chore/improve_tests_processor
admin/lerobot:feat/add_processor_to_eval
admin/lerobot:feat/convert_rlds
admin/lerobot:user/michel-aractingi/2025-9-4-fix-reachy2-tests
admin/lerobot:user/michel-aractingi/2025-9-4-downgrade-grpc-version
admin/lerobot:accelerate-multi-gpu-support
admin/lerobot:mypy_support
admin/lerobot:feature/general_r_learning
admin/lerobot:user/michel-aractingi/2025-8-13-dataset_tools
admin/lerobot:user/michel-aractingi/2025-8-12-so101_leader_follower
admin/lerobot:feat/accelerate-support
admin/lerobot:backup/user/michel-aractingi/2025-08-01-gym-pipeline
..
compare: admin/lerobot:main
admin/lerobot:codex/language-runtime
admin/lerobot:docs/robots-api-documentation
admin/lerobot:auto/update-uv-lock
admin/lerobot:codex/recipe-binding-resolution
admin/lerobot:feat/add_interactive_rollout
admin/lerobot:feat/add_interactive_rollout_task
admin/lerobot:main
admin/lerobot:dependabot/github_actions/actions-f59c27ddf5
admin/lerobot:codex/pi05-pi052-training-time-rtc
admin/lerobot:feat/docstrings-rl
admin/lerobot:feat/docstrings-rollout
admin/lerobot:feat/sonic_encoder_decoder
admin/lerobot:docs/writing-standard
admin/lerobot:feat/unitree_g1_sonic_rebased
admin/lerobot:feat/docstrings-policies
admin/lerobot:feat/docstrings-datasets
admin/lerobot:feat/docstrings-configs
admin/lerobot:feat/docstrings-processor
admin/lerobot:feat/docstrings-transforms
admin/lerobot:feat/docstrings-optim
admin/lerobot:feat/docstrings-teleoperators
admin/lerobot:feat/docstrings-motors
admin/lerobot:feat/docstrings-cameras
admin/lerobot:feat/openarm_ee_kinematics
admin/lerobot:feat/streaming-consistency
admin/lerobot:feat/dataset-episodes-filtering
admin/lerobot:pr/4027
admin/lerobot:codex/pi05-se3-6d-training-rtc
admin/lerobot:feat/g1_onboard_controller
admin/lerobot:refactor/use_specialized_processors
admin/lerobot:nikodem/OpenGalaxeaTest
admin/lerobot:experiment/add-recap
admin/lerobot:experiment/wm-tshirt-folding
admin/lerobot:feat/vla-jepa-refactor
admin/lerobot:feat/dataset-filtering
admin/lerobot:security-fix/-github-workflows-claude-yml-1785501621
admin/lerobot:feat/g1_ort_session_options
admin/lerobot:feat/sonic_motor_gains
admin/lerobot:feat/g1_better_reset
admin/lerobot:docs/redesign
admin/lerobot:fix/pin-pretrained-commit
admin/lerobot:codex/pi052-language-policy
admin/lerobot:codex/episode-video-streaming-byte-cache
admin/lerobot:pr/3720
admin/lerobot:codex/pi05-two-step-proprio
admin/lerobot:fix/peft-training
admin/lerobot:feat/unitree_openarm
admin/lerobot:feat/smolvla-on-steerable
admin/lerobot:feat/sync-relative-actions
admin/lerobot:fix/rtc-action-keys-ordering
admin/lerobot:feat/add-recap
admin/lerobot:community-dataset-v3-migration
admin/lerobot:feat/ax-arm-support
admin/lerobot:feat/unitree-go2
admin/lerobot:flow-matching/action-expert-block
admin/lerobot:flow-matching/sampling-divergences
admin/lerobot:flow-matching/euler-direction
admin/lerobot:feat/modifying-policy-contract
admin/lerobot:codex/smolvla-visual-mem
admin/lerobot:feat/recompute-stats-readonly-and-visual
admin/lerobot:fix/pi0fast-double-bos-degenerate-generation
admin/lerobot:feat/unitree_locomotion_ik
admin/lerobot:fix/zero-shaped-features
admin/lerobot:mrussi/glove_visualizer
admin/lerobot:feat/onnx_support
admin/lerobot:feat/dynamixel-protocol-1
admin/lerobot:feat/rollout/dagger-episode-save
admin/lerobot:fix/safe-autocasts
admin/lerobot:feat/streaming-hf-native
admin/lerobot:evo1-internvl3-hf-refactor
admin/lerobot:depth-stats-unit
admin/lerobot:feat/mjlab_motion_imitation
admin/lerobot:feat/depth-in-robots
admin/lerobot:feat/remote_inference_draft
admin/lerobot:claude/stoic-pasteur-uwqfl8
admin/lerobot:rebot-mit-mode
admin/lerobot:feat/depth-frames
admin/lerobot:feat/audio_dataset
admin/lerobot:codex/model-profiling
admin/lerobot:feat/libero-benchmark
admin/lerobot:feat/benchmark-ci-clean
admin/lerobot:fix/loading-errors
admin/lerobot:feat/health-dashboard
admin/lerobot:feat/umi
admin/lerobot:feat/relative_umi
admin/lerobot:feat/add-auto-subtask-annotation
admin/lerobot:feat/robomme-integration
admin/lerobot:feat/dataset-visualization-tools
admin/lerobot:feat/RL-token
admin/lerobot:feat/multi-dataset
admin/lerobot:feat/libero-plus-integration
admin/lerobot:fix/dataset-conversion
admin/lerobot:feat/robocasa-benchmark
admin/lerobot:chore/fix-datasets
admin/lerobot:feat/add-pi05
admin/lerobot:feat/trim-episode-start-main
admin/lerobot:feat/trim-episode-start-skip-short
admin/lerobot:test/nightly-2
admin/lerobot:test/nightly-fix
admin/lerobot:security-fix/-github-workflows-nightly-yml-1772713391
admin/lerobot:fix/pandas-parquet-dataset-v30
admin/lerobot:feat/robot-teleop-pipeline
admin/lerobot:pr-2996
admin/lerobot:feat/slurm-mirror-dataset-script
admin/lerobot:fix-missing-teleop-imports
admin/lerobot:feat/improve_serial_exo
admin/lerobot:fix/ci-tv5
admin/lerobot:feat/trim_episodes
admin/lerobot:envs/support-more-args
admin/lerobot:openarms_wallx_rebased_3
admin/lerobot:feat/mirror
admin/lerobot:exp/wave-token
admin/lerobot:pr-2888
admin/lerobot:tmp/fold_training
admin/lerobot:feat/dart
admin/lerobot:feat/training_time_rtc
admin/lerobot:exp/videovla_additions
admin/lerobot:exp/video-encoder
admin/lerobot:feat/anyskin-sensors
admin/lerobot:fix/force_cpu_nit
admin/lerobot:openarms_wallx_rebased_2
admin/lerobot:feat/inter
admin/lerobot:feat/try_interpolation
admin/lerobot:feat/openarm_relative_ee
admin/lerobot:feat/pifast
admin/lerobot:feat/pi0fast
admin/lerobot:pr-1411
admin/lerobot:peft-precommit-fixes
admin/lerobot:feat/add-hirobot
admin/lerobot:openarms_wallx_rebased
admin/lerobot:openarms_tmp_rebase
admin/lerobot:refactor/replay-buffer-gymnasium-terminology
admin/lerobot:feat/add_record
admin/lerobot:feat/test_hi
admin/lerobot:feat/optimizer_fusion
admin/lerobot:feat/bilateral_teleop
admin/lerobot:jade/slurm-job
admin/lerobot:feat/compare_state_action
admin/lerobot:feat/unitree_g1_threading_fix
admin/lerobot:feat/behavior-1k
admin/lerobot:feat/convert_egodex
admin/lerobot:feat/unitree_g1
admin/lerobot:feat/sarm_uniform-sampling
admin/lerobot:fix/unitree_g1_robot_linter
admin/lerobot:feat/add_openarm
admin/lerobot:feat/fracapuano-behavior-1k
admin/lerobot:convert-hdf5
admin/lerobot:feat/rtc-docs
admin/lerobot:feat/dummy
admin/lerobot:fix/libero-reset
admin/lerobot:feat/fracapuano-distributed-dataset-merging
admin/lerobot:feat/add_dsrl
admin/lerobot:fix/conversion_script_images
admin/lerobot:feat/multi-process-cameras
admin/lerobot:feat/custom_teleop
admin/lerobot:tmp/add_openarm
admin/lerobot:tmp/wip_dsrl
admin/lerobot:docs/add-env-api
admin/lerobot:feat/accelerate-melt-gpus
admin/lerobot:feat/add_macos_ci
admin/lerobot:fix/keyboard_ee_teleop
admin/lerobot:revert/raise_empty_feature_processor_normalize
admin/lerobot:patch/fracapuano-improve-reward-classifier
admin/lerobot:feat/add-memory-benchmark-pipeline
admin/lerobot:feat/add_pi_pipeline_accell
admin/lerobot:feat/add-memory-benchmark
admin/lerobot:feat/add-multidataset-training
admin/lerobot:feat/profile-streaming
admin/lerobot:feat/add-sim-libero-pipeline
admin/lerobot:smolvla-dev
admin/lerobot:feat/validate_pi_libero
admin/lerobot:fix/aloha
admin/lerobot:user/CarolinePascal/2025_09_12_update_video_benchmark
admin/lerobot:fracapuano/12_09_25-update-dataset-docs
admin/lerobot:fix/pi0
admin/lerobot:chore/improve_tests_processor
admin/lerobot:feat/add_processor_to_eval
admin/lerobot:feat/convert_rlds
admin/lerobot:user/michel-aractingi/2025-9-4-fix-reachy2-tests
admin/lerobot:user/michel-aractingi/2025-9-4-downgrade-grpc-version
admin/lerobot:accelerate-multi-gpu-support
admin/lerobot:mypy_support
admin/lerobot:feature/general_r_learning
admin/lerobot:user/michel-aractingi/2025-8-13-dataset_tools
admin/lerobot:user/michel-aractingi/2025-8-12-so101_leader_follower
admin/lerobot:feat/accelerate-support
admin/lerobot:backup/user/michel-aractingi/2025-08-01-gym-pipeline
2 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
22bd7a2f48 |
chore: sort imports in vla_jepa tests (#4354)
Pre-existing `I001` violations that `pre-commit run --all-files` auto-fixes. They are unrelated to the documentation work but block the green run the rest of this branch is verified against; confirmed present on main before this branch. |
||
|
|
6c73c413eb |
docs: add API documentation infrastructure (#4348)
* docs: add API documentation infrastructure
LeRobot's documentation build passes `--not_python_module`, which tells
doc-builder there is no importable Python package and disables `[[autodoc]]`
entirely. The result is that all 90+ pages are hand-written guides and there is
no generated API reference at all.
This is the machinery to change that. It deliberately contains no docstring
changes of its own — every docstring edit lives in the follow-up PR, so this
one can be reviewed as tooling and configuration alone.
**The standard.** `docs/source/writing_docstrings.mdx` is the contract: Google
section headers with Hugging Face type formatting, the machine-checked argument
line, `**Attributes**:`, doc-builder cross-references, fenced doctest examples.
It also records three behaviours that are not discoverable from the source and
were verified against a local build: `[[autodoc]]` silently skips members with
no docstring; doc-builder does not inherit docstrings from base classes, so a
registered config shim whose body is `pass` renders every field with no
description; and module-level aliases resolve to the canonical class.
**Autodoc turned on**, with two changes that are not obvious:
- `--version main` on the main-docs job. Without `--not_python_module`,
doc-builder resolves the version from `lerobot.__version__` and only maps it
to the default branch when it contains "dev". transformers relies on that;
our main carries 0.6.2. Verified by building both ways — dropping the flag
alone would publish the main docs to /lerobot/v0.6.2/ instead of
/lerobot/main/ and disable notebook building.
- `pre_command` on both jobs. doc-builder ships a mock-deps registry entry for
lerobot, so the reusable workflow takes its light-install path, which cannot
import the package. The heavy dependencies cannot be mocked either: draccus
runs `register_subclass` at import time and `processor/converters.py` calls
`functools.singledispatch.register(torch.Tensor)`, which needs a real class.
`[dataset]` is the only extra required.
Workflow triggers gain `src/**`, since the reference is now generated from
docstrings. `docs/source/api/` is excluded from the prettier hook, which reads
`[[autodoc]]` member lists as lazy paragraph continuations and joins a ten-entry
list onto one line.
Nine API reference pages, scaffolded with each module's base class.
**Doctests.** `LeRobotDocTestParser` is mandatory rather than optional here:
ruff's `docstring-code-format = true` drops the blank line before a closing
fence, after which stdlib's `_EXAMPLE_RE` reads the fence as expected output and
every example with output fails. It is written against the installed pytest
rather than copied from transformers, whose version predates pytest 9's
`import_path` signature and its own fix for the `@property` line-number bug.
`preprocess_string` also diverges: the upstream fenced-block split puts a
single-line example's code in a chunk with no `>>>` in it, so neither the CUDA
skip nor the `+IGNORE_RESULT` injection fires for it.
**Checkers.** `utils/check_docstrings.py` is the ~300-line core of the
2203-line transformers original; the `@auto_docstring` system, modular
propagation, GitPython and `checkers.py` are not ported.
`utils/check_config_docstrings.py` checks that every registered robot config
documents its port and calibration semantics.
**Gates**, all set to values that pass today: ruff `D` with per-file-ignores
per unconverted module, `interrogate` at `fail-under = 52` against a measured
52.1%, and Makefile targets wired into the quality workflow. The doctest
allowlist ships empty and the `doctest` target handles that, because the files
carrying runnable examples arrive with the docstring PR.
* ci: build the docs on Python 3.12
The shared doc-builder workflows create their virtualenv with the runner's
system Python, which is 3.10.12 on ubuntu-22.04. lerobot requires >=3.12, so
the build died during "Setup environment":
× No solution found when resolving dependencies:
╰─▶ Because the current Python version (3.10.12) does not satisfy
Python>=3.12 and lerobot==0.6.2 depends on Python>=3.12 ...
That step runs before `pre_command`, so the real install this workflow already
performs never got the chance to run. There was no fix available on the caller
side either: `env:` does not propagate into a reusable workflow, so `UV_PYTHON`
is unavailable, and `uv venv` runs in the runner workspace root rather than the
checkout, so a `.python-version` file cannot reach it. The non-light fallback
(`uv pip install "./pkg[dev]"`) fails identically, so this is not specific to
the mock-deps path — it blocks any package requiring 3.12+.
huggingface/doc-builder#808 adds a `python_version` input to both build
workflows, which this passes. Pins move to that merge commit, picking up three
unrelated fixes in the same range (#810, #811, #812); the upload workflow is
unchanged there and is bumped only to keep all three pins on one SHA.
* chore: sort imports in vla_jepa tests
Enabling pydocstyle in the previous commit changes how ruff determines where a
module's import block ends, which makes I001 fire on three vla_jepa tests that
were clean before. The blank line between the `conftest` and `lerobot` imports
is the trigger: both are first-party, so isort wants them in one contiguous
block, and the docstring-aware analysis is what makes it notice.
These files are unrelated to the API reference, so the fix is only to satisfy
the new gate.
|