Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """The Bring! integration."""
2 
3 from __future__ import annotations
4 
5 import logging
6 
7 from bring_api import (
8  Bring,
9  BringAuthException,
10  BringParseException,
11  BringRequestException,
12 )
13 
14 from homeassistant.config_entries import ConfigEntry
15 from homeassistant.const import CONF_EMAIL, CONF_PASSWORD, Platform
16 from homeassistant.core import HomeAssistant
17 from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
18 from homeassistant.helpers.aiohttp_client import async_get_clientsession
19 
20 from .const import DOMAIN
21 from .coordinator import BringDataUpdateCoordinator
22 
23 PLATFORMS: list[Platform] = [Platform.SENSOR, Platform.TODO]
24 
25 _LOGGER = logging.getLogger(__name__)
26 
27 type BringConfigEntry = ConfigEntry[BringDataUpdateCoordinator]
28 
29 
30 async def async_setup_entry(hass: HomeAssistant, entry: BringConfigEntry) -> bool:
31  """Set up Bring! from a config entry."""
32 
33  email = entry.data[CONF_EMAIL]
34  password = entry.data[CONF_PASSWORD]
35 
36  session = async_get_clientsession(hass)
37  bring = Bring(session, email, password)
38 
39  try:
40  await bring.login()
41  except BringRequestException as e:
42  raise ConfigEntryNotReady(
43  translation_domain=DOMAIN,
44  translation_key="setup_request_exception",
45  ) from e
46  except BringParseException as e:
47  raise ConfigEntryNotReady(
48  translation_domain=DOMAIN,
49  translation_key="setup_parse_exception",
50  ) from e
51  except BringAuthException as e:
53  translation_domain=DOMAIN,
54  translation_key="setup_authentication_exception",
55  translation_placeholders={CONF_EMAIL: email},
56  ) from e
57 
58  coordinator = BringDataUpdateCoordinator(hass, bring)
59  await coordinator.async_config_entry_first_refresh()
60 
61  entry.runtime_data = coordinator
62 
63  await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
64 
65  return True
66 
67 
68 async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
69  """Unload a config entry."""
70  return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
Definition: __init__.py:68
bool async_setup_entry(HomeAssistant hass, BringConfigEntry entry)
Definition: __init__.py:30
aiohttp.ClientSession async_get_clientsession(HomeAssistant hass, bool verify_ssl=True, socket.AddressFamily family=socket.AF_UNSPEC, ssl_util.SSLCipherList ssl_cipher=ssl_util.SSLCipherList.PYTHON_DEFAULT)