Skip to content

input_specification

input_specification

Shared structured input specifications for model modules.

InputSpecification dataclass

InputSpecification(keys, required=list(), exactly_one_camera_modality=list(), required_camera_modalities=list(), conditioning_key=None, conditioning_required=list(), conditioning_one_of_groups=list(), requires_tokenized=False)

Structured input contract for modules that consume observation tensors.

__post_init__

__post_init__()

Normalize keys to a list if a single string is provided.

Source code in src/versatil/models/input_specification.py
def __post_init__(self) -> None:
    """Normalize keys to a list if a single string is provided."""
    if isinstance(self.keys, str):
        self.keys = [self.keys]

validate

validate()

Validate structural input constraints.

Source code in src/versatil/models/input_specification.py
def validate(self) -> None:
    """Validate structural input constraints."""
    key_set = set(self.keys)
    missing = set(self.required) - key_set
    if missing:
        raise ValueError(f"Missing required inputs: {missing}")
    if self.conditioning_key:
        conditioning_set = {self.conditioning_key}
        missing_conditioning = set(self.conditioning_required) - conditioning_set
        if missing_conditioning:
            raise ValueError(
                f"Missing required conditioning: {missing_conditioning}"
            )
        for group in self.conditioning_one_of_groups:
            matches = conditioning_set.intersection(group)
            if len(matches) != 1:
                raise ValueError(
                    f"Exactly one from {group} required for conditioning"
                )
    self._validate_unique_camera_modalities(
        field_name="exactly_one_camera_modality",
        modalities=self.exactly_one_camera_modality,
    )
    self._validate_unique_camera_modalities(
        field_name="required_camera_modalities",
        modalities=self.required_camera_modalities,
    )