1 """The Monzo integration."""
3 from dataclasses
import dataclass
4 from datetime
import timedelta
6 from pprint
import pformat
9 from monzopy
import AuthorisationExpiredError, InvalidMonzoAPIResponseError
15 from .api
import AuthenticatedMonzoAPI
16 from .const
import DOMAIN
18 _LOGGER = logging.getLogger(__name__)
23 """A dataclass for holding sensor data returned by the DataUpdateCoordinator."""
25 accounts: list[dict[str, Any]]
26 pots: list[dict[str, Any]]
30 """Class to manage fetching Monzo data from the API."""
32 def __init__(self, hass: HomeAssistant, api: AuthenticatedMonzoAPI) ->
None:
43 """Fetch data from Monzo API."""
45 accounts = await self.
apiapi.user_account.accounts()
46 pots = await self.
apiapi.user_account.pots()
47 except AuthorisationExpiredError
as err:
48 raise ConfigEntryAuthFailed
from err
49 except InvalidMonzoAPIResponseError
as err:
50 message =
"Invalid Monzo API response."
53 "%s\nMissing key: %s\nResponse:\n%s",
56 pformat(err.response),
58 message +=
" Enabling debug logging for details."
None __init__(self, HomeAssistant hass, AuthenticatedMonzoAPI api)
MonzoData _async_update_data(self)