1 """The Radarr component."""
3 from __future__
import annotations
5 from dataclasses
import dataclass, fields
7 from aiopyarr.models.host_configuration
import PyArrHostConfiguration
8 from aiopyarr.radarr_client
import RadarrClient
15 from .coordinator
import (
16 CalendarUpdateCoordinator,
17 DiskSpaceDataUpdateCoordinator,
18 HealthDataUpdateCoordinator,
19 MoviesDataUpdateCoordinator,
20 QueueDataUpdateCoordinator,
21 RadarrDataUpdateCoordinator,
22 StatusDataUpdateCoordinator,
25 PLATFORMS = [Platform.BINARY_SENSOR, Platform.CALENDAR, Platform.SENSOR]
26 type RadarrConfigEntry = ConfigEntry[RadarrData]
29 @dataclass(kw_only=True, slots=True)
31 """Radarr data type."""
33 calendar: CalendarUpdateCoordinator
34 disk_space: DiskSpaceDataUpdateCoordinator
35 health: HealthDataUpdateCoordinator
36 movie: MoviesDataUpdateCoordinator
37 queue: QueueDataUpdateCoordinator
38 status: StatusDataUpdateCoordinator
42 """Set up Radarr from a config entry."""
43 host_configuration = PyArrHostConfiguration(
44 api_token=entry.data[CONF_API_KEY],
45 verify_ssl=entry.data[CONF_VERIFY_SSL],
46 url=entry.data[CONF_URL],
48 radarr = RadarrClient(
49 host_configuration=host_configuration,
60 for field
in fields(data):
61 coordinator: RadarrDataUpdateCoordinator = getattr(data, field.name)
63 if field.name ==
"movie":
64 entry.async_create_background_task(
66 coordinator.async_config_entry_first_refresh(),
67 "radarr.movie-coordinator-first-refresh",
70 await coordinator.async_config_entry_first_refresh()
71 entry.runtime_data = data
72 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
78 """Unload a config entry."""
79 return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
bool async_unload_entry(HomeAssistant hass, RadarrConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, RadarrConfigEntry 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)