diff --git a/homeassistant/components/tile/__init__.py b/homeassistant/components/tile/__init__.py index cca0706954f..38f52a067fa 100644 --- a/homeassistant/components/tile/__init__.py +++ b/homeassistant/components/tile/__init__.py @@ -1,6 +1,7 @@ """The Tile component.""" from __future__ import annotations +from dataclasses import dataclass from datetime import timedelta from functools import partial @@ -17,7 +18,7 @@ from homeassistant.helpers.entity_registry import RegistryEntry, async_migrate_e from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed from homeassistant.util.async_ import gather_with_concurrency -from .const import DATA_COORDINATOR, DATA_TILE, DOMAIN, LOGGER +from .const import DOMAIN, LOGGER PLATFORMS = [Platform.DEVICE_TRACKER] DEVICE_TYPES = ["PHONE", "TILE"] @@ -28,6 +29,14 @@ DEFAULT_UPDATE_INTERVAL = timedelta(minutes=2) CONF_SHOW_INACTIVE = "show_inactive" +@dataclass +class TileData: + """Define an object to be stored in `hass.data`.""" + + coordinators: dict[str, DataUpdateCoordinator] + tiles: dict[str, Tile] + + async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up Tile as config entry.""" @@ -100,10 +109,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: await gather_with_concurrency(DEFAULT_INIT_TASK_LIMIT, *coordinator_init_tasks) hass.data.setdefault(DOMAIN, {}) - hass.data[DOMAIN][entry.entry_id] = { - DATA_COORDINATOR: coordinators, - DATA_TILE: tiles, - } + hass.data[DOMAIN][entry.entry_id] = TileData(coordinators=coordinators, tiles=tiles) await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) diff --git a/homeassistant/components/tile/const.py b/homeassistant/components/tile/const.py index 0f6f0dabb5c..eed3eb698ef 100644 --- a/homeassistant/components/tile/const.py +++ b/homeassistant/components/tile/const.py @@ -3,7 +3,4 @@ import logging DOMAIN = "tile" -DATA_COORDINATOR = "coordinator" -DATA_TILE = "tile" - LOGGER = logging.getLogger(__package__) diff --git a/homeassistant/components/tile/device_tracker.py b/homeassistant/components/tile/device_tracker.py index df5f035a849..61e9a1bdcd9 100644 --- a/homeassistant/components/tile/device_tracker.py +++ b/homeassistant/components/tile/device_tracker.py @@ -18,7 +18,8 @@ from homeassistant.helpers.update_coordinator import ( DataUpdateCoordinator, ) -from .const import DATA_COORDINATOR, DATA_TILE, DOMAIN +from . import TileData +from .const import DOMAIN _LOGGER = logging.getLogger(__name__) @@ -38,14 +39,12 @@ async def async_setup_entry( hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Tile device trackers.""" + data: TileData = hass.data[DOMAIN][entry.entry_id] + async_add_entities( [ - TileDeviceTracker( - entry, - hass.data[DOMAIN][entry.entry_id][DATA_COORDINATOR][tile_uuid], - tile, - ) - for tile_uuid, tile in hass.data[DOMAIN][entry.entry_id][DATA_TILE].items() + TileDeviceTracker(entry, data.coordinators[tile_uuid], tile) + for tile_uuid, tile in data.tiles.items() ] ) diff --git a/homeassistant/components/tile/diagnostics.py b/homeassistant/components/tile/diagnostics.py index 7e85ef25047..8654bf44680 100644 --- a/homeassistant/components/tile/diagnostics.py +++ b/homeassistant/components/tile/diagnostics.py @@ -3,14 +3,13 @@ from __future__ import annotations from typing import Any -from pytile.tile import Tile - from homeassistant.components.diagnostics import async_redact_data from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_LATITUDE, CONF_LONGITUDE from homeassistant.core import HomeAssistant -from .const import DATA_TILE, DOMAIN +from . import TileData +from .const import DOMAIN CONF_ALTITUDE = "altitude" CONF_UUID = "uuid" @@ -27,8 +26,8 @@ async def async_get_config_entry_diagnostics( hass: HomeAssistant, entry: ConfigEntry ) -> dict[str, Any]: """Return diagnostics for a config entry.""" - tiles: dict[str, Tile] = hass.data[DOMAIN][entry.entry_id][DATA_TILE] + data: TileData = hass.data[DOMAIN][entry.entry_id] return async_redact_data( - {"tiles": [tile.as_dict() for tile in tiles.values()]}, TO_REDACT + {"tiles": [tile.as_dict() for tile in data.tiles.values()]}, TO_REDACT )