Simplify device_info access in environment_canada (#136816)

* Simplify device_info access in environment_canada

* Update homeassistant/components/environment_canada/coordinator.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
pull/136822/head
epenet 2025-01-29 10:41:33 +01:00 committed by GitHub
parent b93c2382ce
commit a6d132a337
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 11 additions and 19 deletions

View File

@ -8,9 +8,8 @@ from env_canada import ECAirQuality, ECRadar, ECWeather
from homeassistant.const import CONF_LANGUAGE, CONF_LATITUDE, CONF_LONGITUDE, Platform
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
from .const import CONF_STATION, DOMAIN
from .const import CONF_STATION
from .coordinator import ECConfigEntry, ECDataUpdateCoordinator, ECRuntimeData
DEFAULT_RADAR_UPDATE_INTERVAL = timedelta(minutes=5)
@ -81,14 +80,3 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ECConfigEntry) ->
async def async_unload_entry(hass: HomeAssistant, config_entry: ECConfigEntry) -> bool:
"""Unload a config entry."""
return await hass.config_entries.async_unload_platforms(config_entry, PLATFORMS)
def device_info(config_entry: ECConfigEntry) -> DeviceInfo:
"""Build and return the device info for EC."""
return DeviceInfo(
entry_type=DeviceEntryType.SERVICE,
identifiers={(DOMAIN, config_entry.entry_id)},
manufacturer="Environment Canada",
name=config_entry.title,
configuration_url="https://weather.gc.ca/",
)

View File

@ -13,7 +13,6 @@ from homeassistant.helpers.entity_platform import (
from homeassistant.helpers.typing import VolDictType
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from . import device_info
from .const import ATTR_OBSERVATION_TIME
from .coordinator import ECConfigEntry
@ -55,7 +54,7 @@ class ECCameraEntity(CoordinatorEntity, Camera):
self._attr_unique_id = f"{coordinator.config_entry.unique_id}-radar"
self._attr_attribution = self.radar_object.metadata["attribution"]
self._attr_entity_registry_enabled_default = False
self._attr_device_info = device_info(coordinator.config_entry)
self._attr_device_info = coordinator.device_info
self.content_type = "image/gif"

View File

@ -11,6 +11,7 @@ from env_canada import ECAirQuality, ECRadar, ECWeather, ec_exc
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import DOMAIN
@ -52,6 +53,12 @@ class ECDataUpdateCoordinator[_ECDataTypeT: ECAirQuality | ECRadar | ECWeather](
)
self.ec_data = ec_data
self.last_update_success = False
self.device_info = DeviceInfo(
entry_type=DeviceEntryType.SERVICE,
identifiers={(DOMAIN, entry.entry_id)},
manufacturer="Environment Canada",
configuration_url="https://weather.gc.ca/",
)
async def _async_update_data(self) -> _ECDataTypeT:
"""Fetch data from EC."""

View File

@ -26,7 +26,6 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from . import device_info
from .const import ATTR_STATION
from .coordinator import ECConfigEntry
@ -282,7 +281,7 @@ class ECBaseSensorEntity(CoordinatorEntity, SensorEntity):
self._ec_data = coordinator.ec_data
self._attr_attribution = self._ec_data.metadata["attribution"]
self._attr_unique_id = f"{coordinator.config_entry.title}-{description.key}"
self._attr_device_info = device_info(coordinator.config_entry)
self._attr_device_info = coordinator.device_info
@property
def native_value(self):

View File

@ -37,7 +37,6 @@ from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers import entity_registry as er
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import device_info
from .const import DOMAIN
from .coordinator import ECConfigEntry
@ -104,7 +103,7 @@ class ECWeatherEntity(SingleCoordinatorWeatherEntity):
self._attr_unique_id = _calculate_unique_id(
coordinator.config_entry.unique_id, False
)
self._attr_device_info = device_info(coordinator.config_entry)
self._attr_device_info = coordinator.device_info
@property
def native_temperature(self):