Refactor async_update in Honeywell (#103069)

* Refactor async_update

* remove ignore-import

* Restore somecomforterror rather than autherror

* Update climate.py

Limit exceptions in async_update()

* Update climate.py

Ruff it

* Update climate.py

Ruff

* Refactor to login routine

* Add back avialable change

* Address extra logic in try

* Address expected returns with logic move
This commit is contained in:
mkmer 2023-11-19 04:41:17 -05:00 committed by GitHub
parent 3622944dda
commit 0eb8daee23
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -6,7 +6,12 @@ import datetime
from typing import Any
from aiohttp import ClientConnectionError
from aiosomecomfort import SomeComfortError, UnauthorizedError, UnexpectedResponse
from aiosomecomfort import (
AuthError,
SomeComfortError,
UnauthorizedError,
UnexpectedResponse,
)
from aiosomecomfort.device import Device as SomeComfortDevice
from homeassistant.components.climate import (
@ -492,31 +497,38 @@ class HoneywellUSThermostat(ClimateEntity):
async def async_update(self) -> None:
"""Get the latest state from the service."""
try:
await self._device.refresh()
self._attr_available = True
self._retry = 0
except UnauthorizedError:
async def _login() -> None:
try:
await self._data.client.login()
await self._device.refresh()
self._attr_available = True
self._retry = 0
except (
SomeComfortError,
AuthError,
ClientConnectionError,
asyncio.TimeoutError,
):
self._retry += 1
if self._retry > RETRY:
self._attr_available = False
self._attr_available = self._retry <= RETRY
return
self._attr_available = True
self._retry = 0
try:
await self._device.refresh()
except UnauthorizedError:
await _login()
return
except (ClientConnectionError, asyncio.TimeoutError):
self._retry += 1
if self._retry > RETRY:
self._attr_available = False
self._attr_available = self._retry <= RETRY
return
except UnexpectedResponse:
pass
return
self._attr_available = True
self._retry = 0