feat: add support for external plugin config dataclasses #807
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What this does (✨ Feature)
Currently, the
ChoiceRegistry
-based config dataclasses only register config subclasses when they are imported. This means that to use an external environment or policy, you have to modify LeRobot’s repository—either by adding a new config class directly or by importing the external module in the training script. Such modifications limit the use of LeRobot as a library or framework.This PR adds runtime support for loading external plugins/packages through the CLI. Now, by simply passing a CLI argument to load external plugins at runtime, the system automatically imports the plugin and registers its config classes. This decouples external extensions from LeRobot’s internal code, making it much easier to use LeRobot with our own environments or policies without modifying the training scripts! 🚀
How it was tested
See the
test_plugin_loading.py
tests added.How to checkout & try? (for the reviewer)
Checkout this branch and run: