Explicitly pass in the config_entry in transmission coordinator (#137891)

explicitly pass in the config_entry in coordinator
This commit is contained in:
Michael 2025-02-09 14:26:09 +01:00 committed by GitHub
parent 3153c54d1a
commit cce03d2ee7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 18 additions and 13 deletions

View File

@ -15,7 +15,7 @@ from transmission_rpc.error import (
) )
import voluptuous as vol import voluptuous as vol
from homeassistant.config_entries import ConfigEntry, ConfigEntryState from homeassistant.config_entries import ConfigEntryState
from homeassistant.const import ( from homeassistant.const import (
CONF_HOST, CONF_HOST,
CONF_ID, CONF_ID,
@ -54,7 +54,7 @@ from .const import (
SERVICE_START_TORRENT, SERVICE_START_TORRENT,
SERVICE_STOP_TORRENT, SERVICE_STOP_TORRENT,
) )
from .coordinator import TransmissionDataUpdateCoordinator from .coordinator import TransmissionConfigEntry, TransmissionDataUpdateCoordinator
from .errors import AuthenticationError, CannotConnect, UnknownError from .errors import AuthenticationError, CannotConnect, UnknownError
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -117,8 +117,6 @@ SERVICE_STOP_TORRENT_SCHEMA = vol.All(
CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN) CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN)
type TransmissionConfigEntry = ConfigEntry[TransmissionDataUpdateCoordinator]
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Set up the Transmission component.""" """Set up the Transmission component."""
@ -167,12 +165,16 @@ async def async_setup_entry(
return True return True
async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: async def async_unload_entry(
hass: HomeAssistant, config_entry: TransmissionConfigEntry
) -> bool:
"""Unload Transmission Entry from config_entry.""" """Unload Transmission Entry from config_entry."""
return await hass.config_entries.async_unload_platforms(config_entry, PLATFORMS) return await hass.config_entries.async_unload_platforms(config_entry, PLATFORMS)
async def async_migrate_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: async def async_migrate_entry(
hass: HomeAssistant, config_entry: TransmissionConfigEntry
) -> bool:
"""Migrate an old config entry.""" """Migrate an old config entry."""
_LOGGER.debug( _LOGGER.debug(
"Migrating from version %s.%s", "Migrating from version %s.%s",

View File

@ -27,17 +27,21 @@ from .const import (
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
type TransmissionConfigEntry = ConfigEntry[TransmissionDataUpdateCoordinator]
class TransmissionDataUpdateCoordinator(DataUpdateCoordinator[SessionStats]): class TransmissionDataUpdateCoordinator(DataUpdateCoordinator[SessionStats]):
"""Transmission dataupdate coordinator class.""" """Transmission dataupdate coordinator class."""
config_entry: ConfigEntry config_entry: TransmissionConfigEntry
def __init__( def __init__(
self, hass: HomeAssistant, entry: ConfigEntry, api: transmission_rpc.Client self,
hass: HomeAssistant,
entry: TransmissionConfigEntry,
api: transmission_rpc.Client,
) -> None: ) -> None:
"""Initialize the Transmission RPC API.""" """Initialize the Transmission RPC API."""
self.config_entry = entry
self.api = api self.api = api
self.host = entry.data[CONF_HOST] self.host = entry.data[CONF_HOST]
self._session: transmission_rpc.Session | None = None self._session: transmission_rpc.Session | None = None
@ -47,6 +51,7 @@ class TransmissionDataUpdateCoordinator(DataUpdateCoordinator[SessionStats]):
self.torrents: list[transmission_rpc.Torrent] = [] self.torrents: list[transmission_rpc.Torrent] = []
super().__init__( super().__init__(
hass, hass,
config_entry=entry,
name=f"{DOMAIN} - {self.host}", name=f"{DOMAIN} - {self.host}",
logger=_LOGGER, logger=_LOGGER,
update_interval=timedelta(seconds=DEFAULT_SCAN_INTERVAL), update_interval=timedelta(seconds=DEFAULT_SCAN_INTERVAL),

View File

@ -21,7 +21,6 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import StateType from homeassistant.helpers.typing import StateType
from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from . import TransmissionConfigEntry
from .const import ( from .const import (
DOMAIN, DOMAIN,
STATE_ATTR_TORRENT_INFO, STATE_ATTR_TORRENT_INFO,
@ -30,7 +29,7 @@ from .const import (
STATE_UP_DOWN, STATE_UP_DOWN,
SUPPORTED_ORDER_MODES, SUPPORTED_ORDER_MODES,
) )
from .coordinator import TransmissionDataUpdateCoordinator from .coordinator import TransmissionConfigEntry, TransmissionDataUpdateCoordinator
MODES: dict[str, list[str] | None] = { MODES: dict[str, list[str] | None] = {
"started_torrents": ["downloading"], "started_torrents": ["downloading"],

View File

@ -10,9 +10,8 @@ from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from . import TransmissionConfigEntry
from .const import DOMAIN from .const import DOMAIN
from .coordinator import TransmissionDataUpdateCoordinator from .coordinator import TransmissionConfigEntry, TransmissionDataUpdateCoordinator
@dataclass(frozen=True, kw_only=True) @dataclass(frozen=True, kw_only=True)