An abstract Class for all classes
"""
import uuid
-from abc import ABC, abstractmethod
-from typing import Any
+from abc import ABC
from model.python.type_definitions import (
- AddressType,
AdministrativeState,
OperationalState,
UsageState,
LifeCycleState,
AlarmState,
)
-from model.python.geo_location import GeoLocation
# Define the ITop interface
# Define the Top class
class Top(ABC, ITop):
- def __init__(self, data: [dict[str, Any] | None] = None):
- self._id = data.id if data and data.id else str(uuid.uuid4())
+ 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 data.name else " ".join(["Name", "of", self._id])
+ data["name"]
+ if data and "name" in data
+ else " ".join(["Name", "of", self._id])
)
self._administrativeState = (
- data.administrativeState
- if data and data.administrativeState
+ data["administrativeState"]
+ if data and "administrativeState" in data
else AdministrativeState.LOCKED
)
self._operationalState = (
- data.operationalState
- if data and data.operationalState
+ data["operationalState"]
+ if data and "operationalState" in data
else OperationalState.DISABLED
)
self._lifeCycleState = (
- data.lifeCycleState
- if data and data.lifeCycleState
+ data["lifeCycleState"]
+ if data and "lifeCycleState" in data
else LifeCycleState.PLANNED
)
- self._alarmState = data.alarmState if data and data.alarmState else 0
+ self._alarmState = data["alarmState"] if data and "alarmState" in data else 0
self._usageState = (
- data.usageState if data and data.usageState else UsageState.UNUSED
+ data["usageState"] if data and "usageState" in data else UsageState.UNUSED
)
- self._utilization = data.utilization if data and data.utilization else 0
+ self._utilization = data["utilization"] if data and "utilization" in data else 0
@property
def id(self) -> str:
def utilization(self, value: Utilization):
self._utilization = value
- def json(self) -> dict[str, Any]:
+ def json(self) -> dict[str, dict]:
return {
"id": self.id,
"name": self.name,