Use constants with TypedDict (#50879)

This commit is contained in:
Maciej Bieniek 2021-05-20 11:34:32 +02:00 committed by GitHub
parent ccd8e1332c
commit 3bdefc5da7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 22 deletions

View File

@ -4,6 +4,8 @@ from __future__ import annotations
from typing import Final from typing import Final
from homeassistant.const import ( from homeassistant.const import (
ATTR_DEVICE_CLASS,
ATTR_ICON,
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
DEVICE_CLASS_HUMIDITY, DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_PRESSURE, DEVICE_CLASS_PRESSURE,
@ -20,15 +22,17 @@ ATTR_API_CAQI: Final = "CAQI"
ATTR_API_CAQI_DESCRIPTION: Final = "DESCRIPTION" ATTR_API_CAQI_DESCRIPTION: Final = "DESCRIPTION"
ATTR_API_CAQI_LEVEL: Final = "LEVEL" ATTR_API_CAQI_LEVEL: Final = "LEVEL"
ATTR_API_HUMIDITY: Final = "HUMIDITY" ATTR_API_HUMIDITY: Final = "HUMIDITY"
ATTR_API_PM1: Final = "PM1"
ATTR_API_PM10: Final = "PM10" ATTR_API_PM10: Final = "PM10"
ATTR_API_PM10_LIMIT: Final = "PM10_LIMIT" ATTR_API_PM10_LIMIT: Final = "PM10_LIMIT"
ATTR_API_PM10_PERCENT: Final = "PM10_PERCENT" ATTR_API_PM10_PERCENT: Final = "PM10_PERCENT"
ATTR_API_PM1: Final = "PM1"
ATTR_API_PM25: Final = "PM25" ATTR_API_PM25: Final = "PM25"
ATTR_API_PM25_LIMIT: Final = "PM25_LIMIT" ATTR_API_PM25_LIMIT: Final = "PM25_LIMIT"
ATTR_API_PM25_PERCENT: Final = "PM25_PERCENT" ATTR_API_PM25_PERCENT: Final = "PM25_PERCENT"
ATTR_API_PRESSURE: Final = "PRESSURE" ATTR_API_PRESSURE: Final = "PRESSURE"
ATTR_API_TEMPERATURE: Final = "TEMPERATURE" ATTR_API_TEMPERATURE: Final = "TEMPERATURE"
ATTR_LABEL: Final = "label"
ATTR_UNIT: Final = "unit"
ATTRIBUTION: Final = "Data provided by Airly" ATTRIBUTION: Final = "Data provided by Airly"
CONF_USE_NEAREST: Final = "use_nearest" CONF_USE_NEAREST: Final = "use_nearest"
@ -42,27 +46,27 @@ NO_AIRLY_SENSORS: Final = "There are no Airly sensors in this area yet."
SENSOR_TYPES: dict[str, SensorDescription] = { SENSOR_TYPES: dict[str, SensorDescription] = {
ATTR_API_PM1: { ATTR_API_PM1: {
"device_class": None, ATTR_DEVICE_CLASS: None,
"icon": "mdi:blur", ATTR_ICON: "mdi:blur",
"label": ATTR_API_PM1, ATTR_LABEL: ATTR_API_PM1,
"unit": CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, ATTR_UNIT: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
}, },
ATTR_API_HUMIDITY: { ATTR_API_HUMIDITY: {
"device_class": DEVICE_CLASS_HUMIDITY, ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY,
"icon": None, ATTR_ICON: None,
"label": ATTR_API_HUMIDITY.capitalize(), ATTR_LABEL: ATTR_API_HUMIDITY.capitalize(),
"unit": PERCENTAGE, ATTR_UNIT: PERCENTAGE,
}, },
ATTR_API_PRESSURE: { ATTR_API_PRESSURE: {
"device_class": DEVICE_CLASS_PRESSURE, ATTR_DEVICE_CLASS: DEVICE_CLASS_PRESSURE,
"icon": None, ATTR_ICON: None,
"label": ATTR_API_PRESSURE.capitalize(), ATTR_LABEL: ATTR_API_PRESSURE.capitalize(),
"unit": PRESSURE_HPA, ATTR_UNIT: PRESSURE_HPA,
}, },
ATTR_API_TEMPERATURE: { ATTR_API_TEMPERATURE: {
"device_class": DEVICE_CLASS_TEMPERATURE, ATTR_DEVICE_CLASS: DEVICE_CLASS_TEMPERATURE,
"icon": None, ATTR_ICON: None,
"label": ATTR_API_TEMPERATURE.capitalize(), ATTR_LABEL: ATTR_API_TEMPERATURE.capitalize(),
"unit": TEMP_CELSIUS, ATTR_UNIT: TEMP_CELSIUS,
}, },
} }

View File

@ -5,7 +5,12 @@ from typing import Any, cast
from homeassistant.components.sensor import SensorEntity from homeassistant.components.sensor import SensorEntity
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_ATTRIBUTION, CONF_NAME from homeassistant.const import (
ATTR_ATTRIBUTION,
ATTR_DEVICE_CLASS,
ATTR_ICON,
CONF_NAME,
)
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
@ -16,6 +21,8 @@ from . import AirlyDataUpdateCoordinator
from .const import ( from .const import (
ATTR_API_PM1, ATTR_API_PM1,
ATTR_API_PRESSURE, ATTR_API_PRESSURE,
ATTR_LABEL,
ATTR_UNIT,
ATTRIBUTION, ATTRIBUTION,
DEFAULT_NAME, DEFAULT_NAME,
DOMAIN, DOMAIN,
@ -63,7 +70,7 @@ class AirlySensor(CoordinatorEntity, SensorEntity):
@property @property
def name(self) -> str: def name(self) -> str:
"""Return the name.""" """Return the name."""
return f"{self._name} {self._description['label']}" return f"{self._name} {self._description[ATTR_LABEL]}"
@property @property
def state(self) -> StateType: def state(self) -> StateType:
@ -81,12 +88,12 @@ class AirlySensor(CoordinatorEntity, SensorEntity):
@property @property
def icon(self) -> str | None: def icon(self) -> str | None:
"""Return the icon.""" """Return the icon."""
return self._description["icon"] return self._description[ATTR_ICON]
@property @property
def device_class(self) -> str | None: def device_class(self) -> str | None:
"""Return the device_class.""" """Return the device_class."""
return self._description["device_class"] return self._description[ATTR_DEVICE_CLASS]
@property @property
def unique_id(self) -> str: def unique_id(self) -> str:
@ -111,4 +118,4 @@ class AirlySensor(CoordinatorEntity, SensorEntity):
@property @property
def unit_of_measurement(self) -> str | None: def unit_of_measurement(self) -> str | None:
"""Return the unit the value is expressed in.""" """Return the unit the value is expressed in."""
return self._description["unit"] return self._description[ATTR_UNIT]