Use constants with TypedDict (#50880)
This commit is contained in:
parent
3bdefc5da7
commit
953e6ebe62
2 changed files with 108 additions and 102 deletions
|
@ -3,7 +3,7 @@ from __future__ import annotations
|
|||
|
||||
from typing import Final
|
||||
|
||||
from homeassistant.const import PERCENTAGE
|
||||
from homeassistant.const import ATTR_ICON, PERCENTAGE
|
||||
|
||||
from .model import SensorDescription
|
||||
|
||||
|
@ -25,7 +25,9 @@ ATTR_DRUM_COUNTER: Final = "drum_counter"
|
|||
ATTR_DRUM_REMAINING_LIFE: Final = "drum_remaining_life"
|
||||
ATTR_DRUM_REMAINING_PAGES: Final = "drum_remaining_pages"
|
||||
ATTR_DUPLEX_COUNTER: Final = "duplex_unit_pages_counter"
|
||||
ATTR_ENABLED: Final = "enabled"
|
||||
ATTR_FUSER_REMAINING_LIFE: Final = "fuser_remaining_life"
|
||||
ATTR_LABEL: Final = "label"
|
||||
ATTR_LASER_REMAINING_LIFE: Final = "laser_remaining_life"
|
||||
ATTR_MAGENTA_DRUM_COUNTER: Final = "magenta_drum_counter"
|
||||
ATTR_MAGENTA_DRUM_REMAINING_LIFE: Final = "magenta_drum_remaining_life"
|
||||
|
@ -38,6 +40,7 @@ ATTR_PF_KIT_1_REMAINING_LIFE: Final = "pf_kit_1_remaining_life"
|
|||
ATTR_PF_KIT_MP_REMAINING_LIFE: Final = "pf_kit_mp_remaining_life"
|
||||
ATTR_REMAINING_PAGES: Final = "remaining_pages"
|
||||
ATTR_STATUS: Final = "status"
|
||||
ATTR_UNIT: Final = "unit"
|
||||
ATTR_UPTIME: Final = "uptime"
|
||||
ATTR_YELLOW_DRUM_COUNTER: Final = "yellow_drum_counter"
|
||||
ATTR_YELLOW_DRUM_REMAINING_LIFE: Final = "yellow_drum_remaining_life"
|
||||
|
@ -77,147 +80,147 @@ ATTRS_MAP: Final[dict[str, tuple[str, str]]] = {
|
|||
|
||||
SENSOR_TYPES: Final[dict[str, SensorDescription]] = {
|
||||
ATTR_STATUS: {
|
||||
"icon": "mdi:printer",
|
||||
"label": ATTR_STATUS.title(),
|
||||
"unit": None,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:printer",
|
||||
ATTR_LABEL: ATTR_STATUS.title(),
|
||||
ATTR_UNIT: None,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_PAGE_COUNTER: {
|
||||
"icon": "mdi:file-document-outline",
|
||||
"label": ATTR_PAGE_COUNTER.replace("_", " ").title(),
|
||||
"unit": UNIT_PAGES,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:file-document-outline",
|
||||
ATTR_LABEL: ATTR_PAGE_COUNTER.replace("_", " ").title(),
|
||||
ATTR_UNIT: UNIT_PAGES,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_BW_COUNTER: {
|
||||
"icon": "mdi:file-document-outline",
|
||||
"label": ATTR_BW_COUNTER.replace("_", " ").title(),
|
||||
"unit": UNIT_PAGES,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:file-document-outline",
|
||||
ATTR_LABEL: ATTR_BW_COUNTER.replace("_", " ").title(),
|
||||
ATTR_UNIT: UNIT_PAGES,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_COLOR_COUNTER: {
|
||||
"icon": "mdi:file-document-outline",
|
||||
"label": ATTR_COLOR_COUNTER.replace("_", " ").title(),
|
||||
"unit": UNIT_PAGES,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:file-document-outline",
|
||||
ATTR_LABEL: ATTR_COLOR_COUNTER.replace("_", " ").title(),
|
||||
ATTR_UNIT: UNIT_PAGES,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_DUPLEX_COUNTER: {
|
||||
"icon": "mdi:file-document-outline",
|
||||
"label": ATTR_DUPLEX_COUNTER.replace("_", " ").title(),
|
||||
"unit": UNIT_PAGES,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:file-document-outline",
|
||||
ATTR_LABEL: ATTR_DUPLEX_COUNTER.replace("_", " ").title(),
|
||||
ATTR_UNIT: UNIT_PAGES,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_DRUM_REMAINING_LIFE: {
|
||||
"icon": "mdi:chart-donut",
|
||||
"label": ATTR_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:chart-donut",
|
||||
ATTR_LABEL: ATTR_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_BLACK_DRUM_REMAINING_LIFE: {
|
||||
"icon": "mdi:chart-donut",
|
||||
"label": ATTR_BLACK_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:chart-donut",
|
||||
ATTR_LABEL: ATTR_BLACK_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_CYAN_DRUM_REMAINING_LIFE: {
|
||||
"icon": "mdi:chart-donut",
|
||||
"label": ATTR_CYAN_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:chart-donut",
|
||||
ATTR_LABEL: ATTR_CYAN_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_MAGENTA_DRUM_REMAINING_LIFE: {
|
||||
"icon": "mdi:chart-donut",
|
||||
"label": ATTR_MAGENTA_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:chart-donut",
|
||||
ATTR_LABEL: ATTR_MAGENTA_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_YELLOW_DRUM_REMAINING_LIFE: {
|
||||
"icon": "mdi:chart-donut",
|
||||
"label": ATTR_YELLOW_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:chart-donut",
|
||||
ATTR_LABEL: ATTR_YELLOW_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_BELT_UNIT_REMAINING_LIFE: {
|
||||
"icon": "mdi:current-ac",
|
||||
"label": ATTR_BELT_UNIT_REMAINING_LIFE.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:current-ac",
|
||||
ATTR_LABEL: ATTR_BELT_UNIT_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_FUSER_REMAINING_LIFE: {
|
||||
"icon": "mdi:water-outline",
|
||||
"label": ATTR_FUSER_REMAINING_LIFE.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:water-outline",
|
||||
ATTR_LABEL: ATTR_FUSER_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_LASER_REMAINING_LIFE: {
|
||||
"icon": "mdi:spotlight-beam",
|
||||
"label": ATTR_LASER_REMAINING_LIFE.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:spotlight-beam",
|
||||
ATTR_LABEL: ATTR_LASER_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_PF_KIT_1_REMAINING_LIFE: {
|
||||
"icon": "mdi:printer-3d",
|
||||
"label": ATTR_PF_KIT_1_REMAINING_LIFE.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:printer-3d",
|
||||
ATTR_LABEL: ATTR_PF_KIT_1_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_PF_KIT_MP_REMAINING_LIFE: {
|
||||
"icon": "mdi:printer-3d",
|
||||
"label": ATTR_PF_KIT_MP_REMAINING_LIFE.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:printer-3d",
|
||||
ATTR_LABEL: ATTR_PF_KIT_MP_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_BLACK_TONER_REMAINING: {
|
||||
"icon": "mdi:printer-3d-nozzle",
|
||||
"label": ATTR_BLACK_TONER_REMAINING.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_BLACK_TONER_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_CYAN_TONER_REMAINING: {
|
||||
"icon": "mdi:printer-3d-nozzle",
|
||||
"label": ATTR_CYAN_TONER_REMAINING.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_CYAN_TONER_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_MAGENTA_TONER_REMAINING: {
|
||||
"icon": "mdi:printer-3d-nozzle",
|
||||
"label": ATTR_MAGENTA_TONER_REMAINING.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_MAGENTA_TONER_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_YELLOW_TONER_REMAINING: {
|
||||
"icon": "mdi:printer-3d-nozzle",
|
||||
"label": ATTR_YELLOW_TONER_REMAINING.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_YELLOW_TONER_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_BLACK_INK_REMAINING: {
|
||||
"icon": "mdi:printer-3d-nozzle",
|
||||
"label": ATTR_BLACK_INK_REMAINING.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_BLACK_INK_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_CYAN_INK_REMAINING: {
|
||||
"icon": "mdi:printer-3d-nozzle",
|
||||
"label": ATTR_CYAN_INK_REMAINING.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_CYAN_INK_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_MAGENTA_INK_REMAINING: {
|
||||
"icon": "mdi:printer-3d-nozzle",
|
||||
"label": ATTR_MAGENTA_INK_REMAINING.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_MAGENTA_INK_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_YELLOW_INK_REMAINING: {
|
||||
"icon": "mdi:printer-3d-nozzle",
|
||||
"label": ATTR_YELLOW_INK_REMAINING.replace("_", " ").title(),
|
||||
"unit": PERCENTAGE,
|
||||
"enabled": True,
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_YELLOW_INK_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_UPTIME: {
|
||||
"icon": None,
|
||||
"label": ATTR_UPTIME.title(),
|
||||
"unit": None,
|
||||
"enabled": False,
|
||||
ATTR_ICON: None,
|
||||
ATTR_LABEL: ATTR_UPTIME.title(),
|
||||
ATTR_UNIT: None,
|
||||
ATTR_ENABLED: False,
|
||||
},
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ from typing import Any
|
|||
|
||||
from homeassistant.components.sensor import SensorEntity
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import DEVICE_CLASS_TIMESTAMP
|
||||
from homeassistant.const import ATTR_ICON, DEVICE_CLASS_TIMESTAMP
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity import DeviceInfo
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
@ -14,8 +14,11 @@ from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
|||
from . import BrotherDataUpdateCoordinator
|
||||
from .const import (
|
||||
ATTR_COUNTER,
|
||||
ATTR_ENABLED,
|
||||
ATTR_LABEL,
|
||||
ATTR_MANUFACTURER,
|
||||
ATTR_REMAINING_PAGES,
|
||||
ATTR_UNIT,
|
||||
ATTR_UPTIME,
|
||||
ATTRS_MAP,
|
||||
DATA_CONFIG_ENTRY,
|
||||
|
@ -58,7 +61,7 @@ class BrotherPrinterSensor(CoordinatorEntity, SensorEntity):
|
|||
"""Initialize."""
|
||||
super().__init__(coordinator)
|
||||
self._description = SENSOR_TYPES[kind]
|
||||
self._name = f"{coordinator.data.model} {self._description['label']}"
|
||||
self._name = f"{coordinator.data.model} {self._description[ATTR_LABEL]}"
|
||||
self._unique_id = f"{coordinator.data.serial.lower()}_{kind}"
|
||||
self._device_info = device_info
|
||||
self.kind = kind
|
||||
|
@ -97,7 +100,7 @@ class BrotherPrinterSensor(CoordinatorEntity, SensorEntity):
|
|||
@property
|
||||
def icon(self) -> str | None:
|
||||
"""Return the icon."""
|
||||
return self._description["icon"]
|
||||
return self._description[ATTR_ICON]
|
||||
|
||||
@property
|
||||
def unique_id(self) -> str:
|
||||
|
@ -107,7 +110,7 @@ class BrotherPrinterSensor(CoordinatorEntity, SensorEntity):
|
|||
@property
|
||||
def unit_of_measurement(self) -> str | None:
|
||||
"""Return the unit the value is expressed in."""
|
||||
return self._description["unit"]
|
||||
return self._description[ATTR_UNIT]
|
||||
|
||||
@property
|
||||
def device_info(self) -> DeviceInfo:
|
||||
|
@ -117,4 +120,4 @@ class BrotherPrinterSensor(CoordinatorEntity, SensorEntity):
|
|||
@property
|
||||
def entity_registry_enabled_default(self) -> bool:
|
||||
"""Return if the entity should be enabled when first added to the entity registry."""
|
||||
return self._description["enabled"]
|
||||
return self._description[ATTR_ENABLED]
|
||||
|
|
Loading…
Add table
Reference in a new issue