From 8620c857795ee7018224d489495a781fce95bb3e Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Fri, 18 Sep 2026 20:48:59 +0200 Subject: [PATCH] Move lawn mower service registration to services module (#182566) --- .../components/lawn_mower/__init__.py | 22 +++--------- homeassistant/components/lawn_mower/const.py | 10 +++++- .../components/lawn_mower/services.py | 34 +++++++++++++++++++ 3 files changed, 47 insertions(+), 19 deletions(-) create mode 100644 homeassistant/components/lawn_mower/services.py diff --git a/homeassistant/components/lawn_mower/__init__.py b/homeassistant/components/lawn_mower/__init__.py index fc6099166ed9..9e25c5ff062b 100644 --- a/homeassistant/components/lawn_mower/__init__.py +++ b/homeassistant/components/lawn_mower/__init__.py @@ -12,9 +12,9 @@ from homeassistant.helpers import config_validation as cv from homeassistant.helpers.entity import Entity, EntityDescription from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.typing import ConfigType -from homeassistant.util.hass_dict import HassKey -from .const import ( +from .const import ( # noqa: F401 + DATA_COMPONENT, DOMAIN, SERVICE_DOCK, SERVICE_PAUSE, @@ -23,10 +23,10 @@ from .const import ( LawnMowerActivity, LawnMowerEntityFeature, ) +from .services import async_setup_services _LOGGER = logging.getLogger(__name__) -DATA_COMPONENT: HassKey[EntityComponent[LawnMowerEntity]] = HassKey(DOMAIN) ENTITY_ID_FORMAT = DOMAIN + ".{}" PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA PLATFORM_SCHEMA_BASE = cv.PLATFORM_SCHEMA_BASE @@ -40,21 +40,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ) await component.async_setup(config) - component.async_register_entity_service( - SERVICE_START_MOWING, - None, - "async_start_mowing", - [LawnMowerEntityFeature.START_MOWING], - ) - component.async_register_entity_service( - SERVICE_PAUSE, None, "async_pause", [LawnMowerEntityFeature.PAUSE] - ) - component.async_register_entity_service( - SERVICE_DOCK, None, "async_dock", [LawnMowerEntityFeature.DOCK] - ) - component.async_register_entity_service( - SERVICE_STOP, None, "async_stop", [LawnMowerEntityFeature.STOP] - ) + async_setup_services(hass) return True diff --git a/homeassistant/components/lawn_mower/const.py b/homeassistant/components/lawn_mower/const.py index 00d5502c97fe..a8fb9e981822 100644 --- a/homeassistant/components/lawn_mower/const.py +++ b/homeassistant/components/lawn_mower/const.py @@ -1,9 +1,17 @@ """Constants for the lawn mower integration.""" from enum import IntFlag, StrEnum -from typing import Final +from typing import TYPE_CHECKING, Final + +from homeassistant.util.hass_dict import HassKey + +if TYPE_CHECKING: + from homeassistant.helpers.entity_component import EntityComponent + + from . import LawnMowerEntity DOMAIN: Final = "lawn_mower" +DATA_COMPONENT: HassKey[EntityComponent[LawnMowerEntity]] = HassKey(DOMAIN) class LawnMowerActivity(StrEnum): diff --git a/homeassistant/components/lawn_mower/services.py b/homeassistant/components/lawn_mower/services.py new file mode 100644 index 000000000000..dadb907d05ba --- /dev/null +++ b/homeassistant/components/lawn_mower/services.py @@ -0,0 +1,34 @@ +"""Services for the Lawn mower integration.""" + +from homeassistant.core import HomeAssistant, callback + +from .const import ( + DATA_COMPONENT, + SERVICE_DOCK, + SERVICE_PAUSE, + SERVICE_START_MOWING, + SERVICE_STOP, + LawnMowerEntityFeature, +) + + +@callback +def async_setup_services(hass: HomeAssistant) -> None: + """Register the lawn mower services.""" + component = hass.data[DATA_COMPONENT] + + component.async_register_entity_service( + SERVICE_START_MOWING, + None, + "async_start_mowing", + [LawnMowerEntityFeature.START_MOWING], + ) + component.async_register_entity_service( + SERVICE_PAUSE, None, "async_pause", [LawnMowerEntityFeature.PAUSE] + ) + component.async_register_entity_service( + SERVICE_DOCK, None, "async_dock", [LawnMowerEntityFeature.DOCK] + ) + component.async_register_entity_service( + SERVICE_STOP, None, "async_stop", [LawnMowerEntityFeature.STOP] + )