From 236acd62067c81ba5d12f355f638bf6d37d0ed0b Mon Sep 17 00:00:00 2001 From: Simone Chemelli Date: Sat, 16 Apr 2022 18:04:09 +0200 Subject: [PATCH 1/9] Fix retry when Met config entry fails (#70012) --- homeassistant/components/met/__init__.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/met/__init__.py b/homeassistant/components/met/__init__.py index 536cf03bde2..2f663df458e 100644 --- a/homeassistant/components/met/__init__.py +++ b/homeassistant/components/met/__init__.py @@ -21,6 +21,7 @@ from homeassistant.const import ( Platform, ) from homeassistant.core import Event, HomeAssistant +from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed from homeassistant.util.distance import convert as convert_distance @@ -33,6 +34,7 @@ from .const import ( DOMAIN, ) +# Dedicated Home Assistant endpoint - do not change! URL = "https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete" PLATFORMS = [Platform.WEATHER] @@ -82,6 +84,10 @@ async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> return unload_ok +class CannotConnect(HomeAssistantError): + """Unable to connect to the web site.""" + + class MetDataUpdateCoordinator(DataUpdateCoordinator["MetWeatherData"]): """Class to manage fetching Met data.""" @@ -173,7 +179,9 @@ class MetWeatherData: async def fetch_data(self) -> MetWeatherData: """Fetch data from API - (current weather and forecast).""" - await self._weather_data.fetching_data() + resp = await self._weather_data.fetching_data() + if not resp: + raise CannotConnect() self.current_weather_data = self._weather_data.get_current_weather() time_zone = dt_util.DEFAULT_TIME_ZONE self.daily_forecast = self._weather_data.get_forecast(time_zone, False) From 0a6182264ab831aefd543b96592c955e5d62cf38 Mon Sep 17 00:00:00 2001 From: Shay Levy Date: Fri, 15 Apr 2022 19:14:07 +0300 Subject: [PATCH 2/9] Set source & sound mode at start in media player reproduce state (#70064) --- .../media_player/reproduce_state.py | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/media_player/reproduce_state.py b/homeassistant/components/media_player/reproduce_state.py index 47d365ff75a..131366ed95b 100644 --- a/homeassistant/components/media_player/reproduce_state.py +++ b/homeassistant/components/media_player/reproduce_state.py @@ -83,18 +83,7 @@ async def _async_reproduce_states( cur_state = hass.states.get(state.entity_id) features = cur_state.attributes[ATTR_SUPPORTED_FEATURES] if cur_state else 0 - if ( - ATTR_MEDIA_VOLUME_LEVEL in state.attributes - and features & MediaPlayerEntityFeature.VOLUME_SET - ): - await call_service(SERVICE_VOLUME_SET, [ATTR_MEDIA_VOLUME_LEVEL]) - - if ( - ATTR_MEDIA_VOLUME_MUTED in state.attributes - and features & MediaPlayerEntityFeature.VOLUME_MUTE - ): - await call_service(SERVICE_VOLUME_MUTE, [ATTR_MEDIA_VOLUME_MUTED]) - + # First set source & sound mode to match the saved supported features if ( ATTR_INPUT_SOURCE in state.attributes and features & MediaPlayerEntityFeature.SELECT_SOURCE @@ -107,6 +96,18 @@ async def _async_reproduce_states( ): await call_service(SERVICE_SELECT_SOUND_MODE, [ATTR_SOUND_MODE]) + if ( + ATTR_MEDIA_VOLUME_LEVEL in state.attributes + and features & MediaPlayerEntityFeature.VOLUME_SET + ): + await call_service(SERVICE_VOLUME_SET, [ATTR_MEDIA_VOLUME_LEVEL]) + + if ( + ATTR_MEDIA_VOLUME_MUTED in state.attributes + and features & MediaPlayerEntityFeature.VOLUME_MUTE + ): + await call_service(SERVICE_VOLUME_MUTE, [ATTR_MEDIA_VOLUME_MUTED]) + already_playing = False if (ATTR_MEDIA_CONTENT_TYPE in state.attributes) and ( From 410e0f52a304c00f24006de498cae160a31fc911 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Fri, 15 Apr 2022 18:31:02 +0200 Subject: [PATCH 3/9] Limit Supervisor refresh updates (#70075) --- homeassistant/components/hassio/__init__.py | 16 ++++++- tests/components/hassio/test_init.py | 48 ++++++++++++++++++--- 2 files changed, 56 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/hassio/__init__.py b/homeassistant/components/hassio/__init__.py index f3f6887570f..278f8a50ebc 100644 --- a/homeassistant/components/hassio/__init__.py +++ b/homeassistant/components/hassio/__init__.py @@ -917,7 +917,6 @@ class HassioDataUpdateCoordinator(DataUpdateCoordinator): async def force_data_refresh(self) -> None: """Force update of the addon info.""" - await self.hassio.refresh_updates() ( self.hass.data[DATA_INFO], self.hass.data[DATA_CORE_INFO], @@ -976,3 +975,18 @@ class HassioDataUpdateCoordinator(DataUpdateCoordinator): except HassioAPIError as err: _LOGGER.warning("Could not fetch info for %s: %s", slug, err) return (slug, None) + + async def _async_refresh( + self, + log_failures: bool = True, + raise_on_auth_failed: bool = False, + scheduled: bool = False, + ) -> None: + """Refresh data.""" + if not scheduled: + # Force refreshing updates for non-scheduled updates + try: + await self.hassio.refresh_updates() + except HassioAPIError as err: + _LOGGER.warning("Error on Supervisor API: %s", err) + await super()._async_refresh(log_failures, raise_on_auth_failed, scheduled) diff --git a/tests/components/hassio/test_init.py b/tests/components/hassio/test_init.py index 2e7bea90f68..6f4b9a39a9f 100644 --- a/tests/components/hassio/test_init.py +++ b/tests/components/hassio/test_init.py @@ -646,7 +646,8 @@ async def test_device_registry_calls(hass): async def test_coordinator_updates(hass, caplog): - """Test coordinator.""" + """Test coordinator updates.""" + await async_setup_component(hass, "homeassistant", {}) with patch.dict(os.environ, MOCK_ENVIRON), patch( "homeassistant.components.hassio.HassIO.refresh_updates" ) as refresh_updates_mock: @@ -656,14 +657,47 @@ async def test_coordinator_updates(hass, caplog): await hass.async_block_till_done() assert refresh_updates_mock.call_count == 1 + with patch( + "homeassistant.components.hassio.HassIO.refresh_updates", + ) as refresh_updates_mock: + async_fire_time_changed(hass, dt_util.now() + timedelta(minutes=20)) + await hass.async_block_till_done() + assert refresh_updates_mock.call_count == 0 + + with patch( + "homeassistant.components.hassio.HassIO.refresh_updates", + ) as refresh_updates_mock: + await hass.services.async_call( + "homeassistant", + "update_entity", + { + "entity_id": [ + "update.home_assistant_core_update", + "update.home_assistant_supervisor_update", + ] + }, + blocking=True, + ) + assert refresh_updates_mock.call_count == 1 + + # There is a 10s cooldown on the debouncer + async_fire_time_changed(hass, dt_util.now() + timedelta(seconds=10)) + await hass.async_block_till_done() + with patch( "homeassistant.components.hassio.HassIO.refresh_updates", side_effect=HassioAPIError("Unknown"), ) as refresh_updates_mock: - async_fire_time_changed(hass, dt_util.now() + timedelta(minutes=5)) - await hass.async_block_till_done() - assert refresh_updates_mock.call_count == 1 - assert ( - "Error fetching hassio data: Error on Supervisor API: Unknown" - in caplog.text + await hass.services.async_call( + "homeassistant", + "update_entity", + { + "entity_id": [ + "update.home_assistant_core_update", + "update.home_assistant_supervisor_update", + ] + }, + blocking=True, ) + assert refresh_updates_mock.call_count == 1 + assert "Error on Supervisor API: Unknown" in caplog.text From a9c670c56f3d10dbdb3edf952c15e4763636e779 Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Fri, 15 Apr 2022 16:20:54 -0400 Subject: [PATCH 4/9] Correct tomorrowio weather units (#70107) --- .../components/tomorrowio/weather.py | 20 +-- tests/components/tomorrowio/test_weather.py | 164 ++---------------- 2 files changed, 25 insertions(+), 159 deletions(-) diff --git a/homeassistant/components/tomorrowio/weather.py b/homeassistant/components/tomorrowio/weather.py index 3006be989ba..bf687f8bdca 100644 --- a/homeassistant/components/tomorrowio/weather.py +++ b/homeassistant/components/tomorrowio/weather.py @@ -20,11 +20,11 @@ from homeassistant.components.weather import ( from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( CONF_NAME, - LENGTH_INCHES, - LENGTH_MILES, - PRESSURE_INHG, - SPEED_MILES_PER_HOUR, - TEMP_FAHRENHEIT, + LENGTH_KILOMETERS, + LENGTH_MILLIMETERS, + PRESSURE_HPA, + SPEED_METERS_PER_SECOND, + TEMP_CELSIUS, ) from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback @@ -73,11 +73,11 @@ async def async_setup_entry( class TomorrowioWeatherEntity(TomorrowioEntity, WeatherEntity): """Entity that talks to Tomorrow.io v4 API to retrieve weather data.""" - _attr_temperature_unit = TEMP_FAHRENHEIT - _attr_pressure_unit = PRESSURE_INHG - _attr_wind_speed_unit = SPEED_MILES_PER_HOUR - _attr_visibility_unit = LENGTH_MILES - _attr_precipitation_unit = LENGTH_INCHES + _attr_temperature_unit = TEMP_CELSIUS + _attr_pressure_unit = PRESSURE_HPA + _attr_wind_speed_unit = SPEED_METERS_PER_SECOND + _attr_visibility_unit = LENGTH_KILOMETERS + _attr_precipitation_unit = LENGTH_MILLIMETERS def __init__( self, diff --git a/tests/components/tomorrowio/test_weather.py b/tests/components/tomorrowio/test_weather.py index 3e5eb81edec..f9c7e00b7cd 100644 --- a/tests/components/tomorrowio/test_weather.py +++ b/tests/components/tomorrowio/test_weather.py @@ -17,9 +17,6 @@ from homeassistant.components.tomorrowio.const import ( DOMAIN, ) from homeassistant.components.weather import ( - ATTR_CONDITION_CLOUDY, - ATTR_CONDITION_RAINY, - ATTR_CONDITION_SNOWY, ATTR_CONDITION_SUNNY, ATTR_FORECAST, ATTR_FORECAST_CONDITION, @@ -93,153 +90,22 @@ async def test_v4_weather(hass: HomeAssistant) -> None: weather_state = await _setup(hass, API_V4_ENTRY_DATA) assert weather_state.state == ATTR_CONDITION_SUNNY assert weather_state.attributes[ATTR_ATTRIBUTION] == ATTRIBUTION - assert weather_state.attributes[ATTR_FORECAST] == [ - { - ATTR_FORECAST_CONDITION: ATTR_CONDITION_SUNNY, - ATTR_FORECAST_TIME: "2021-03-07T11:00:00+00:00", - ATTR_FORECAST_PRECIPITATION: 0, - ATTR_FORECAST_PRECIPITATION_PROBABILITY: 0, - ATTR_FORECAST_TEMP: 7.7, - ATTR_FORECAST_TEMP_LOW: -3.3, - ATTR_FORECAST_WIND_BEARING: 239.6, - ATTR_FORECAST_WIND_SPEED: 4.24, - }, - { - ATTR_FORECAST_CONDITION: ATTR_CONDITION_CLOUDY, - ATTR_FORECAST_TIME: "2021-03-08T11:00:00+00:00", - ATTR_FORECAST_PRECIPITATION: 0, - ATTR_FORECAST_PRECIPITATION_PROBABILITY: 0, - ATTR_FORECAST_TEMP: 9.7, - ATTR_FORECAST_TEMP_LOW: -3.2, - ATTR_FORECAST_WIND_BEARING: 262.82, - ATTR_FORECAST_WIND_SPEED: 3.24, - }, - { - ATTR_FORECAST_CONDITION: ATTR_CONDITION_CLOUDY, - ATTR_FORECAST_TIME: "2021-03-09T11:00:00+00:00", - ATTR_FORECAST_PRECIPITATION: 0, - ATTR_FORECAST_PRECIPITATION_PROBABILITY: 0, - ATTR_FORECAST_TEMP: 19.4, - ATTR_FORECAST_TEMP_LOW: -0.3, - ATTR_FORECAST_WIND_BEARING: 229.3, - ATTR_FORECAST_WIND_SPEED: 3.15, - }, - { - ATTR_FORECAST_CONDITION: ATTR_CONDITION_CLOUDY, - ATTR_FORECAST_TIME: "2021-03-10T11:00:00+00:00", - ATTR_FORECAST_PRECIPITATION: 0, - ATTR_FORECAST_PRECIPITATION_PROBABILITY: 0, - ATTR_FORECAST_TEMP: 18.5, - ATTR_FORECAST_TEMP_LOW: 3.0, - ATTR_FORECAST_WIND_BEARING: 149.91, - ATTR_FORECAST_WIND_SPEED: 4.76, - }, - { - ATTR_FORECAST_CONDITION: ATTR_CONDITION_CLOUDY, - ATTR_FORECAST_TIME: "2021-03-11T11:00:00+00:00", - ATTR_FORECAST_PRECIPITATION: 0, - ATTR_FORECAST_PRECIPITATION_PROBABILITY: 0, - ATTR_FORECAST_TEMP: 19.0, - ATTR_FORECAST_TEMP_LOW: 9.0, - ATTR_FORECAST_WIND_BEARING: 210.45, - ATTR_FORECAST_WIND_SPEED: 7.01, - }, - { - ATTR_FORECAST_CONDITION: ATTR_CONDITION_RAINY, - ATTR_FORECAST_TIME: "2021-03-12T11:00:00+00:00", - ATTR_FORECAST_PRECIPITATION: 0.12, - ATTR_FORECAST_PRECIPITATION_PROBABILITY: 25, - ATTR_FORECAST_TEMP: 19.9, - ATTR_FORECAST_TEMP_LOW: 12.1, - ATTR_FORECAST_WIND_BEARING: 217.98, - ATTR_FORECAST_WIND_SPEED: 5.5, - }, - { - ATTR_FORECAST_CONDITION: ATTR_CONDITION_CLOUDY, - ATTR_FORECAST_TIME: "2021-03-13T11:00:00+00:00", - ATTR_FORECAST_PRECIPITATION: 0, - ATTR_FORECAST_PRECIPITATION_PROBABILITY: 25, - ATTR_FORECAST_TEMP: 12.5, - ATTR_FORECAST_TEMP_LOW: 6.1, - ATTR_FORECAST_WIND_BEARING: 58.79, - ATTR_FORECAST_WIND_SPEED: 4.35, - }, - { - ATTR_FORECAST_CONDITION: ATTR_CONDITION_SNOWY, - ATTR_FORECAST_TIME: "2021-03-14T10:00:00+00:00", - ATTR_FORECAST_PRECIPITATION: 23.96, - ATTR_FORECAST_PRECIPITATION_PROBABILITY: 95, - ATTR_FORECAST_TEMP: 6.1, - ATTR_FORECAST_TEMP_LOW: 0.8, - ATTR_FORECAST_WIND_BEARING: 70.25, - ATTR_FORECAST_WIND_SPEED: 7.26, - }, - { - ATTR_FORECAST_CONDITION: ATTR_CONDITION_SNOWY, - ATTR_FORECAST_TIME: "2021-03-15T10:00:00+00:00", - ATTR_FORECAST_PRECIPITATION: 1.46, - ATTR_FORECAST_PRECIPITATION_PROBABILITY: 55, - ATTR_FORECAST_TEMP: 6.5, - ATTR_FORECAST_TEMP_LOW: -1.5, - ATTR_FORECAST_WIND_BEARING: 84.47, - ATTR_FORECAST_WIND_SPEED: 7.1, - }, - { - ATTR_FORECAST_CONDITION: ATTR_CONDITION_CLOUDY, - ATTR_FORECAST_TIME: "2021-03-16T10:00:00+00:00", - ATTR_FORECAST_PRECIPITATION: 0, - ATTR_FORECAST_PRECIPITATION_PROBABILITY: 0, - ATTR_FORECAST_TEMP: 6.1, - ATTR_FORECAST_TEMP_LOW: -1.6, - ATTR_FORECAST_WIND_BEARING: 103.85, - ATTR_FORECAST_WIND_SPEED: 3.0, - }, - { - ATTR_FORECAST_CONDITION: ATTR_CONDITION_CLOUDY, - ATTR_FORECAST_TIME: "2021-03-17T10:00:00+00:00", - ATTR_FORECAST_PRECIPITATION: 0, - ATTR_FORECAST_PRECIPITATION_PROBABILITY: 0, - ATTR_FORECAST_TEMP: 11.3, - ATTR_FORECAST_TEMP_LOW: 1.3, - ATTR_FORECAST_WIND_BEARING: 145.41, - ATTR_FORECAST_WIND_SPEED: 3.25, - }, - { - ATTR_FORECAST_CONDITION: ATTR_CONDITION_CLOUDY, - ATTR_FORECAST_TIME: "2021-03-18T10:00:00+00:00", - ATTR_FORECAST_PRECIPITATION: 0, - ATTR_FORECAST_PRECIPITATION_PROBABILITY: 10, - ATTR_FORECAST_TEMP: 12.3, - ATTR_FORECAST_TEMP_LOW: 5.2, - ATTR_FORECAST_WIND_BEARING: 62.99, - ATTR_FORECAST_WIND_SPEED: 2.94, - }, - { - ATTR_FORECAST_CONDITION: ATTR_CONDITION_RAINY, - ATTR_FORECAST_TIME: "2021-03-19T10:00:00+00:00", - ATTR_FORECAST_PRECIPITATION: 2.93, - ATTR_FORECAST_PRECIPITATION_PROBABILITY: 55, - ATTR_FORECAST_TEMP: 9.4, - ATTR_FORECAST_TEMP_LOW: 4.1, - ATTR_FORECAST_WIND_BEARING: 68.54, - ATTR_FORECAST_WIND_SPEED: 6.22, - }, - { - ATTR_FORECAST_CONDITION: ATTR_CONDITION_SNOWY, - ATTR_FORECAST_TIME: "2021-03-20T10:00:00+00:00", - ATTR_FORECAST_PRECIPITATION: 1.22, - ATTR_FORECAST_PRECIPITATION_PROBABILITY: 33.3, - ATTR_FORECAST_TEMP: 4.5, - ATTR_FORECAST_TEMP_LOW: 1.7, - ATTR_FORECAST_WIND_BEARING: 56.98, - ATTR_FORECAST_WIND_SPEED: 7.76, - }, - ] + assert len(weather_state.attributes[ATTR_FORECAST]) == 14 + assert weather_state.attributes[ATTR_FORECAST][0] == { + ATTR_FORECAST_CONDITION: ATTR_CONDITION_SUNNY, + ATTR_FORECAST_TIME: "2021-03-07T11:00:00+00:00", + ATTR_FORECAST_PRECIPITATION: 0, + ATTR_FORECAST_PRECIPITATION_PROBABILITY: 0, + ATTR_FORECAST_TEMP: 45.9, + ATTR_FORECAST_TEMP_LOW: 26.1, + ATTR_FORECAST_WIND_BEARING: 239.6, + ATTR_FORECAST_WIND_SPEED: 9.49, + } assert weather_state.attributes[ATTR_FRIENDLY_NAME] == "Tomorrow.io - Daily" assert weather_state.attributes[ATTR_WEATHER_HUMIDITY] == 23 assert weather_state.attributes[ATTR_WEATHER_OZONE] == 46.53 - assert weather_state.attributes[ATTR_WEATHER_PRESSURE] == 102776.91 - assert weather_state.attributes[ATTR_WEATHER_TEMPERATURE] == 6.7 - assert weather_state.attributes[ATTR_WEATHER_VISIBILITY] == 13.12 + assert weather_state.attributes[ATTR_WEATHER_PRESSURE] == 3035.0 + assert weather_state.attributes[ATTR_WEATHER_TEMPERATURE] == 44.1 + assert weather_state.attributes[ATTR_WEATHER_VISIBILITY] == 8.15 assert weather_state.attributes[ATTR_WEATHER_WIND_BEARING] == 315.14 - assert weather_state.attributes[ATTR_WEATHER_WIND_SPEED] == 4.17 + assert weather_state.attributes[ATTR_WEATHER_WIND_SPEED] == 9.33 From 73478dc76d591bedf4a4684dc5f6d5774aed7c29 Mon Sep 17 00:00:00 2001 From: Matthias Alphart Date: Fri, 15 Apr 2022 23:15:05 +0200 Subject: [PATCH 5/9] update xknx to 0.20.3 (#70123) --- homeassistant/components/knx/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/knx/manifest.json b/homeassistant/components/knx/manifest.json index 0fdabcec9fb..f11ef8c56cb 100644 --- a/homeassistant/components/knx/manifest.json +++ b/homeassistant/components/knx/manifest.json @@ -3,7 +3,7 @@ "name": "KNX", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/knx", - "requirements": ["xknx==0.20.2"], + "requirements": ["xknx==0.20.3"], "codeowners": ["@Julius2342", "@farmio", "@marvin-w"], "quality_scale": "silver", "iot_class": "local_push", diff --git a/requirements_all.txt b/requirements_all.txt index a5b62691256..22cda78651e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2435,7 +2435,7 @@ xbox-webapi==2.0.11 xboxapi==2.0.1 # homeassistant.components.knx -xknx==0.20.2 +xknx==0.20.3 # homeassistant.components.bluesound # homeassistant.components.fritz diff --git a/requirements_test_all.txt b/requirements_test_all.txt index c669f014c39..0b69a7a97f1 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1575,7 +1575,7 @@ wolf_smartset==0.1.11 xbox-webapi==2.0.11 # homeassistant.components.knx -xknx==0.20.2 +xknx==0.20.3 # homeassistant.components.bluesound # homeassistant.components.fritz From cdc979e1e6100300e87875516819088d1bbb6bf9 Mon Sep 17 00:00:00 2001 From: Brandon Rothweiler Date: Sat, 16 Apr 2022 12:08:21 -0400 Subject: [PATCH 6/9] Bump pymazda to 0.3.3 (#70136) --- homeassistant/components/mazda/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/mazda/manifest.json b/homeassistant/components/mazda/manifest.json index a75c7f99e4c..a18b4406355 100644 --- a/homeassistant/components/mazda/manifest.json +++ b/homeassistant/components/mazda/manifest.json @@ -3,7 +3,7 @@ "name": "Mazda Connected Services", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/mazda", - "requirements": ["pymazda==0.3.2"], + "requirements": ["pymazda==0.3.3"], "codeowners": ["@bdr99"], "quality_scale": "platinum", "iot_class": "cloud_polling", diff --git a/requirements_all.txt b/requirements_all.txt index 22cda78651e..af898c00b1a 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1619,7 +1619,7 @@ pymailgunner==1.4 pymata-express==1.19 # homeassistant.components.mazda -pymazda==0.3.2 +pymazda==0.3.3 # homeassistant.components.mediaroom pymediaroom==0.6.5.4 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 0b69a7a97f1..1c55984b551 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1077,7 +1077,7 @@ pymailgunner==1.4 pymata-express==1.19 # homeassistant.components.mazda -pymazda==0.3.2 +pymazda==0.3.3 # homeassistant.components.melcloud pymelcloud==2.5.6 From 2205b6377848038e44e3fc51b941aecef9d7f035 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 16 Apr 2022 00:12:16 -1000 Subject: [PATCH 7/9] Ensure powerwall retries setup when api returns too many requests (#70143) --- homeassistant/components/powerwall/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/homeassistant/components/powerwall/__init__.py b/homeassistant/components/powerwall/__init__.py index 6537ea249c1..af75ace8bd4 100644 --- a/homeassistant/components/powerwall/__init__.py +++ b/homeassistant/components/powerwall/__init__.py @@ -162,6 +162,9 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: _LOGGER.debug("Authentication failed", exc_info=err) http_session.close() raise ConfigEntryAuthFailed from err + except APIError as err: + http_session.close() + raise ConfigEntryNotReady from err gateway_din = base_info.gateway_din if gateway_din and entry.unique_id is not None and is_ip_address(entry.unique_id): From 70a4de5efeb7d9fb717f7a95ab03dede45763362 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Sat, 16 Apr 2022 17:08:54 +0200 Subject: [PATCH 8/9] Fix StationInfo not string in Trafikverket Train (#70153) --- homeassistant/components/trafikverket_train/sensor.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/trafikverket_train/sensor.py b/homeassistant/components/trafikverket_train/sensor.py index 82f248f9de0..7bcd796bb16 100644 --- a/homeassistant/components/trafikverket_train/sensor.py +++ b/homeassistant/components/trafikverket_train/sensor.py @@ -6,7 +6,7 @@ import logging from typing import Any from pytrafikverket import TrafikverketTrain -from pytrafikverket.trafikverket_train import TrainStop +from pytrafikverket.trafikverket_train import StationInfo, TrainStop import voluptuous as vol from homeassistant.components.sensor import ( @@ -166,8 +166,8 @@ class TrainSensor(SensorEntity): self, train_api: TrafikverketTrain, name: str, - from_station: str, - to_station: str, + from_station: StationInfo, + to_station: StationInfo, weekday: list, departuretime: time | None, entry_id: str, @@ -188,7 +188,7 @@ class TrainSensor(SensorEntity): configuration_url="https://api.trafikinfo.trafikverket.se/", ) self._attr_unique_id = create_unique_id( - from_station, to_station, departuretime, weekday + from_station.name, to_station.name, departuretime, weekday ) async def async_update(self) -> None: From f790a343c0dcc23c1a14349a407f78126a8eb63b Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 16 Apr 2022 18:17:07 +0200 Subject: [PATCH 9/9] Bumped version to 2022.4.5 --- homeassistant/const.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 8fa0b529c04..b307e8a5435 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -7,7 +7,7 @@ from .backports.enum import StrEnum MAJOR_VERSION: Final = 2022 MINOR_VERSION: Final = 4 -PATCH_VERSION: Final = "4" +PATCH_VERSION: Final = "5" __short_version__: Final = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__: Final = f"{__short_version__}.{PATCH_VERSION}" REQUIRED_PYTHON_VER: Final[tuple[int, int, int]] = (3, 9, 0) diff --git a/setup.cfg b/setup.cfg index e0103f4657e..b1e8c6d8d40 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = homeassistant -version = 2022.4.4 +version = 2022.4.5 author = The Home Assistant Authors author_email = hello@home-assistant.io license = Apache-2.0