From 3a27eeab870b9622f0b64dfa43b86ec7abb0c87d Mon Sep 17 00:00:00 2001 From: craibo Date: Sun, 15 Sep 2024 15:17:50 +1000 Subject: [PATCH 1/3] 2024.9.1 - Resolve issues with using coroutines --- custom_components/ha_strava/__init__.py | 2 +- custom_components/ha_strava/camera.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/custom_components/ha_strava/__init__.py b/custom_components/ha_strava/__init__.py index d848bb4..f58c46a 100644 --- a/custom_components/ha_strava/__init__.py +++ b/custom_components/ha_strava/__init__.py @@ -869,7 +869,7 @@ def core_config_update_handler(event): ] hass.async_create_task( - await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) + hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) ) return True diff --git a/custom_components/ha_strava/camera.py b/custom_components/ha_strava/camera.py index 4db5c8b..4c2f7ef 100644 --- a/custom_components/ha_strava/camera.py +++ b/custom_components/ha_strava/camera.py @@ -2,6 +2,7 @@ from __future__ import annotations +import asyncio import io import logging import os @@ -137,7 +138,8 @@ def rotate_img(self): # pylint: disable=missing-function-docstring if len(self._urls) == 0: return self._url_index = (self._url_index + 1) % len(self._urls) - self.async_write_ha_state() + asyncio.run_coroutine_threadsafe(self.async_write_ha_state(), self.hass.loop) + return async def img_update_handler(self, event): """handle new urls of Strava images""" From 1f27c56346590cbd771293223938eae372a35dcc Mon Sep 17 00:00:00 2001 From: craibo Date: Sun, 15 Sep 2024 21:21:30 +1000 Subject: [PATCH 2/3] Resolve coroutine issue on image rotate --- custom_components/ha_strava/camera.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/custom_components/ha_strava/camera.py b/custom_components/ha_strava/camera.py index 4c2f7ef..f4f5360 100644 --- a/custom_components/ha_strava/camera.py +++ b/custom_components/ha_strava/camera.py @@ -2,7 +2,6 @@ from __future__ import annotations -import asyncio import io import logging import os @@ -60,14 +59,14 @@ async def async_setup_entry(hass, config_entry, async_add_entities): ) async_add_entities(cameras) - def image_update_listener( # pylint: disable=inconsistent-return-statements + async def image_update_listener( # pylint: disable=inconsistent-return-statements now, ): # pylint: disable=unused-argument if len(ha_strava_config_entries) != 1: return -1 for camera in cameras: - camera.rotate_img() + await camera.rotate_img() ha_strava_config_entries = hass.config_entries.async_entries(domain=DOMAIN) img_update_interval_seconds = int( @@ -133,13 +132,12 @@ async def async_camera_image( return await _return_default_img() return await response.read() - def rotate_img(self): # pylint: disable=missing-function-docstring + async def rotate_img(self): # pylint: disable=missing-function-docstring _LOGGER.debug(f"{self._device_id}: Strava Image Count: {len(self._urls)}") if len(self._urls) == 0: return self._url_index = (self._url_index + 1) % len(self._urls) - asyncio.run_coroutine_threadsafe(self.async_write_ha_state(), self.hass.loop) - return + self.async_write_ha_state() async def img_update_handler(self, event): """handle new urls of Strava images""" @@ -249,14 +247,12 @@ async def async_camera_image( ) return await self._return_default_img() - def rotate_img(self): # pylint: disable=missing-function-docstring + async def rotate_img(self): # pylint: disable=missing-function-docstring _LOGGER.debug(f"Number of images available from Strava: {len(self._urls)}") if len(self._urls) == 0: return self._url_index = (self._url_index + 1) % len(self._urls) self.async_write_ha_state() - return - # self.schedule_update_ha_state() @property def state(self): # pylint: disable=overridden-final-method From baa81e687e9efb8bdb423a7e9f0a23186fd402e4 Mon Sep 17 00:00:00 2001 From: craibo Date: Sun, 15 Sep 2024 21:23:38 +1000 Subject: [PATCH 3/3] - Add dev requirements --- requirements_dev.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/requirements_dev.txt b/requirements_dev.txt index e3939f6..8e70532 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,4 +1,8 @@ homeassistant +aiohttp +aiofiles +numpy +voluptuous black flake8