1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
"""
Model for a Zwave Node's device class.
https://zwave-js.github.io/node-zwave-js/#/api/node?id=deviceclass
"""
from __future__ import annotations
from dataclasses import dataclass
from typing import TypedDict
class DeviceClassItemDataType(TypedDict):
"""Represent a device class data dict type."""
key: int
label: str
class DeviceClassDataType(TypedDict):
"""Represent a device class data dict type."""
basic: DeviceClassItemDataType
generic: DeviceClassItemDataType
specific: DeviceClassItemDataType
@dataclass
class DeviceClassItem:
"""Model for a DeviceClass item (e.g. basic or generic)."""
key: int
label: str
class DeviceClass:
"""Model for a Zwave Node's device class."""
def __init__(self, data: DeviceClassDataType) -> None:
"""Initialize."""
self._basic = DeviceClassItem(
key=data["basic"]["key"],
label=data["basic"]["label"],
)
self._generic = DeviceClassItem(
key=data["generic"]["key"],
label=data["generic"]["label"],
)
self._specific = DeviceClassItem(
key=data["specific"]["key"],
label=data["specific"]["label"],
)
@property
def basic(self) -> DeviceClassItem:
"""Return basic DeviceClass."""
return self._basic
@property
def generic(self) -> DeviceClassItem:
"""Return generic DeviceClass."""
return self._generic
@property
def specific(self) -> DeviceClassItem:
"""Return specific DeviceClass."""
return self._specific
|