1 """The microBees integration."""
3 from dataclasses
import dataclass
4 from http
import HTTPStatus
7 from microBeesPy
import MicroBees
15 from .const
import DOMAIN, PLATFORMS
16 from .coordinator
import MicroBeesUpdateCoordinator
19 @dataclass(frozen=True, kw_only=True)
21 """Microbees data stored in the Home Assistant data object."""
24 coordinator: MicroBeesUpdateCoordinator
25 session: config_entry_oauth2_flow.OAuth2Session
29 """Set up microBees from a config entry."""
31 await config_entry_oauth2_flow.async_get_config_entry_implementation(
36 session = config_entry_oauth2_flow.OAuth2Session(hass, entry, implementation)
38 await session.async_ensure_token_valid()
39 except aiohttp.ClientResponseError
as ex:
41 HTTPStatus.BAD_REQUEST,
42 HTTPStatus.UNAUTHORIZED,
46 raise ConfigEntryNotReady
from ex
47 microbees = MicroBees(token=session.token[CONF_ACCESS_TOKEN])
49 await coordinator.async_config_entry_first_refresh()
52 coordinator=coordinator,
55 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
60 """Unload a config entry."""
61 if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
62 hass.data[DOMAIN].pop(entry.entry_id)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)