From f7543cd0ba6da0a782575b4e6c6398dc42658752 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Mon, 23 Sep 2024 12:43:48 +0200 Subject: [PATCH] Move pi_hole base entity to separate module (#126509) --- homeassistant/components/pi_hole/__init__.py | 39 +--------------- .../components/pi_hole/binary_sensor.py | 3 +- homeassistant/components/pi_hole/entity.py | 45 +++++++++++++++++++ homeassistant/components/pi_hole/sensor.py | 3 +- homeassistant/components/pi_hole/switch.py | 3 +- homeassistant/components/pi_hole/update.py | 3 +- 6 files changed, 54 insertions(+), 42 deletions(-) create mode 100644 homeassistant/components/pi_hole/entity.py diff --git a/homeassistant/components/pi_hole/__init__.py b/homeassistant/components/pi_hole/__init__.py index bf314e96dec..64e73a20c59 100644 --- a/homeassistant/components/pi_hole/__init__.py +++ b/homeassistant/components/pi_hole/__init__.py @@ -22,12 +22,7 @@ from homeassistant.core import HomeAssistant, callback from homeassistant.exceptions import ConfigEntryAuthFailed from homeassistant.helpers import entity_registry as er from homeassistant.helpers.aiohttp_client import async_get_clientsession -from homeassistant.helpers.device_registry import DeviceInfo -from homeassistant.helpers.update_coordinator import ( - CoordinatorEntity, - DataUpdateCoordinator, - UpdateFailed, -) +from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed from .const import CONF_STATISTICS_ONLY, DOMAIN, MIN_TIME_BETWEEN_UPDATES @@ -140,35 +135,3 @@ async def async_setup_entry(hass: HomeAssistant, entry: PiHoleConfigEntry) -> bo async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Unload Pi-hole entry.""" return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) - - -class PiHoleEntity(CoordinatorEntity[DataUpdateCoordinator[None]]): - """Representation of a Pi-hole entity.""" - - def __init__( - self, - api: Hole, - coordinator: DataUpdateCoordinator[None], - name: str, - server_unique_id: str, - ) -> None: - """Initialize a Pi-hole entity.""" - super().__init__(coordinator) - self.api = api - self._name = name - self._server_unique_id = server_unique_id - - @property - def device_info(self) -> DeviceInfo: - """Return the device information of the entity.""" - if self.api.tls: - config_url = f"https://{self.api.host}/{self.api.location}" - else: - config_url = f"http://{self.api.host}/{self.api.location}" - - return DeviceInfo( - identifiers={(DOMAIN, self._server_unique_id)}, - name=self._name, - manufacturer="Pi-hole", - configuration_url=config_url, - ) diff --git a/homeassistant/components/pi_hole/binary_sensor.py b/homeassistant/components/pi_hole/binary_sensor.py index 001a2ebcee8..5e3ce560ab4 100644 --- a/homeassistant/components/pi_hole/binary_sensor.py +++ b/homeassistant/components/pi_hole/binary_sensor.py @@ -17,7 +17,8 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.update_coordinator import DataUpdateCoordinator -from . import PiHoleConfigEntry, PiHoleEntity +from . import PiHoleConfigEntry +from .entity import PiHoleEntity @dataclass(frozen=True, kw_only=True) diff --git a/homeassistant/components/pi_hole/entity.py b/homeassistant/components/pi_hole/entity.py new file mode 100644 index 00000000000..0f5c6039232 --- /dev/null +++ b/homeassistant/components/pi_hole/entity.py @@ -0,0 +1,45 @@ +"""The pi_hole component.""" + +from __future__ import annotations + +from hole import Hole + +from homeassistant.helpers.device_registry import DeviceInfo +from homeassistant.helpers.update_coordinator import ( + CoordinatorEntity, + DataUpdateCoordinator, +) + +from .const import DOMAIN + + +class PiHoleEntity(CoordinatorEntity[DataUpdateCoordinator[None]]): + """Representation of a Pi-hole entity.""" + + def __init__( + self, + api: Hole, + coordinator: DataUpdateCoordinator[None], + name: str, + server_unique_id: str, + ) -> None: + """Initialize a Pi-hole entity.""" + super().__init__(coordinator) + self.api = api + self._name = name + self._server_unique_id = server_unique_id + + @property + def device_info(self) -> DeviceInfo: + """Return the device information of the entity.""" + if self.api.tls: + config_url = f"https://{self.api.host}/{self.api.location}" + else: + config_url = f"http://{self.api.host}/{self.api.location}" + + return DeviceInfo( + identifiers={(DOMAIN, self._server_unique_id)}, + name=self._name, + manufacturer="Pi-hole", + configuration_url=config_url, + ) diff --git a/homeassistant/components/pi_hole/sensor.py b/homeassistant/components/pi_hole/sensor.py index 14ad3ac82dd..503883e9326 100644 --- a/homeassistant/components/pi_hole/sensor.py +++ b/homeassistant/components/pi_hole/sensor.py @@ -11,7 +11,8 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType from homeassistant.helpers.update_coordinator import DataUpdateCoordinator -from . import PiHoleConfigEntry, PiHoleEntity +from . import PiHoleConfigEntry +from .entity import PiHoleEntity SENSOR_TYPES: tuple[SensorEntityDescription, ...] = ( SensorEntityDescription( diff --git a/homeassistant/components/pi_hole/switch.py b/homeassistant/components/pi_hole/switch.py index 83ed3e6d787..805ba479a9e 100644 --- a/homeassistant/components/pi_hole/switch.py +++ b/homeassistant/components/pi_hole/switch.py @@ -14,8 +14,9 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers import config_validation as cv, entity_platform from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import PiHoleConfigEntry, PiHoleEntity +from . import PiHoleConfigEntry from .const import SERVICE_DISABLE, SERVICE_DISABLE_ATTR_DURATION +from .entity import PiHoleEntity _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/pi_hole/update.py b/homeassistant/components/pi_hole/update.py index c1a435f628c..510f5d1dc19 100644 --- a/homeassistant/components/pi_hole/update.py +++ b/homeassistant/components/pi_hole/update.py @@ -13,7 +13,8 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.update_coordinator import DataUpdateCoordinator -from . import PiHoleConfigEntry, PiHoleEntity +from . import PiHoleConfigEntry +from .entity import PiHoleEntity @dataclass(frozen=True)