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 homeassistant.const import (
ATTR_DEVICE_CLASS,
ATTR_ICON,
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_PRESSURE,
@ -20,15 +22,17 @@ ATTR_API_CAQI: Final = "CAQI"
ATTR_API_CAQI_DESCRIPTION: Final = "DESCRIPTION"
ATTR_API_CAQI_LEVEL: Final = "LEVEL"
ATTR_API_HUMIDITY: Final = "HUMIDITY"
ATTR_API_PM1: Final = "PM1"
ATTR_API_PM10: Final = "PM10"
ATTR_API_PM10_LIMIT: Final = "PM10_LIMIT"
ATTR_API_PM10_PERCENT: Final = "PM10_PERCENT"
ATTR_API_PM1: Final = "PM1"
ATTR_API_PM25: Final = "PM25"
ATTR_API_PM25_LIMIT: Final = "PM25_LIMIT"
ATTR_API_PM25_PERCENT: Final = "PM25_PERCENT"
ATTR_API_PRESSURE: Final = "PRESSURE"
ATTR_API_TEMPERATURE: Final = "TEMPERATURE"
ATTR_LABEL: Final = "label"
ATTR_UNIT: Final = "unit"
ATTRIBUTION: Final = "Data provided by Airly"
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] = {
ATTR_API_PM1: {
"device_class": None,
"icon": "mdi:blur",
"label": ATTR_API_PM1,
"unit": CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:blur",
ATTR_LABEL: ATTR_API_PM1,
ATTR_UNIT: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
},
ATTR_API_HUMIDITY: {
"device_class": DEVICE_CLASS_HUMIDITY,
"icon": None,
"label": ATTR_API_HUMIDITY.capitalize(),
"unit": PERCENTAGE,
ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY,
ATTR_ICON: None,
ATTR_LABEL: ATTR_API_HUMIDITY.capitalize(),
ATTR_UNIT: PERCENTAGE,
},
ATTR_API_PRESSURE: {
"device_class": DEVICE_CLASS_PRESSURE,
"icon": None,
"label": ATTR_API_PRESSURE.capitalize(),
"unit": PRESSURE_HPA,
ATTR_DEVICE_CLASS: DEVICE_CLASS_PRESSURE,
ATTR_ICON: None,
ATTR_LABEL: ATTR_API_PRESSURE.capitalize(),
ATTR_UNIT: PRESSURE_HPA,
},
ATTR_API_TEMPERATURE: {
"device_class": DEVICE_CLASS_TEMPERATURE,
"icon": None,
"label": ATTR_API_TEMPERATURE.capitalize(),
"unit": TEMP_CELSIUS,
ATTR_DEVICE_CLASS: DEVICE_CLASS_TEMPERATURE,
ATTR_ICON: None,
ATTR_LABEL: ATTR_API_TEMPERATURE.capitalize(),
ATTR_UNIT: TEMP_CELSIUS,
},
}

View File

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