From 9b1c6b07f5a5e236d1acd04c6870b45080e5bbf6 Mon Sep 17 00:00:00 2001 From: Robert Resch Date: Wed, 30 Apr 2025 15:24:54 +0200 Subject: [PATCH] Bump deebot-client to 13.0.0 (#143823) --- homeassistant/components/ecovacs/binary_sensor.py | 8 ++++---- homeassistant/components/ecovacs/image.py | 8 ++++++-- homeassistant/components/ecovacs/manifest.json | 2 +- homeassistant/components/ecovacs/select.py | 9 +++++---- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/ecovacs/test_binary_sensor.py | 10 +++------- tests/components/ecovacs/test_select.py | 4 ++-- 8 files changed, 23 insertions(+), 22 deletions(-) diff --git a/homeassistant/components/ecovacs/binary_sensor.py b/homeassistant/components/ecovacs/binary_sensor.py index 552a8152cc5..73b21d4574d 100644 --- a/homeassistant/components/ecovacs/binary_sensor.py +++ b/homeassistant/components/ecovacs/binary_sensor.py @@ -5,7 +5,7 @@ from dataclasses import dataclass from typing import Generic from deebot_client.capabilities import CapabilityEvent -from deebot_client.events.water_info import WaterInfoEvent +from deebot_client.events.water_info import MopAttachedEvent from homeassistant.components.binary_sensor import ( BinarySensorEntity, @@ -32,9 +32,9 @@ class EcovacsBinarySensorEntityDescription( ENTITY_DESCRIPTIONS: tuple[EcovacsBinarySensorEntityDescription, ...] = ( - EcovacsBinarySensorEntityDescription[WaterInfoEvent]( - capability_fn=lambda caps: caps.water, - value_fn=lambda e: e.mop_attached, + EcovacsBinarySensorEntityDescription[MopAttachedEvent]( + capability_fn=lambda caps: caps.water.mop_attached if caps.water else None, + value_fn=lambda e: e.value, key="water_mop_attached", translation_key="water_mop_attached", entity_category=EntityCategory.DIAGNOSTIC, diff --git a/homeassistant/components/ecovacs/image.py b/homeassistant/components/ecovacs/image.py index f8a89b0cfa0..b1c2f0075f1 100644 --- a/homeassistant/components/ecovacs/image.py +++ b/homeassistant/components/ecovacs/image.py @@ -1,8 +1,11 @@ """Ecovacs image entities.""" +from typing import cast + from deebot_client.capabilities import CapabilityMap from deebot_client.device import Device from deebot_client.events.map import CachedMapInfoEvent, MapChangedEvent +from deebot_client.map import Map from homeassistant.components.image import ImageEntity from homeassistant.core import HomeAssistant @@ -47,6 +50,7 @@ class EcovacsMap( """Initialize entity.""" super().__init__(device, capability, hass=hass) self._attr_extra_state_attributes = {} + self._map = cast(Map, self._device.map) entity_description = EntityDescription( key="map", @@ -55,7 +59,7 @@ class EcovacsMap( def image(self) -> bytes | None: """Return bytes of image or None.""" - if svg := self._device.map.get_svg_map(): + if svg := self._map.get_svg_map(): return svg.encode() return None @@ -80,4 +84,4 @@ class EcovacsMap( Only used by the generic entity update service. """ await super().async_update() - self._device.map.refresh() + self._map.refresh() diff --git a/homeassistant/components/ecovacs/manifest.json b/homeassistant/components/ecovacs/manifest.json index ad8b3ea70a5..2a332e498c7 100644 --- a/homeassistant/components/ecovacs/manifest.json +++ b/homeassistant/components/ecovacs/manifest.json @@ -6,5 +6,5 @@ "documentation": "https://www.home-assistant.io/integrations/ecovacs", "iot_class": "cloud_push", "loggers": ["sleekxmppfs", "sucks", "deebot_client"], - "requirements": ["py-sucks==0.9.10", "deebot-client==12.5.0"] + "requirements": ["py-sucks==0.9.10", "deebot-client==13.0.1"] } diff --git a/homeassistant/components/ecovacs/select.py b/homeassistant/components/ecovacs/select.py index a7b9baf1c4a..31292401343 100644 --- a/homeassistant/components/ecovacs/select.py +++ b/homeassistant/components/ecovacs/select.py @@ -6,7 +6,8 @@ from typing import Any, Generic from deebot_client.capabilities import CapabilitySetTypes from deebot_client.device import Device -from deebot_client.events import WaterInfoEvent, WorkModeEvent +from deebot_client.events import WorkModeEvent +from deebot_client.events.water_info import WaterAmountEvent from homeassistant.components.select import SelectEntity, SelectEntityDescription from homeassistant.const import EntityCategory @@ -31,9 +32,9 @@ class EcovacsSelectEntityDescription( ENTITY_DESCRIPTIONS: tuple[EcovacsSelectEntityDescription, ...] = ( - EcovacsSelectEntityDescription[WaterInfoEvent]( - capability_fn=lambda caps: caps.water, - current_option_fn=lambda e: get_name_key(e.amount), + EcovacsSelectEntityDescription[WaterAmountEvent]( + capability_fn=lambda caps: caps.water.amount if caps.water else None, + current_option_fn=lambda e: get_name_key(e.value), options_fn=lambda water: [get_name_key(amount) for amount in water.types], key="water_amount", translation_key="water_amount", diff --git a/requirements_all.txt b/requirements_all.txt index 2272af56c50..88c5df7384c 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -762,7 +762,7 @@ debugpy==1.8.13 # decora==0.6 # homeassistant.components.ecovacs -deebot-client==12.5.0 +deebot-client==13.0.1 # homeassistant.components.ihc # homeassistant.components.namecheapdns diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 723d0f352c3..0e97ada4d9e 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -653,7 +653,7 @@ dbus-fast==2.43.0 debugpy==1.8.13 # homeassistant.components.ecovacs -deebot-client==12.5.0 +deebot-client==13.0.1 # homeassistant.components.ihc # homeassistant.components.namecheapdns diff --git a/tests/components/ecovacs/test_binary_sensor.py b/tests/components/ecovacs/test_binary_sensor.py index b57f67e948e..16e2d3fefc5 100644 --- a/tests/components/ecovacs/test_binary_sensor.py +++ b/tests/components/ecovacs/test_binary_sensor.py @@ -1,6 +1,6 @@ """Tests for Ecovacs binary sensors.""" -from deebot_client.events import WaterAmount, WaterInfoEvent +from deebot_client.events.water_info import MopAttachedEvent import pytest from syrupy import SnapshotAssertion @@ -43,16 +43,12 @@ async def test_mop_attached( assert device_entry.identifiers == {(DOMAIN, device.device_info["did"])} event_bus = device.events - await notify_and_wait( - hass, event_bus, WaterInfoEvent(WaterAmount.HIGH, mop_attached=True) - ) + await notify_and_wait(hass, event_bus, MopAttachedEvent(True)) assert (state := hass.states.get(state.entity_id)) assert state == snapshot(name=f"{entity_id}-state") - await notify_and_wait( - hass, event_bus, WaterInfoEvent(WaterAmount.HIGH, mop_attached=False) - ) + await notify_and_wait(hass, event_bus, MopAttachedEvent(False)) assert (state := hass.states.get(state.entity_id)) assert state.state == STATE_OFF diff --git a/tests/components/ecovacs/test_select.py b/tests/components/ecovacs/test_select.py index 02a6b5ebfa4..1e03bb18e28 100644 --- a/tests/components/ecovacs/test_select.py +++ b/tests/components/ecovacs/test_select.py @@ -3,7 +3,7 @@ from deebot_client.command import Command from deebot_client.commands.json import SetWaterInfo from deebot_client.event_bus import EventBus -from deebot_client.events import WaterAmount, WaterInfoEvent +from deebot_client.events.water_info import WaterAmount, WaterAmountEvent import pytest from syrupy import SnapshotAssertion @@ -33,7 +33,7 @@ def platforms() -> Platform | list[Platform]: async def notify_events(hass: HomeAssistant, event_bus: EventBus): """Notify events.""" - event_bus.notify(WaterInfoEvent(WaterAmount.ULTRAHIGH)) + event_bus.notify(WaterAmountEvent(WaterAmount.ULTRAHIGH)) await block_till_done(hass, event_bus)