1 """The Lidarr component."""
3 from __future__
import annotations
5 from dataclasses
import dataclass, fields
7 from aiopyarr.lidarr_client
import LidarrClient
8 from aiopyarr.models.host_configuration
import PyArrHostConfiguration
17 from .const
import DEFAULT_NAME, DOMAIN
18 from .coordinator
import (
19 AlbumsDataUpdateCoordinator,
20 DiskSpaceDataUpdateCoordinator,
21 QueueDataUpdateCoordinator,
22 StatusDataUpdateCoordinator,
23 WantedDataUpdateCoordinator,
26 type LidarrConfigEntry = ConfigEntry[LidarrData]
28 PLATFORMS = [Platform.SENSOR]
31 @dataclass(kw_only=True, slots=True)
33 """Lidarr data type."""
35 disk_space: DiskSpaceDataUpdateCoordinator
36 queue: QueueDataUpdateCoordinator
37 status: StatusDataUpdateCoordinator
38 wanted: WantedDataUpdateCoordinator
39 albums: AlbumsDataUpdateCoordinator
43 """Set up Lidarr from a config entry."""
44 host_configuration = PyArrHostConfiguration(
45 api_token=entry.data[CONF_API_KEY],
46 verify_ssl=entry.data[CONF_VERIFY_SSL],
47 url=entry.data[CONF_URL],
49 lidarr = LidarrClient(
50 host_configuration=host_configuration,
61 for field
in fields(data):
62 coordinator = getattr(data, field.name)
63 await coordinator.async_config_entry_first_refresh()
64 device_registry = dr.async_get(hass)
65 device_registry.async_get_or_create(
66 config_entry_id=entry.entry_id,
67 configuration_url=entry.data[CONF_URL],
68 entry_type=DeviceEntryType.SERVICE,
69 identifiers={(DOMAIN, entry.entry_id)},
70 manufacturer=DEFAULT_NAME,
71 sw_version=data.status.data,
73 entry.runtime_data = data
74 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
80 """Unload a config entry."""
81 return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
bool async_unload_entry(HomeAssistant hass, LidarrConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, LidarrConfigEntry entry)
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)