From a713d7585f6d80798cf3ffc5377ca352b69e8d22 Mon Sep 17 00:00:00 2001 From: Shay Levy Date: Mon, 21 Aug 2023 10:49:11 +0300 Subject: [PATCH] Bump aioshelly to 6.0.0 (#98719) --- homeassistant/components/shelly/__init__.py | 8 +++--- .../components/shelly/coordinator.py | 25 +++++++++++++------ homeassistant/components/shelly/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/shelly/conftest.py | 16 ++++++------ 6 files changed, 33 insertions(+), 22 deletions(-) diff --git a/homeassistant/components/shelly/__init__.py b/homeassistant/components/shelly/__init__.py index e5e90bf19af..65b60546f61 100644 --- a/homeassistant/components/shelly/__init__.py +++ b/homeassistant/components/shelly/__init__.py @@ -4,10 +4,10 @@ from __future__ import annotations import contextlib from typing import Any, Final -from aioshelly.block_device import BlockDevice +from aioshelly.block_device import BlockDevice, BlockUpdateType from aioshelly.common import ConnectionOptions from aioshelly.exceptions import DeviceConnectionError, InvalidAuthError -from aioshelly.rpc_device import RpcDevice, UpdateType +from aioshelly.rpc_device import RpcDevice, RpcUpdateType import voluptuous as vol from homeassistant.config_entries import ConfigEntry @@ -168,7 +168,7 @@ async def _async_setup_block_entry(hass: HomeAssistant, entry: ConfigEntry) -> b await hass.config_entries.async_forward_entry_setups(entry, platforms) @callback - def _async_device_online(_: Any) -> None: + def _async_device_online(_: Any, update_type: BlockUpdateType) -> None: LOGGER.debug("Device %s is online, resuming setup", entry.title) shelly_entry_data.device = None @@ -253,7 +253,7 @@ async def _async_setup_rpc_entry(hass: HomeAssistant, entry: ConfigEntry) -> boo await hass.config_entries.async_forward_entry_setups(entry, platforms) @callback - def _async_device_online(_: Any, update_type: UpdateType) -> None: + def _async_device_online(_: Any, update_type: RpcUpdateType) -> None: LOGGER.debug("Device %s is online, resuming setup", entry.title) shelly_entry_data.device = None diff --git a/homeassistant/components/shelly/coordinator.py b/homeassistant/components/shelly/coordinator.py index 0d4a091b729..7829cd76567 100644 --- a/homeassistant/components/shelly/coordinator.py +++ b/homeassistant/components/shelly/coordinator.py @@ -9,9 +9,9 @@ from typing import Any, Generic, TypeVar, cast import aioshelly from aioshelly.ble import async_ensure_ble_enabled, async_stop_scanner -from aioshelly.block_device import BlockDevice +from aioshelly.block_device import BlockDevice, BlockUpdateType from aioshelly.exceptions import DeviceConnectionError, InvalidAuthError, RpcCallError -from aioshelly.rpc_device import RpcDevice, UpdateType +from aioshelly.rpc_device import RpcDevice, RpcUpdateType from awesomeversion import AwesomeVersion from homeassistant.config_entries import ConfigEntry, ConfigEntryState @@ -295,10 +295,17 @@ class ShellyBlockCoordinator(ShellyCoordinatorBase[BlockDevice]): ) device_update_info(self.hass, self.device, self.entry) + @callback + def _async_handle_update( + self, device_: BlockDevice, update_type: BlockUpdateType + ) -> None: + """Handle device update.""" + self.async_set_updated_data(None) + def async_setup(self) -> None: """Set up the coordinator.""" super().async_setup() - self.device.subscribe_updates(self.async_set_updated_data) + self.device.subscribe_updates(self._async_handle_update) def shutdown(self) -> None: """Shutdown the coordinator.""" @@ -535,16 +542,18 @@ class ShellyRpcCoordinator(ShellyCoordinatorBase[RpcDevice]): ) @callback - def _async_handle_update(self, device_: RpcDevice, update_type: UpdateType) -> None: + def _async_handle_update( + self, device_: RpcDevice, update_type: RpcUpdateType + ) -> None: """Handle device update.""" - if update_type is UpdateType.INITIALIZED: + if update_type is RpcUpdateType.INITIALIZED: self.hass.async_create_task(self._async_connected()) self.async_set_updated_data(None) - elif update_type is UpdateType.DISCONNECTED: + elif update_type is RpcUpdateType.DISCONNECTED: self.hass.async_create_task(self._async_disconnected()) - elif update_type is UpdateType.STATUS: + elif update_type is RpcUpdateType.STATUS: self.async_set_updated_data(None) - elif update_type is UpdateType.EVENT and (event := self.device.event): + elif update_type is RpcUpdateType.EVENT and (event := self.device.event): self._async_device_event_handler(event) def async_setup(self) -> None: diff --git a/homeassistant/components/shelly/manifest.json b/homeassistant/components/shelly/manifest.json index 6031b2dcc82..c76e2102fa1 100644 --- a/homeassistant/components/shelly/manifest.json +++ b/homeassistant/components/shelly/manifest.json @@ -9,7 +9,7 @@ "iot_class": "local_push", "loggers": ["aioshelly"], "quality_scale": "platinum", - "requirements": ["aioshelly==5.4.0"], + "requirements": ["aioshelly==6.0.0"], "zeroconf": [ { "type": "_http._tcp.local.", diff --git a/requirements_all.txt b/requirements_all.txt index 522f424878d..3374173e250 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -339,7 +339,7 @@ aioruuvigateway==0.1.0 aiosenz==1.0.0 # homeassistant.components.shelly -aioshelly==5.4.0 +aioshelly==6.0.0 # homeassistant.components.skybell aioskybell==22.7.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 5de4c5da4c1..29f6338db1f 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -314,7 +314,7 @@ aioruuvigateway==0.1.0 aiosenz==1.0.0 # homeassistant.components.shelly -aioshelly==5.4.0 +aioshelly==6.0.0 # homeassistant.components.skybell aioskybell==22.7.0 diff --git a/tests/components/shelly/conftest.py b/tests/components/shelly/conftest.py index 96e888d7509..2f33e76d336 100644 --- a/tests/components/shelly/conftest.py +++ b/tests/components/shelly/conftest.py @@ -3,8 +3,8 @@ from __future__ import annotations from unittest.mock import AsyncMock, Mock, PropertyMock, patch -from aioshelly.block_device import BlockDevice -from aioshelly.rpc_device import RpcDevice, UpdateType +from aioshelly.block_device import BlockDevice, BlockUpdateType +from aioshelly.rpc_device import RpcDevice, RpcUpdateType import pytest from homeassistant.components.shelly.const import ( @@ -247,7 +247,9 @@ async def mock_block_device(): with patch("aioshelly.block_device.BlockDevice.create") as block_device_mock: def update(): - block_device_mock.return_value.subscribe_updates.call_args[0][0]({}) + block_device_mock.return_value.subscribe_updates.call_args[0][0]( + {}, BlockUpdateType.COAP_PERIODIC + ) device = Mock( spec=BlockDevice, @@ -291,7 +293,7 @@ async def mock_pre_ble_rpc_device(): def update(): rpc_device_mock.return_value.subscribe_updates.call_args[0][0]( - {}, UpdateType.STATUS + {}, RpcUpdateType.STATUS ) device = _mock_rpc_device("0.11.0") @@ -310,17 +312,17 @@ async def mock_rpc_device(): def update(): rpc_device_mock.return_value.subscribe_updates.call_args[0][0]( - {}, UpdateType.STATUS + {}, RpcUpdateType.STATUS ) def event(): rpc_device_mock.return_value.subscribe_updates.call_args[0][0]( - {}, UpdateType.EVENT + {}, RpcUpdateType.EVENT ) def disconnected(): rpc_device_mock.return_value.subscribe_updates.call_args[0][0]( - {}, UpdateType.DISCONNECTED + {}, RpcUpdateType.DISCONNECTED ) device = _mock_rpc_device("0.12.0")