Source code for mpscenes.common.component

from abc import ABC
import yaml
from omegaconf import OmegaConf

from mpscenes.common.errors import (
    ComponentIncompleteError,
    DimensionNotSuitableForEnv,
)


[docs]class MPComponent(ABC): def __init__(self, **kwargs): schema = kwargs.get("schema") if "content_dict" in kwargs and "name" in kwargs: self._content_dict = kwargs.get("content_dict") self._name = kwargs.get("name") elif "file_name" in kwargs: with open(kwargs.get("file_name"), "r") as stream: self._content_dict = yaml.safe_load(stream) self._name = self._content_dict["name"] del self._content_dict["name"] self._config = OmegaConf.create(self._content_dict) config = OmegaConf.create(self._content_dict) self._config = OmegaConf.merge(schema, config)
[docs] def check_completeness(self): pass """ incomplete = False missingKeys = "" for key in self._required_keys: if key not in self._content_dict.keys(): incomplete = True missingKeys += key + ", " if incomplete: raise ComponentIncompleteError("Missing keys: %s" % missingKeys[:-2]) """
[docs] def name(self): return self._name
[docs] def evaluate_components(self, mask: list, t: float): result = {} for mask_entry in mask: try: result[mask_entry] = getattr(self, mask_entry)(t=t) except TypeError as _: result[mask_entry] = getattr(self, mask_entry)() return result
[docs] def dict(self): return OmegaConf.to_container(self._config)