# coding: utf-8
"""
Asset Management API
Service for configuring, reading and managing assets, asset ~ and aspect types. # noqa: E501
"""
import pprint
import re
import six
from assetmanagement.models.variable import Variable
from mindsphere_core.exceptions import MindsphereClientError
[docs]class Aspect(object):
"""
Attributes:
attribute_types (dict): The key is attribute name
and the value is attribute type.
attribute_map (dict): The key is attribute name
and the value is json key in definition.
"""
attribute_types = {
'name': 'str',
'variables': 'list[Variable]'
}
attribute_map = {
'name': 'name',
'variables': 'variables'
}
def __init__(self, name=None, variables=None):
self._name = name
self._variables = variables
self.discriminator = None
@property
def name(self):
"""Gets the name of this Aspect.
:return: The name of this Aspect.
:rtype: str
"""
return self._name
@name.setter
def name(self, name):
"""Sets the name of this Aspect.
:param name: The name of this Aspect.
:type: str
"""
if name is not None and len(name) > 64:
raise MindsphereClientError("Invalid value for `name`, length must be less than or equal to `64`")
if name is not None and len(name) < 1:
raise MindsphereClientError("Invalid value for `name`, length must be greater than or equal to `1`")
if name is not None and not re.search(r'[a-zA-Z0-9_]+', name):
raise MindsphereClientError(r"Invalid value for `name`, must be a follow pattern or equal to `/[a-zA-Z0-9_]+/`")
self._name = name
@property
def variables(self):
"""Gets the variables of this Aspect.
:return: The variables of this Aspect.
:rtype: list[Variable]
"""
return self._variables
@variables.setter
def variables(self, variables):
"""Sets the variables of this Aspect.
:param variables: The variables of this Aspect.
:type: list[Variable]
"""
self._variables = variables
[docs] def to_dict(self):
"""Returns the model properties as a dict"""
result = {}
for attr, _ in six.iteritems(self.attribute_types):
value = getattr(self, attr)
if isinstance(value, list):
result[attr] = list(map(
lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
value
))
elif hasattr(value, "to_dict"):
result[attr] = value.to_dict()
elif isinstance(value, dict):
result[attr] = dict(map(
lambda item: (item[0], item[1].to_dict())
if hasattr(item[1], "to_dict") else item,
value.items()
))
else:
result[attr] = value
if issubclass(Aspect, dict):
for key, value in self.items():
result[key] = value
return result
[docs] def to_str(self):
"""Returns the string representation of the model"""
return pprint.pformat(self.to_dict())
def __repr__(self):
"""For `print` and `pprint`"""
return self.to_str()
def __eq__(self, other):
"""Returns true if both objects are equal"""
if not isinstance(other, Aspect):
return False
return self.__dict__ == other.__dict__
def __ne__(self, other):
"""Returns true if both objects are not equal"""
return not self == other