Use runtime_data in directv (#136435)

This commit is contained in:
epenet 2025-01-24 14:14:42 +01:00 committed by GitHub
parent c991d4dac5
commit 384c173ab3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 13 additions and 22 deletions

View File

@ -12,13 +12,14 @@ from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import DOMAIN
PLATFORMS = [Platform.MEDIA_PLAYER, Platform.REMOTE] PLATFORMS = [Platform.MEDIA_PLAYER, Platform.REMOTE]
SCAN_INTERVAL = timedelta(seconds=30) SCAN_INTERVAL = timedelta(seconds=30)
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: type DirecTVConfigEntry = ConfigEntry[DIRECTV]
async def async_setup_entry(hass: HomeAssistant, entry: DirecTVConfigEntry) -> bool:
"""Set up DirecTV from a config entry.""" """Set up DirecTV from a config entry."""
dtv = DIRECTV(entry.data[CONF_HOST], session=async_get_clientsession(hass)) dtv = DIRECTV(entry.data[CONF_HOST], session=async_get_clientsession(hass))
@ -27,18 +28,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
except DIRECTVError as err: except DIRECTVError as err:
raise ConfigEntryNotReady from err raise ConfigEntryNotReady from err
hass.data.setdefault(DOMAIN, {}) entry.runtime_data = dtv
hass.data[DOMAIN][entry.entry_id] = dtv
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_unload_entry(hass: HomeAssistant, entry: DirecTVConfigEntry) -> bool:
"""Unload a config entry.""" """Unload a config entry."""
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS) return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok

View File

@ -14,17 +14,16 @@ from homeassistant.components.media_player import (
MediaPlayerState, MediaPlayerState,
MediaType, MediaType,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.util import dt as dt_util from homeassistant.util import dt as dt_util
from . import DirecTVConfigEntry
from .const import ( from .const import (
ATTR_MEDIA_CURRENTLY_RECORDING, ATTR_MEDIA_CURRENTLY_RECORDING,
ATTR_MEDIA_RATING, ATTR_MEDIA_RATING,
ATTR_MEDIA_RECORDED, ATTR_MEDIA_RECORDED,
ATTR_MEDIA_START_TIME, ATTR_MEDIA_START_TIME,
DOMAIN,
) )
from .entity import DIRECTVEntity from .entity import DIRECTVEntity
@ -55,11 +54,11 @@ SUPPORT_DTV_CLIENT = (
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: DirecTVConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the DirecTV config entry.""" """Set up the DirecTV config entry."""
dtv = hass.data[DOMAIN][entry.entry_id] dtv = entry.runtime_data
async_add_entities( async_add_entities(
( (

View File

@ -10,11 +10,10 @@ from typing import Any
from directv import DIRECTV, DIRECTVError from directv import DIRECTV, DIRECTVError
from homeassistant.components.remote import ATTR_NUM_REPEATS, RemoteEntity from homeassistant.components.remote import ATTR_NUM_REPEATS, RemoteEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN from . import DirecTVConfigEntry
from .entity import DIRECTVEntity from .entity import DIRECTVEntity
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -24,11 +23,11 @@ SCAN_INTERVAL = timedelta(minutes=2)
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
entry: ConfigEntry, entry: DirecTVConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Load DirecTV remote based on a config entry.""" """Load DirecTV remote based on a config entry."""
dtv = hass.data[DOMAIN][entry.entry_id] dtv = entry.runtime_data
async_add_entities( async_add_entities(
( (

View File

@ -1,6 +1,5 @@
"""Tests for the DirecTV integration.""" """Tests for the DirecTV integration."""
from homeassistant.components.directv.const import DOMAIN
from homeassistant.config_entries import ConfigEntryState from homeassistant.config_entries import ConfigEntryState
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
@ -24,11 +23,9 @@ async def test_unload_config_entry(
"""Test the DirecTV configuration entry unloading.""" """Test the DirecTV configuration entry unloading."""
entry = await setup_integration(hass, aioclient_mock) entry = await setup_integration(hass, aioclient_mock)
assert entry.entry_id in hass.data[DOMAIN]
assert entry.state is ConfigEntryState.LOADED assert entry.state is ConfigEntryState.LOADED
await hass.config_entries.async_unload(entry.entry_id) await hass.config_entries.async_unload(entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
assert entry.entry_id not in hass.data[DOMAIN]
assert entry.state is ConfigEntryState.NOT_LOADED assert entry.state is ConfigEntryState.NOT_LOADED