Use attrs instead of properties in Brother (#51742)

* Use attrs instead of properties

* Use get() for device_class
This commit is contained in:
Maciej Bieniek 2021-06-11 13:36:17 +02:00 committed by GitHub
parent 7d03b02192
commit 343e0e0933
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 46 deletions

View File

@ -4,7 +4,12 @@ from __future__ import annotations
from typing import Final
from homeassistant.components.sensor import ATTR_STATE_CLASS, STATE_CLASS_MEASUREMENT
from homeassistant.const import ATTR_ICON, PERCENTAGE
from homeassistant.const import (
ATTR_DEVICE_CLASS,
ATTR_ICON,
DEVICE_CLASS_TIMESTAMP,
PERCENTAGE,
)
from .model import SensorDescription
@ -247,5 +252,6 @@ SENSOR_TYPES: Final[dict[str, SensorDescription]] = {
ATTR_UNIT: None,
ATTR_ENABLED: False,
ATTR_STATE_CLASS: None,
ATTR_DEVICE_CLASS: DEVICE_CLASS_TIMESTAMP,
},
}

View File

@ -4,7 +4,7 @@ from __future__ import annotations
from typing import TypedDict
class SensorDescription(TypedDict):
class SensorDescription(TypedDict, total=False):
"""Sensor description class."""
icon: str | None
@ -12,3 +12,4 @@ class SensorDescription(TypedDict):
unit: str | None
enabled: bool
state_class: str | None
device_class: str | None

View File

@ -5,7 +5,7 @@ from typing import Any
from homeassistant.components.sensor import ATTR_STATE_CLASS, SensorEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_ICON, DEVICE_CLASS_TIMESTAMP
from homeassistant.const import ATTR_DEVICE_CLASS, ATTR_ICON
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@ -60,18 +60,17 @@ class BrotherPrinterSensor(CoordinatorEntity, SensorEntity):
) -> None:
"""Initialize."""
super().__init__(coordinator)
self._description = SENSOR_TYPES[kind]
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
description = SENSOR_TYPES[kind]
self._attrs: dict[str, Any] = {}
self._attr_state_class = self._description[ATTR_STATE_CLASS]
@property
def name(self) -> str:
"""Return the name."""
return self._name
self._attr_device_class = description.get(ATTR_DEVICE_CLASS)
self._attr_device_info = device_info
self._attr_entity_registry_enabled_default = description[ATTR_ENABLED]
self._attr_icon = description[ATTR_ICON]
self._attr_name = f"{coordinator.data.model} {description[ATTR_LABEL]}"
self._attr_state_class = description[ATTR_STATE_CLASS]
self._attr_unique_id = f"{coordinator.data.serial.lower()}_{kind}"
self._attr_unit_of_measurement = description[ATTR_UNIT]
self.kind = kind
@property
def state(self) -> Any:
@ -80,13 +79,6 @@ class BrotherPrinterSensor(CoordinatorEntity, SensorEntity):
return getattr(self.coordinator.data, self.kind).isoformat()
return getattr(self.coordinator.data, self.kind)
@property
def device_class(self) -> str | None:
"""Return the class of this sensor."""
if self.kind == ATTR_UPTIME:
return DEVICE_CLASS_TIMESTAMP
return None
@property
def extra_state_attributes(self) -> dict[str, Any]:
"""Return the state attributes."""
@ -97,28 +89,3 @@ class BrotherPrinterSensor(CoordinatorEntity, SensorEntity):
)
self._attrs[ATTR_COUNTER] = getattr(self.coordinator.data, drum_counter)
return self._attrs
@property
def icon(self) -> str | None:
"""Return the icon."""
return self._description[ATTR_ICON]
@property
def unique_id(self) -> str:
"""Return a unique_id for this entity."""
return self._unique_id
@property
def unit_of_measurement(self) -> str | None:
"""Return the unit the value is expressed in."""
return self._description[ATTR_UNIT]
@property
def device_info(self) -> DeviceInfo:
"""Return the device info."""
return self._device_info
@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[ATTR_ENABLED]