diff --git a/homeassistant/components/vera/__init__.py b/homeassistant/components/vera/__init__.py index bbc6902007a..2e708a8b206 100644 --- a/homeassistant/components/vera/__init__.py +++ b/homeassistant/components/vera/__init__.py @@ -3,6 +3,7 @@ from __future__ import annotations import asyncio from collections import defaultdict +from collections.abc import Awaitable import logging from typing import Any, Generic, TypeVar @@ -166,7 +167,7 @@ async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> """Unload Withings config entry.""" controller_data: ControllerData = get_controller_data(hass, config_entry) - tasks = [ + tasks: list[Awaitable] = [ hass.config_entries.async_forward_entry_unload(config_entry, platform) for platform in get_configured_platforms(controller_data) ] @@ -181,7 +182,9 @@ async def _async_update_listener(hass: HomeAssistant, entry: ConfigEntry): await hass.config_entries.async_reload(entry.entry_id) -def map_vera_device(vera_device: veraApi.VeraDevice, remap: list[int]) -> Platform: +def map_vera_device( + vera_device: veraApi.VeraDevice, remap: list[int] +) -> Platform | None: """Map vera classes to Home Assistant types.""" type_map = { diff --git a/homeassistant/components/vera/binary_sensor.py b/homeassistant/components/vera/binary_sensor.py index f41ce5cfd08..57b47e6c742 100644 --- a/homeassistant/components/vera/binary_sensor.py +++ b/homeassistant/components/vera/binary_sensor.py @@ -3,12 +3,9 @@ from __future__ import annotations import pyvera as veraApi -from homeassistant.components.binary_sensor import ( - DOMAIN as PLATFORM_DOMAIN, - ENTITY_ID_FORMAT, - BinarySensorEntity, -) +from homeassistant.components.binary_sensor import ENTITY_ID_FORMAT, BinarySensorEntity from homeassistant.config_entries import ConfigEntry +from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback @@ -26,7 +23,7 @@ async def async_setup_entry( async_add_entities( [ VeraBinarySensor(device, controller_data) - for device in controller_data.devices.get(PLATFORM_DOMAIN) + for device in controller_data.devices[Platform.BINARY_SENSOR] ], True, ) diff --git a/homeassistant/components/vera/climate.py b/homeassistant/components/vera/climate.py index f5dc16cf4ae..477351480d2 100644 --- a/homeassistant/components/vera/climate.py +++ b/homeassistant/components/vera/climate.py @@ -5,11 +5,7 @@ from typing import Any import pyvera as veraApi -from homeassistant.components.climate import ( - DOMAIN as PLATFORM_DOMAIN, - ENTITY_ID_FORMAT, - ClimateEntity, -) +from homeassistant.components.climate import ENTITY_ID_FORMAT, ClimateEntity from homeassistant.components.climate.const import ( FAN_AUTO, FAN_ON, @@ -21,7 +17,12 @@ from homeassistant.components.climate.const import ( SUPPORT_TARGET_TEMPERATURE, ) from homeassistant.config_entries import ConfigEntry -from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS, TEMP_FAHRENHEIT +from homeassistant.const import ( + ATTR_TEMPERATURE, + TEMP_CELSIUS, + TEMP_FAHRENHEIT, + Platform, +) from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.util import convert @@ -45,7 +46,7 @@ async def async_setup_entry( async_add_entities( [ VeraThermostat(device, controller_data) - for device in controller_data.devices.get(PLATFORM_DOMAIN) + for device in controller_data.devices[Platform.CLIMATE] ], True, ) @@ -62,7 +63,7 @@ class VeraThermostat(VeraDevice[veraApi.VeraThermostat], ClimateEntity): self.entity_id = ENTITY_ID_FORMAT.format(self.vera_id) @property - def supported_features(self) -> int | None: + def supported_features(self) -> int: """Return the list of supported features.""" return SUPPORT_FLAGS diff --git a/homeassistant/components/vera/common.py b/homeassistant/components/vera/common.py index d352c162098..b9df7a807e6 100644 --- a/homeassistant/components/vera/common.py +++ b/homeassistant/components/vera/common.py @@ -2,7 +2,6 @@ from __future__ import annotations from collections import defaultdict -from collections.abc import Sequence from typing import NamedTuple import pyvera as pv @@ -26,7 +25,7 @@ class ControllerData(NamedTuple): def get_configured_platforms(controller_data: ControllerData) -> set[Platform]: """Get configured platforms for a controller.""" - platforms: Sequence[Platform] = [] + platforms: list[Platform] = [] for platform in controller_data.devices: platforms.append(platform) diff --git a/homeassistant/components/vera/config_flow.py b/homeassistant/components/vera/config_flow.py index ae4fdf8cefa..b2c4fe5e5db 100644 --- a/homeassistant/components/vera/config_flow.py +++ b/homeassistant/components/vera/config_flow.py @@ -1,6 +1,7 @@ """Config flow for Vera.""" from __future__ import annotations +from collections.abc import Mapping import logging import re from typing import Any @@ -41,7 +42,7 @@ def new_options(lights: list[int], exclude: list[int]) -> dict: return {CONF_LIGHTS: lights, CONF_EXCLUDE: exclude} -def options_schema(options: dict = None) -> dict: +def options_schema(options: Mapping[str, Any] = None) -> dict: """Return options schema.""" options = options or {} return { diff --git a/homeassistant/components/vera/cover.py b/homeassistant/components/vera/cover.py index 62a04d4e6f3..2f1a602ca19 100644 --- a/homeassistant/components/vera/cover.py +++ b/homeassistant/components/vera/cover.py @@ -5,13 +5,9 @@ from typing import Any import pyvera as veraApi -from homeassistant.components.cover import ( - ATTR_POSITION, - DOMAIN as PLATFORM_DOMAIN, - ENTITY_ID_FORMAT, - CoverEntity, -) +from homeassistant.components.cover import ATTR_POSITION, ENTITY_ID_FORMAT, CoverEntity from homeassistant.config_entries import ConfigEntry +from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback @@ -29,7 +25,7 @@ async def async_setup_entry( async_add_entities( [ VeraCover(device, controller_data) - for device in controller_data.devices.get(PLATFORM_DOMAIN) + for device in controller_data.devices[Platform.COVER] ], True, ) diff --git a/homeassistant/components/vera/light.py b/homeassistant/components/vera/light.py index 7f67f065c91..f54cfb8ddcc 100644 --- a/homeassistant/components/vera/light.py +++ b/homeassistant/components/vera/light.py @@ -8,13 +8,13 @@ import pyvera as veraApi from homeassistant.components.light import ( ATTR_BRIGHTNESS, ATTR_HS_COLOR, - DOMAIN as PLATFORM_DOMAIN, ENTITY_ID_FORMAT, SUPPORT_BRIGHTNESS, SUPPORT_COLOR, LightEntity, ) from homeassistant.config_entries import ConfigEntry +from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback import homeassistant.util.color as color_util @@ -33,7 +33,7 @@ async def async_setup_entry( async_add_entities( [ VeraLight(device, controller_data) - for device in controller_data.devices.get(PLATFORM_DOMAIN) + for device in controller_data.devices[Platform.LIGHT] ], True, ) @@ -47,7 +47,7 @@ class VeraLight(VeraDevice[veraApi.VeraDimmer], LightEntity): ) -> None: """Initialize the light.""" self._state = False - self._color = None + self._color: tuple[float, float] | None = None self._brightness = None VeraDevice.__init__(self, vera_device, controller_data) self.entity_id = ENTITY_ID_FORMAT.format(self.vera_id) diff --git a/homeassistant/components/vera/lock.py b/homeassistant/components/vera/lock.py index b99728d0fcf..50710030b8f 100644 --- a/homeassistant/components/vera/lock.py +++ b/homeassistant/components/vera/lock.py @@ -5,13 +5,9 @@ from typing import Any import pyvera as veraApi -from homeassistant.components.lock import ( - DOMAIN as PLATFORM_DOMAIN, - ENTITY_ID_FORMAT, - LockEntity, -) +from homeassistant.components.lock import ENTITY_ID_FORMAT, LockEntity from homeassistant.config_entries import ConfigEntry -from homeassistant.const import STATE_LOCKED, STATE_UNLOCKED +from homeassistant.const import STATE_LOCKED, STATE_UNLOCKED, Platform from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback @@ -32,7 +28,7 @@ async def async_setup_entry( async_add_entities( [ VeraLock(device, controller_data) - for device in controller_data.devices.get(PLATFORM_DOMAIN) + for device in controller_data.devices[Platform.LOCK] ], True, ) @@ -45,7 +41,7 @@ class VeraLock(VeraDevice[veraApi.VeraLock], LockEntity): self, vera_device: veraApi.VeraLock, controller_data: ControllerData ) -> None: """Initialize the Vera device.""" - self._state = None + self._state: str | None = None VeraDevice.__init__(self, vera_device, controller_data) self.entity_id = ENTITY_ID_FORMAT.format(self.vera_id) @@ -72,7 +68,7 @@ class VeraLock(VeraDevice[veraApi.VeraLock], LockEntity): changed_by_name is a string like 'Bob'. low_battery is 1 if an alert fired, 0 otherwise. """ - data = super().extra_state_attributes + data = super().extra_state_attributes or {} last_user = self.vera_device.get_last_user_alert() if last_user is not None: diff --git a/homeassistant/components/vera/sensor.py b/homeassistant/components/vera/sensor.py index dd6d891c11d..f306d09bf77 100644 --- a/homeassistant/components/vera/sensor.py +++ b/homeassistant/components/vera/sensor.py @@ -6,16 +6,18 @@ from typing import cast import pyvera as veraApi -from homeassistant.components.sensor import ( - DOMAIN as PLATFORM_DOMAIN, - ENTITY_ID_FORMAT, - SensorEntity, -) +from homeassistant.components.sensor import ENTITY_ID_FORMAT, SensorEntity from homeassistant.config_entries import ConfigEntry -from homeassistant.const import LIGHT_LUX, PERCENTAGE, TEMP_CELSIUS, TEMP_FAHRENHEIT +from homeassistant.const import ( + LIGHT_LUX, + PERCENTAGE, + TEMP_CELSIUS, + TEMP_FAHRENHEIT, + Platform, +) from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from homeassistant.util import convert +from homeassistant.helpers.typing import StateType from . import VeraDevice from .common import ControllerData, get_controller_data @@ -33,7 +35,7 @@ async def async_setup_entry( async_add_entities( [ VeraSensor(device, controller_data) - for device in controller_data.devices.get(PLATFORM_DOMAIN) + for device in controller_data.devices[Platform.SENSOR] ], True, ) @@ -46,14 +48,14 @@ class VeraSensor(VeraDevice[veraApi.VeraSensor], SensorEntity): self, vera_device: veraApi.VeraSensor, controller_data: ControllerData ) -> None: """Initialize the sensor.""" - self.current_value = None - self._temperature_units = None + self.current_value: StateType = None + self._temperature_units: str | None = None self.last_changed_time = None VeraDevice.__init__(self, vera_device, controller_data) self.entity_id = ENTITY_ID_FORMAT.format(self.vera_id) @property - def native_value(self) -> str: + def native_value(self) -> StateType: """Return the name of the sensor.""" return self.current_value @@ -71,6 +73,7 @@ class VeraSensor(VeraDevice[veraApi.VeraSensor], SensorEntity): return PERCENTAGE if self.vera_device.category == veraApi.CATEGORY_POWER_METER: return "watts" + return None def update(self) -> None: """Update the state.""" @@ -101,8 +104,7 @@ class VeraSensor(VeraDevice[veraApi.VeraSensor], SensorEntity): self.current_value = value self.last_changed_time = time elif self.vera_device.category == veraApi.CATEGORY_POWER_METER: - power = convert(self.vera_device.power, float, 0) - self.current_value = int(round(power, 0)) + self.current_value = self.vera_device.power elif self.vera_device.is_trippable: tripped = self.vera_device.is_tripped self.current_value = "Tripped" if tripped else "Not Tripped" diff --git a/homeassistant/components/vera/switch.py b/homeassistant/components/vera/switch.py index 9f44bb28286..f1de72870f7 100644 --- a/homeassistant/components/vera/switch.py +++ b/homeassistant/components/vera/switch.py @@ -5,12 +5,9 @@ from typing import Any import pyvera as veraApi -from homeassistant.components.switch import ( - DOMAIN as PLATFORM_DOMAIN, - ENTITY_ID_FORMAT, - SwitchEntity, -) +from homeassistant.components.switch import ENTITY_ID_FORMAT, SwitchEntity from homeassistant.config_entries import ConfigEntry +from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.util import convert @@ -29,7 +26,7 @@ async def async_setup_entry( async_add_entities( [ VeraSwitch(device, controller_data) - for device in controller_data.devices.get(PLATFORM_DOMAIN) + for device in controller_data.devices[Platform.SWITCH] ], True, ) diff --git a/mypy.ini b/mypy.ini index 4a38c798eba..3eb3d8b3019 100644 --- a/mypy.ini +++ b/mypy.ini @@ -2236,9 +2236,6 @@ ignore_errors = true [mypy-homeassistant.components.upnp.*] ignore_errors = true -[mypy-homeassistant.components.vera.*] -ignore_errors = true - [mypy-homeassistant.components.vizio.*] ignore_errors = true diff --git a/script/hassfest/mypy_config.py b/script/hassfest/mypy_config.py index 7255bc202c2..d8038e7acf9 100644 --- a/script/hassfest/mypy_config.py +++ b/script/hassfest/mypy_config.py @@ -87,7 +87,6 @@ IGNORED_MODULES: Final[list[str]] = [ "homeassistant.components.toon.*", "homeassistant.components.unifi.*", "homeassistant.components.upnp.*", - "homeassistant.components.vera.*", "homeassistant.components.vizio.*", "homeassistant.components.withings.*", "homeassistant.components.xbox.*",