diff --git a/homeassistant/components/awair/config_flow.py b/homeassistant/components/awair/config_flow.py index 2214fc30519..4c4ccad8f52 100644 --- a/homeassistant/components/awair/config_flow.py +++ b/homeassistant/components/awair/config_flow.py @@ -69,6 +69,7 @@ class AwairFlowHandler(ConfigFlow, domain=DOMAIN): if error is None: entry = await self.async_set_unique_id(self.unique_id) + assert entry self.hass.config_entries.async_update_entry(entry, data=user_input) return self.async_abort(reason="reauth_successful") diff --git a/homeassistant/components/awair/const.py b/homeassistant/components/awair/const.py index 4968e86bcf5..68ca3335d97 100644 --- a/homeassistant/components/awair/const.py +++ b/homeassistant/components/awair/const.py @@ -5,6 +5,7 @@ from dataclasses import dataclass from datetime import timedelta import logging +from python_awair.air_data import AirData from python_awair.devices import AwairDevice from homeassistant.components.sensor import SensorEntityDescription @@ -134,4 +135,4 @@ class AwairResult: """Wrapper class to hold an awair device and set of air data.""" device: AwairDevice - air_data: dict + air_data: AirData diff --git a/homeassistant/components/awair/sensor.py b/homeassistant/components/awair/sensor.py index 1ff1b6e0efb..4e67e56cfe3 100644 --- a/homeassistant/components/awair/sensor.py +++ b/homeassistant/components/awair/sensor.py @@ -1,12 +1,13 @@ """Support for Awair sensors.""" from __future__ import annotations +from python_awair.air_data import AirData from python_awair.devices import AwairDevice import voluptuous as vol from homeassistant.components.awair import AwairDataUpdateCoordinator, AwairResult from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity -from homeassistant.config_entries import SOURCE_IMPORT +from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry from homeassistant.const import ( ATTR_ATTRIBUTION, ATTR_CONNECTIONS, @@ -18,7 +19,6 @@ from homeassistant.helpers import device_registry as dr import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback -from homeassistant.helpers.typing import ConfigType from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import ( @@ -59,7 +59,7 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info= async def async_setup_entry( hass: HomeAssistant, - config_entry: ConfigType, + config_entry: ConfigEntry, async_add_entities: AddEntitiesCallback, ): """Set up Awair sensor entity based on a config entry.""" @@ -131,6 +131,7 @@ class AwairSensor(CoordinatorEntity, SensorEntity): # for users with first-gen devices that are upgrading. if ( self.entity_description.key == API_PM25 + and self._air_data and API_DUST in self._air_data.sensors ): unique_id_tag = "DUST" @@ -161,8 +162,11 @@ class AwairSensor(CoordinatorEntity, SensorEntity): return False @property - def native_value(self) -> float: + def native_value(self) -> float | None: """Return the state, rounding off to reasonable values.""" + if not self._air_data: + return None + state: float sensor_type = self.entity_description.key @@ -206,6 +210,8 @@ class AwairSensor(CoordinatorEntity, SensorEntity): """ sensor_type = self.entity_description.key attrs = {ATTR_ATTRIBUTION: ATTRIBUTION} + if not self._air_data: + return attrs if sensor_type in self._air_data.indices: attrs["awair_index"] = abs(self._air_data.indices[sensor_type]) elif sensor_type in DUST_ALIASES and API_DUST in self._air_data.indices: @@ -233,7 +239,7 @@ class AwairSensor(CoordinatorEntity, SensorEntity): return info @property - def _air_data(self) -> AwairResult | None: + def _air_data(self) -> AirData | None: """Return the latest data for our device, or None.""" result: AwairResult | None = self.coordinator.data.get(self._device.uuid) if result: diff --git a/mypy.ini b/mypy.ini index 88b10fe06ab..6e9cc991f7f 100644 --- a/mypy.ini +++ b/mypy.ini @@ -1672,9 +1672,6 @@ no_implicit_optional = false warn_return_any = false warn_unreachable = false -[mypy-homeassistant.components.awair.*] -ignore_errors = true - [mypy-homeassistant.components.blueprint.*] ignore_errors = true diff --git a/script/hassfest/mypy_config.py b/script/hassfest/mypy_config.py index cf1faadc72e..41dfa1ad05e 100644 --- a/script/hassfest/mypy_config.py +++ b/script/hassfest/mypy_config.py @@ -14,7 +14,6 @@ from .model import Config, Integration # remove your component from this list to enable type checks. # Do your best to not add anything new here. IGNORED_MODULES: Final[list[str]] = [ - "homeassistant.components.awair.*", "homeassistant.components.blueprint.*", "homeassistant.components.climacell.*", "homeassistant.components.config.*",