-class Top(ABC, ITop):
- def __init__(self, data: [dict[str, dict] | None] = None):
- self._id = data["id"] if data and "id" in data else str(uuid.uuid4())
- self._name = (
- data["name"]
- if data and "name" in data
- else " ".join(["Name", "of", self._id])
- )
- self._administrativeState = (
- data["administrativeState"]
- if data and "administrativeState" in data
- else AdministrativeState.LOCKED
- )
- self._operationalState = (
- data["operationalState"]
- if data and "operationalState" in data
- else OperationalState.DISABLED
- )
- self._lifeCycleState = (
- data["lifeCycleState"]
- if data and "lifeCycleState" in data
- else LifeCycleState.PLANNED
- )
- self._alarmState = data["alarmState"] if data and "alarmState" in data else 0
- self._usageState = (
- data["usageState"] if data and "usageState" in data else UsageState.UNUSED
- )
- self._utilization = data["utilization"] if data and "utilization" in data else 0
+class Top(ABC):
+ @staticmethod
+ def default() -> dict[str, Any]:
+ return cast(dict[str, Any], default_value)
+
+ def __init__(
+ self, data: dict[str, Any] = cast(dict[str, Any], default_value)
+ ) -> None:
+ super().__init__()
+ itop: ITop = self._to_itop_data(data)
+ self._id: str = itop["id"]
+ self._name: str = itop["name"]
+ self._administrativeState: AdministrativeState = itop[
+ "administrativeState"
+ ]
+ self._operationalState: OperationalState = itop["operationalState"]
+ self._lifeCycleState: LifeCycleState = itop["lifeCycleState"]
+ self._alarmState: AlarmState = itop["alarmState"]
+ self._usageState: UsageState = itop["usageState"]
+ self._utilization: Utilization = itop["utilization"]
+
+ def _to_itop_data(self, data: dict[str, Any]) -> ITop:
+ result: ITop = default_value
+ for key, key_type in ITop.__annotations__.items():
+ if key in data:
+ result[key] = data[key] # type: ignore
+ return result