From 46f8fb3ac19ca9810a3399520b59a119a6736614 Mon Sep 17 00:00:00 2001 From: Marc Mueller <30130371+cdce8p@users.noreply.github.com> Date: Mon, 5 Feb 2024 18:45:16 +0100 Subject: [PATCH] Use builtin TimeoutError [misc] (#109703) --- homeassistant/components/bond/__init__.py | 3 +-- homeassistant/components/bond/entity.py | 4 ++-- homeassistant/components/control4/config_flow.py | 3 +-- homeassistant/components/nightscout/__init__.py | 3 +-- homeassistant/components/nightscout/config_flow.py | 3 +-- homeassistant/components/nightscout/sensor.py | 3 +-- homeassistant/components/ourgroceries/__init__.py | 4 +--- homeassistant/components/ourgroceries/config_flow.py | 3 +-- tests/components/bond/common.py | 3 +-- tests/components/hassio/test_issues.py | 1 - tests/components/homewizard/test_init.py | 1 - tests/components/ourgroceries/test_config_flow.py | 3 +-- tests/components/ourgroceries/test_init.py | 8 ++------ tests/components/ourgroceries/test_todo.py | 3 +-- 14 files changed, 14 insertions(+), 31 deletions(-) diff --git a/homeassistant/components/bond/__init__.py b/homeassistant/components/bond/__init__.py index b6f402004f6..2e60512156f 100644 --- a/homeassistant/components/bond/__init__.py +++ b/homeassistant/components/bond/__init__.py @@ -1,5 +1,4 @@ """The Bond integration.""" -from asyncio import TimeoutError as AsyncIOTimeoutError from http import HTTPStatus import logging from typing import Any @@ -56,7 +55,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: _LOGGER.error("Bond token no longer valid: %s", ex) return False raise ConfigEntryNotReady from ex - except (ClientError, AsyncIOTimeoutError, OSError) as error: + except (ClientError, TimeoutError, OSError) as error: raise ConfigEntryNotReady from error bpup_subs = BPUPSubscriptions() diff --git a/homeassistant/components/bond/entity.py b/homeassistant/components/bond/entity.py index 2c54ad8f3dd..dd307547b81 100644 --- a/homeassistant/components/bond/entity.py +++ b/homeassistant/components/bond/entity.py @@ -2,7 +2,7 @@ from __future__ import annotations from abc import abstractmethod -from asyncio import Lock, TimeoutError as AsyncIOTimeoutError +from asyncio import Lock from datetime import datetime import logging @@ -139,7 +139,7 @@ class BondEntity(Entity): """Fetch via the API.""" try: state: dict = await self._hub.bond.device_state(self._device_id) - except (ClientError, AsyncIOTimeoutError, OSError) as error: + except (ClientError, TimeoutError, OSError) as error: if self.available: _LOGGER.warning( "Entity %s has become unavailable", self.entity_id, exc_info=error diff --git a/homeassistant/components/control4/config_flow.py b/homeassistant/components/control4/config_flow.py index 06dc62d114b..b93e586b7ca 100644 --- a/homeassistant/components/control4/config_flow.py +++ b/homeassistant/components/control4/config_flow.py @@ -1,7 +1,6 @@ """Config flow for Control4 integration.""" from __future__ import annotations -from asyncio import TimeoutError as asyncioTimeoutError import logging from aiohttp.client_exceptions import ClientError @@ -82,7 +81,7 @@ class Control4Validator: ) await director.getAllItemInfo() return True - except (Unauthorized, ClientError, asyncioTimeoutError): + except (Unauthorized, ClientError, TimeoutError): _LOGGER.error("Failed to connect to the Control4 controller") return False diff --git a/homeassistant/components/nightscout/__init__.py b/homeassistant/components/nightscout/__init__.py index 88f12ffa4bc..798fcf1ec9d 100644 --- a/homeassistant/components/nightscout/__init__.py +++ b/homeassistant/components/nightscout/__init__.py @@ -1,5 +1,4 @@ """The Nightscout integration.""" -from asyncio import TimeoutError as AsyncIOTimeoutError from aiohttp import ClientError from py_nightscout import Api as NightscoutAPI @@ -26,7 +25,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: api = NightscoutAPI(server_url, session=session, api_secret=api_key) try: status = await api.get_server_status() - except (ClientError, AsyncIOTimeoutError, OSError) as error: + except (ClientError, TimeoutError, OSError) as error: raise ConfigEntryNotReady from error hass.data.setdefault(DOMAIN, {}) diff --git a/homeassistant/components/nightscout/config_flow.py b/homeassistant/components/nightscout/config_flow.py index 98e075ba3c9..6249979c83d 100644 --- a/homeassistant/components/nightscout/config_flow.py +++ b/homeassistant/components/nightscout/config_flow.py @@ -1,5 +1,4 @@ """Config flow for Nightscout integration.""" -from asyncio import TimeoutError as AsyncIOTimeoutError import logging from typing import Any @@ -30,7 +29,7 @@ async def _validate_input(data: dict[str, Any]) -> dict[str, str]: await api.get_sgvs() except ClientResponseError as error: raise InputValidationError("invalid_auth") from error - except (ClientError, AsyncIOTimeoutError, OSError) as error: + except (ClientError, TimeoutError, OSError) as error: raise InputValidationError("cannot_connect") from error # Return info to be stored in the config entry. diff --git a/homeassistant/components/nightscout/sensor.py b/homeassistant/components/nightscout/sensor.py index 851610ee374..bdc46e75cb8 100644 --- a/homeassistant/components/nightscout/sensor.py +++ b/homeassistant/components/nightscout/sensor.py @@ -1,7 +1,6 @@ """Support for Nightscout sensors.""" from __future__ import annotations -from asyncio import TimeoutError as AsyncIOTimeoutError from datetime import timedelta import logging from typing import Any @@ -51,7 +50,7 @@ class NightscoutSensor(SensorEntity): """Fetch the latest data from Nightscout REST API and update the state.""" try: values = await self.api.get_sgvs() - except (ClientError, AsyncIOTimeoutError, OSError) as error: + except (ClientError, TimeoutError, OSError) as error: _LOGGER.error("Error fetching data. Failed with %s", error) self._attr_available = False return diff --git a/homeassistant/components/ourgroceries/__init__.py b/homeassistant/components/ourgroceries/__init__.py index ebb928e72d0..472313aa315 100644 --- a/homeassistant/components/ourgroceries/__init__.py +++ b/homeassistant/components/ourgroceries/__init__.py @@ -1,8 +1,6 @@ """The OurGroceries integration.""" from __future__ import annotations -from asyncio import TimeoutError as AsyncIOTimeoutError - from aiohttp import ClientError from ourgroceries import OurGroceries from ourgroceries.exceptions import InvalidLoginException @@ -26,7 +24,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: og = OurGroceries(data[CONF_USERNAME], data[CONF_PASSWORD]) try: await og.login() - except (AsyncIOTimeoutError, ClientError) as error: + except (TimeoutError, ClientError) as error: raise ConfigEntryNotReady from error except InvalidLoginException: return False diff --git a/homeassistant/components/ourgroceries/config_flow.py b/homeassistant/components/ourgroceries/config_flow.py index a982325fceb..65670dd7f92 100644 --- a/homeassistant/components/ourgroceries/config_flow.py +++ b/homeassistant/components/ourgroceries/config_flow.py @@ -1,7 +1,6 @@ """Config flow for OurGroceries integration.""" from __future__ import annotations -from asyncio import TimeoutError as AsyncIOTimeoutError import logging from typing import Any @@ -40,7 +39,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): og = OurGroceries(user_input[CONF_USERNAME], user_input[CONF_PASSWORD]) try: await og.login() - except (AsyncIOTimeoutError, ClientError): + except (TimeoutError, ClientError): errors["base"] = "cannot_connect" except InvalidLoginException: errors["base"] = "invalid_auth" diff --git a/tests/components/bond/common.py b/tests/components/bond/common.py index ff1f986583e..d97ef9a7a31 100644 --- a/tests/components/bond/common.py +++ b/tests/components/bond/common.py @@ -1,7 +1,6 @@ """Common methods used across tests for Bond.""" from __future__ import annotations -from asyncio import TimeoutError as AsyncIOTimeoutError from contextlib import nullcontext from datetime import timedelta from typing import Any @@ -248,7 +247,7 @@ async def help_test_entity_available( assert hass.states.get(entity_id).state != STATE_UNAVAILABLE - with patch_bond_device_state(side_effect=AsyncIOTimeoutError()): + with patch_bond_device_state(side_effect=TimeoutError()): async_fire_time_changed(hass, utcnow() + timedelta(seconds=30)) await hass.async_block_till_done() assert hass.states.get(entity_id).state == STATE_UNAVAILABLE diff --git a/tests/components/hassio/test_issues.py b/tests/components/hassio/test_issues.py index 4d694b79e46..21cd249bd53 100644 --- a/tests/components/hassio/test_issues.py +++ b/tests/components/hassio/test_issues.py @@ -1,7 +1,6 @@ """Test issues from supervisor issues.""" from __future__ import annotations -from asyncio import TimeoutError import os from typing import Any from unittest.mock import ANY, patch diff --git a/tests/components/homewizard/test_init.py b/tests/components/homewizard/test_init.py index a4893c77f42..e777b2d43c6 100644 --- a/tests/components/homewizard/test_init.py +++ b/tests/components/homewizard/test_init.py @@ -1,5 +1,4 @@ """Tests for the homewizard component.""" -from asyncio import TimeoutError from unittest.mock import MagicMock from homewizard_energy.errors import DisabledError, HomeWizardEnergyException diff --git a/tests/components/ourgroceries/test_config_flow.py b/tests/components/ourgroceries/test_config_flow.py index f9d274125c1..78504e1fb7a 100644 --- a/tests/components/ourgroceries/test_config_flow.py +++ b/tests/components/ourgroceries/test_config_flow.py @@ -5,7 +5,6 @@ import pytest from homeassistant import config_entries from homeassistant.components.ourgroceries.config_flow import ( - AsyncIOTimeoutError, ClientError, InvalidLoginException, ) @@ -49,7 +48,7 @@ async def test_form(hass: HomeAssistant, mock_setup_entry: AsyncMock) -> None: [ (InvalidLoginException, "invalid_auth"), (ClientError, "cannot_connect"), - (AsyncIOTimeoutError, "cannot_connect"), + (TimeoutError, "cannot_connect"), (Exception, "unknown"), ], ) diff --git a/tests/components/ourgroceries/test_init.py b/tests/components/ourgroceries/test_init.py index ef96c5e811c..43905c4fcf9 100644 --- a/tests/components/ourgroceries/test_init.py +++ b/tests/components/ourgroceries/test_init.py @@ -3,11 +3,7 @@ from unittest.mock import AsyncMock import pytest -from homeassistant.components.ourgroceries import ( - AsyncIOTimeoutError, - ClientError, - InvalidLoginException, -) +from homeassistant.components.ourgroceries import ClientError, InvalidLoginException from homeassistant.components.ourgroceries.const import DOMAIN from homeassistant.config_entries import ConfigEntryState from homeassistant.core import HomeAssistant @@ -41,7 +37,7 @@ def login_with_error(exception, ourgroceries: AsyncMock): [ (InvalidLoginException, ConfigEntryState.SETUP_ERROR), (ClientError, ConfigEntryState.SETUP_RETRY), - (AsyncIOTimeoutError, ConfigEntryState.SETUP_RETRY), + (TimeoutError, ConfigEntryState.SETUP_RETRY), ], ) async def test_init_failure( diff --git a/tests/components/ourgroceries/test_todo.py b/tests/components/ourgroceries/test_todo.py index 649e86f2b05..8ede2a40cc8 100644 --- a/tests/components/ourgroceries/test_todo.py +++ b/tests/components/ourgroceries/test_todo.py @@ -1,5 +1,4 @@ """Unit tests for the OurGroceries todo platform.""" -from asyncio import TimeoutError as AsyncIOTimeoutError from unittest.mock import AsyncMock from aiohttp import ClientError @@ -257,7 +256,7 @@ async def test_version_id_optimization( ("exception"), [ (ClientError), - (AsyncIOTimeoutError), + (TimeoutError), ], ) async def test_coordinator_error(