diff --git a/homeassistant/components/melcloud/__init__.py b/homeassistant/components/melcloud/__init__.py index 6342c2bc3be..1bb65a943f8 100644 --- a/homeassistant/components/melcloud/__init__.py +++ b/homeassistant/components/melcloud/__init__.py @@ -142,7 +142,7 @@ class MelCloudDevice: ) -async def mel_devices_setup(hass, token) -> list[MelCloudDevice]: +async def mel_devices_setup(hass, token) -> dict[str, list[MelCloudDevice]]: """Query connected devices from MELCloud.""" session = async_get_clientsession(hass) try: @@ -156,7 +156,7 @@ async def mel_devices_setup(hass, token) -> list[MelCloudDevice]: except (asyncio.TimeoutError, ClientConnectionError) as ex: raise ConfigEntryNotReady() from ex - wrapped_devices = {} + wrapped_devices: dict[str, list[MelCloudDevice]] = {} for device_type, devices in all_devices.items(): wrapped_devices[device_type] = [MelCloudDevice(device) for device in devices] return wrapped_devices diff --git a/homeassistant/components/melcloud/climate.py b/homeassistant/components/melcloud/climate.py index b16221923de..a0ffe3a68bb 100644 --- a/homeassistant/components/melcloud/climate.py +++ b/homeassistant/components/melcloud/climate.py @@ -66,16 +66,19 @@ async def async_setup_entry( ) -> None: """Set up MelCloud device climate based on config_entry.""" mel_devices = hass.data[DOMAIN][entry.entry_id] - async_add_entities( + entities: list[AtaDeviceClimate | AtwDeviceZoneClimate] = [ + AtaDeviceClimate(mel_device, mel_device.device) + for mel_device in mel_devices[DEVICE_TYPE_ATA] + ] + entities.extend( [ - AtaDeviceClimate(mel_device, mel_device.device) - for mel_device in mel_devices[DEVICE_TYPE_ATA] - ] - + [ AtwDeviceZoneClimate(mel_device, mel_device.device, zone) for mel_device in mel_devices[DEVICE_TYPE_ATW] for zone in mel_device.device.zones - ], + ] + ) + async_add_entities( + entities, True, ) @@ -157,14 +160,16 @@ class AtaDeviceClimate(MelCloudClimate): return attr @property - def hvac_mode(self) -> HVACMode: + def hvac_mode(self) -> HVACMode | None: """Return hvac operation ie. heat, cool mode.""" mode = self._device.operation_mode if not self._device.power or mode is None: return HVACMode.OFF return ATA_HVAC_MODE_LOOKUP.get(mode) - def _apply_set_hvac_mode(self, hvac_mode: str, set_dict: dict[str, Any]) -> None: + def _apply_set_hvac_mode( + self, hvac_mode: HVACMode, set_dict: dict[str, Any] + ) -> None: """Apply hvac mode changes to a dict used to call _device.set.""" if hvac_mode == HVACMode.OFF: set_dict["power"] = False @@ -180,7 +185,7 @@ class AtaDeviceClimate(MelCloudClimate): async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None: """Set new target hvac mode.""" - set_dict = {} + set_dict: dict[str, Any] = {} self._apply_set_hvac_mode(hvac_mode, set_dict) await self._device.set(set_dict) @@ -188,7 +193,9 @@ class AtaDeviceClimate(MelCloudClimate): def hvac_modes(self) -> list[HVACMode]: """Return the list of available hvac operation modes.""" return [HVACMode.OFF] + [ - ATA_HVAC_MODE_LOOKUP.get(mode) for mode in self._device.operation_modes + ATA_HVAC_MODE_LOOKUP[mode] + for mode in self._device.operation_modes + if mode in ATA_HVAC_MODE_LOOKUP ] @property @@ -201,9 +208,9 @@ class AtaDeviceClimate(MelCloudClimate): """Return the temperature we try to reach.""" return self._device.target_temperature - async def async_set_temperature(self, **kwargs) -> None: + async def async_set_temperature(self, **kwargs: Any) -> None: """Set new target temperature.""" - set_dict = {} + set_dict: dict[str, Any] = {} if ATTR_HVAC_MODE in kwargs: self._apply_set_hvac_mode( kwargs.get(ATTR_HVAC_MODE, self.hvac_mode), set_dict @@ -255,7 +262,7 @@ class AtaDeviceClimate(MelCloudClimate): await self.async_set_vane_vertical(swing_mode) @property - def swing_modes(self) -> str | None: + def swing_modes(self) -> list[str] | None: """Return a list of available vertical vane positions and modes.""" return self._device.vane_vertical_positions diff --git a/mypy.ini b/mypy.ini index 30bc97f545a..91dc7f9e71f 100644 --- a/mypy.ini +++ b/mypy.ini @@ -2761,12 +2761,6 @@ ignore_errors = true [mypy-homeassistant.components.lyric.sensor] ignore_errors = true -[mypy-homeassistant.components.melcloud] -ignore_errors = true - -[mypy-homeassistant.components.melcloud.climate] -ignore_errors = true - [mypy-homeassistant.components.meteo_france.sensor] ignore_errors = true diff --git a/script/hassfest/mypy_config.py b/script/hassfest/mypy_config.py index 939290ca9ab..d987a76d41d 100644 --- a/script/hassfest/mypy_config.py +++ b/script/hassfest/mypy_config.py @@ -62,8 +62,6 @@ IGNORED_MODULES: Final[list[str]] = [ "homeassistant.components.lyric.climate", "homeassistant.components.lyric.config_flow", "homeassistant.components.lyric.sensor", - "homeassistant.components.melcloud", - "homeassistant.components.melcloud.climate", "homeassistant.components.meteo_france.sensor", "homeassistant.components.meteo_france.weather", "homeassistant.components.minecraft_server",