Add TreeSpec to support dataclass-based nested specs (Issue #13) #21
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.
This PR adds a minimal TreeSpec implementation to dm_env to support structured
action and observation specifications using Python dataclasses. This directly
addresses Issue #13 ("Tree Spec").
✔ What is added
TreeSpecclass in specs.py._generate_tree_value()helper to generate valid test values.test_tree_spec_generate_value.✔ Why this is useful
Many JAX-based RL environments define structured I/O using dataclasses.
While dm_env already supports tuple/dict specs, dataclass-based specs were not
recognized, causing type checking and clarity issues. TreeSpec provides an
explicit and type-safe way to represent these structures.
✔ Compatibility
This feature is fully backward-compatible and does not modify any existing spec
behavior. All existing tests pass (166 passed).