rlmesh.adapters.Split

classfrom rlmesh.adapters import Split[source]

An ordered split of one flat numeric observation leaf into role fields.

Split(*fields: Field)

A leaf, not a container: one tensor split into role fields, the observation-side mirror of Action. Fields are laid out in order, offsets accumulate, and the native join requires the field widths to sum to the leaf width. Use it when an env returns a flat Box whose fixed index ranges carry distinct semantics (e.g. Metaworld)::

Split(Field(EEF_POS, 3), Field(GRIPPER, 1))

Construction rejects a (role, part, provenance) declared by more than one field (a role may repeat across parts or provenances, never within one key). The authoritative Rust codec enforces the same rule at the wire door; duplicating it here is deliberate (the fail-fast-at-construction exception, like Field’s dim >= 1 check), so the author’s own mistake surfaces at the authoring line instead of at serialize/resolve.

fields

attribute[source]
fields: tuple[Field, ...]

State fields in vector order.