Skip to content

Commit 0eb8dae

Browse files
authored
Refactor async_update in Honeywell (home-assistant#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
1 parent 3622944 commit 0eb8dae

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

homeassistant/components/honeywell/climate.py

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@
66
from typing import Any
77

88
from aiohttp import ClientConnectionError
9-
from aiosomecomfort import SomeComfortError, UnauthorizedError, UnexpectedResponse
9+
from aiosomecomfort import (
10+
AuthError,
11+
SomeComfortError,
12+
UnauthorizedError,
13+
UnexpectedResponse,
14+
)
1015
from aiosomecomfort.device import Device as SomeComfortDevice
1116

1217
from homeassistant.components.climate import (
@@ -492,31 +497,38 @@ async def async_turn_aux_heat_off(self) -> None:
492497

493498
async def async_update(self) -> None:
494499
"""Get the latest state from the service."""
495-
try:
496-
await self._device.refresh()
497-
self._attr_available = True
498-
self._retry = 0
499500

500-
except UnauthorizedError:
501+
async def _login() -> None:
501502
try:
502503
await self._data.client.login()
503504
await self._device.refresh()
504-
self._attr_available = True
505-
self._retry = 0
506505

507506
except (
508-
SomeComfortError,
507+
AuthError,
509508
ClientConnectionError,
510509
asyncio.TimeoutError,
511510
):
512511
self._retry += 1
513-
if self._retry > RETRY:
514-
self._attr_available = False
512+
self._attr_available = self._retry <= RETRY
513+
return
514+
515+
self._attr_available = True
516+
self._retry = 0
517+
518+
try:
519+
await self._device.refresh()
520+
521+
except UnauthorizedError:
522+
await _login()
523+
return
515524

516525
except (ClientConnectionError, asyncio.TimeoutError):
517526
self._retry += 1
518-
if self._retry > RETRY:
519-
self._attr_available = False
527+
self._attr_available = self._retry <= RETRY
528+
return
520529

521530
except UnexpectedResponse:
522-
pass
531+
return
532+
533+
self._attr_available = True
534+
self._retry = 0

0 commit comments

Comments
 (0)