diff --git a/sdk/basyx/aas/model/base.py b/sdk/basyx/aas/model/base.py index 35ccad5a..aa9835c9 100644 --- a/sdk/basyx/aas/model/base.py +++ b/sdk/basyx/aas/model/base.py @@ -291,7 +291,8 @@ class LangStringSet(MutableMapping[str, str]): """ def __init__(self, dict_: Dict[str, str]): self._dict: Dict[str, str] = {} - + if not isinstance(dict_, dict): + raise TypeError(f"A {self.__class__.__name__} must be initialized with a dict!, got {type(dict_)}") if len(dict_) < 1: raise ValueError(f"A {self.__class__.__name__} must not be empty!") for ltag in dict_: @@ -614,9 +615,9 @@ class Referable(HasExtension, metaclass=abc.ABCMeta): def __init__(self): super().__init__() self._id_short: Optional[NameType] = None - self.display_name: Optional[MultiLanguageNameType] = dict() + self._display_name: Optional[MultiLanguageNameType] = None self._category: Optional[NameType] = None - self.description: Optional[MultiLanguageTextType] = dict() + self._description: Optional[MultiLanguageTextType] = None # We use a Python reference to the parent Namespace instead of a Reference Object, as specified. This allows # simpler and faster navigation/checks and it has no effect in the serialized data formats anyway. self.parent: Optional[UniqueIdShortNamespace] = None @@ -827,6 +828,28 @@ def _set_id_short(self, id_short: Optional[NameType]): # Redundant to the line above. However, this way, we make sure that we really update the _id_short self._id_short = id_short + @property + def display_name(self) -> Optional[MultiLanguageNameType]: + """Display name of the element (MultiLanguageNameType).""" + return self._display_name + + @display_name.setter + def display_name(self, value: Union[MultiLanguageNameType, dict, None]) -> None: + if value is not None and not isinstance(value, MultiLanguageNameType): + value = MultiLanguageNameType(value) + self._display_name = value + + @property + def description(self) -> Optional[MultiLanguageTextType]: + """Description of the element (MultiLanguageTextType).""" + return self._description + + @description.setter + def description(self, value: Union[MultiLanguageTextType, dict, None]) -> None: + if value is not None and not isinstance(value, MultiLanguageTextType): + value = MultiLanguageTextType(value) + self._description = value + def update_from(self, other: "Referable"): """ Internal function to update the object's attributes from a different version of the exact same object. diff --git a/sdk/basyx/aas/model/submodel.py b/sdk/basyx/aas/model/submodel.py index 9e7321c4..41031972 100644 --- a/sdk/basyx/aas/model/submodel.py +++ b/sdk/basyx/aas/model/submodel.py @@ -344,6 +344,16 @@ def __init__(self, self.value: Optional[base.MultiLanguageTextType] = value self.value_id: Optional[base.Reference] = value_id + @property + def value(self) -> Optional[base.MultiLanguageTextType]: + return self._value + + @value.setter + def value(self, value: Union[base.MultiLanguageTextType, dict, None]) -> None: + if value is not None and not isinstance(value, base.MultiLanguageTextType): + value = base.MultiLanguageTextType(value) + self._value = value + class Range(DataElement): """