From 8b7cfc070e7da6dd4f9a64a79c280ee78413f573 Mon Sep 17 00:00:00 2001 From: Jan-Philipp Benecke Date: Wed, 1 Nov 2023 14:21:39 +0100 Subject: [PATCH] Move base entity of system_bridge to own module (#103167) * Move base entity of system_bridge to own module * Add entity.py to .coveragerc --- .coveragerc | 1 + .../components/system_bridge/__init__.py | 42 ----------------- .../components/system_bridge/binary_sensor.py | 2 +- .../components/system_bridge/entity.py | 47 +++++++++++++++++++ .../components/system_bridge/media_player.py | 2 +- .../components/system_bridge/sensor.py | 2 +- .../components/system_bridge/update.py | 2 +- 7 files changed, 52 insertions(+), 46 deletions(-) create mode 100644 homeassistant/components/system_bridge/entity.py diff --git a/.coveragerc b/.coveragerc index 2c9759b3c76..e41d668ed56 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1291,6 +1291,7 @@ omit = homeassistant/components/system_bridge/__init__.py homeassistant/components/system_bridge/binary_sensor.py homeassistant/components/system_bridge/coordinator.py + homeassistant/components/system_bridge/entity.py homeassistant/components/system_bridge/media_player.py homeassistant/components/system_bridge/notify.py homeassistant/components/system_bridge/sensor.py diff --git a/homeassistant/components/system_bridge/__init__.py b/homeassistant/components/system_bridge/__init__.py index b096a788906..843640695e4 100644 --- a/homeassistant/components/system_bridge/__init__.py +++ b/homeassistant/components/system_bridge/__init__.py @@ -36,8 +36,6 @@ from homeassistant.helpers import ( discovery, ) from homeassistant.helpers.aiohttp_client import async_get_clientsession -from homeassistant.helpers.device_registry import DeviceInfo -from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import DOMAIN, MODULES from .coordinator import SystemBridgeDataUpdateCoordinator @@ -330,43 +328,3 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_reload_entry(hass: HomeAssistant, entry: ConfigEntry) -> None: """Reload the config entry when it changed.""" await hass.config_entries.async_reload(entry.entry_id) - - -class SystemBridgeEntity(CoordinatorEntity[SystemBridgeDataUpdateCoordinator]): - """Defines a base System Bridge entity.""" - - _attr_has_entity_name = True - - def __init__( - self, - coordinator: SystemBridgeDataUpdateCoordinator, - api_port: int, - key: str, - ) -> None: - """Initialize the System Bridge entity.""" - super().__init__(coordinator) - - self._hostname = coordinator.data.system.hostname - self._key = f"{self._hostname}_{key}" - self._configuration_url = ( - f"http://{self._hostname}:{api_port}/app/settings.html" - ) - self._mac_address = coordinator.data.system.mac_address - self._uuid = coordinator.data.system.uuid - self._version = coordinator.data.system.version - - @property - def unique_id(self) -> str: - """Return the unique ID for this entity.""" - return self._key - - @property - def device_info(self) -> DeviceInfo: - """Return device information about this System Bridge instance.""" - return DeviceInfo( - configuration_url=self._configuration_url, - connections={(dr.CONNECTION_NETWORK_MAC, self._mac_address)}, - identifiers={(DOMAIN, self._uuid)}, - name=self._hostname, - sw_version=self._version, - ) diff --git a/homeassistant/components/system_bridge/binary_sensor.py b/homeassistant/components/system_bridge/binary_sensor.py index e3ecc3817a6..511feeaf93c 100644 --- a/homeassistant/components/system_bridge/binary_sensor.py +++ b/homeassistant/components/system_bridge/binary_sensor.py @@ -14,9 +14,9 @@ from homeassistant.const import CONF_PORT from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import SystemBridgeEntity from .const import DOMAIN from .coordinator import SystemBridgeDataUpdateCoordinator +from .entity import SystemBridgeEntity @dataclass diff --git a/homeassistant/components/system_bridge/entity.py b/homeassistant/components/system_bridge/entity.py new file mode 100644 index 00000000000..72a6fc93977 --- /dev/null +++ b/homeassistant/components/system_bridge/entity.py @@ -0,0 +1,47 @@ +"""Base entity for the system bridge integration.""" +from homeassistant.helpers import device_registry as dr +from homeassistant.helpers.device_registry import DeviceInfo +from homeassistant.helpers.update_coordinator import CoordinatorEntity + +from .const import DOMAIN +from .coordinator import SystemBridgeDataUpdateCoordinator + + +class SystemBridgeEntity(CoordinatorEntity[SystemBridgeDataUpdateCoordinator]): + """Defines a base System Bridge entity.""" + + _attr_has_entity_name = True + + def __init__( + self, + coordinator: SystemBridgeDataUpdateCoordinator, + api_port: int, + key: str, + ) -> None: + """Initialize the System Bridge entity.""" + super().__init__(coordinator) + + self._hostname = coordinator.data.system.hostname + self._key = f"{self._hostname}_{key}" + self._configuration_url = ( + f"http://{self._hostname}:{api_port}/app/settings.html" + ) + self._mac_address = coordinator.data.system.mac_address + self._uuid = coordinator.data.system.uuid + self._version = coordinator.data.system.version + + @property + def unique_id(self) -> str: + """Return the unique ID for this entity.""" + return self._key + + @property + def device_info(self) -> DeviceInfo: + """Return device information about this System Bridge instance.""" + return DeviceInfo( + configuration_url=self._configuration_url, + connections={(dr.CONNECTION_NETWORK_MAC, self._mac_address)}, + identifiers={(DOMAIN, self._uuid)}, + name=self._hostname, + sw_version=self._version, + ) diff --git a/homeassistant/components/system_bridge/media_player.py b/homeassistant/components/system_bridge/media_player.py index 088c57573f1..fea0837497d 100644 --- a/homeassistant/components/system_bridge/media_player.py +++ b/homeassistant/components/system_bridge/media_player.py @@ -22,9 +22,9 @@ from homeassistant.const import CONF_PORT from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import SystemBridgeEntity from .const import DOMAIN from .coordinator import SystemBridgeCoordinatorData, SystemBridgeDataUpdateCoordinator +from .entity import SystemBridgeEntity STATUS_CHANGING: Final[str] = "CHANGING" STATUS_STOPPED: Final[str] = "STOPPED" diff --git a/homeassistant/components/system_bridge/sensor.py b/homeassistant/components/system_bridge/sensor.py index 151a6882e26..9c12e14e264 100644 --- a/homeassistant/components/system_bridge/sensor.py +++ b/homeassistant/components/system_bridge/sensor.py @@ -28,9 +28,9 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import UNDEFINED, StateType from homeassistant.util.dt import utcnow -from . import SystemBridgeEntity from .const import DOMAIN from .coordinator import SystemBridgeCoordinatorData, SystemBridgeDataUpdateCoordinator +from .entity import SystemBridgeEntity ATTR_AVAILABLE: Final = "available" ATTR_FILESYSTEM: Final = "filesystem" diff --git a/homeassistant/components/system_bridge/update.py b/homeassistant/components/system_bridge/update.py index 1d011b08f72..5f667fad30d 100644 --- a/homeassistant/components/system_bridge/update.py +++ b/homeassistant/components/system_bridge/update.py @@ -7,9 +7,9 @@ from homeassistant.const import CONF_PORT from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import SystemBridgeEntity from .const import DOMAIN from .coordinator import SystemBridgeDataUpdateCoordinator +from .entity import SystemBridgeEntity async def async_setup_entry(