From 6a18e05bda7af01a2defa54d0b60c5f961d5b21e Mon Sep 17 00:00:00 2001 From: Manu <4445816+tr4nt0r@users.noreply.github.com> Date: Tue, 26 May 2026 21:37:55 +0200 Subject: [PATCH] Make service response optional for Habitica integration (#171818) --- homeassistant/components/habitica/services.py | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/habitica/services.py b/homeassistant/components/habitica/services.py index 61842502effa..520a5ad1e69e 100644 --- a/homeassistant/components/habitica/services.py +++ b/homeassistant/components/habitica/services.py @@ -303,7 +303,7 @@ async def _cast_skill(call: ServiceCall) -> ServiceResponse: ) from e else: await coordinator.async_request_refresh() - return asdict(response.data) + return asdict(response.data) if call.return_response is True else None async def _manage_quests(call: ServiceCall) -> ServiceResponse: @@ -353,7 +353,7 @@ async def _manage_quests(call: ServiceCall) -> ServiceResponse: translation_placeholders={"reason": str(e)}, ) from e else: - return asdict(response.data) + return asdict(response.data) if call.return_response is True else None async def _score_task(call: ServiceCall) -> ServiceResponse: @@ -418,7 +418,7 @@ async def _score_task(call: ServiceCall) -> ServiceResponse: ) from e else: await coordinator.async_request_refresh() - return asdict(response.data) + return asdict(response.data) if call.return_response is True else None async def _transformation(call: ServiceCall) -> ServiceResponse: @@ -503,7 +503,7 @@ async def _transformation(call: ServiceCall) -> ServiceResponse: translation_placeholders={"reason": str(e)}, ) from e else: - return asdict(response.data) + return asdict(response.data) if call.return_response is True else None async def _get_tasks(call: ServiceCall) -> ServiceResponse: @@ -839,7 +839,11 @@ async def _create_or_update_task(call: ServiceCall) -> ServiceResponse: # noqa: translation_placeholders={"reason": str(e)}, ) from e else: - return response.data.to_dict(omit_none=True) + return ( + response.data.to_dict(omit_none=True) + if call.return_response is True + else None + ) @callback @@ -859,7 +863,7 @@ def async_setup_services(hass: HomeAssistant) -> None: service_name, _manage_quests, schema=SERVICE_MANAGE_QUEST_SCHEMA, - supports_response=SupportsResponse.ONLY, + supports_response=SupportsResponse.OPTIONAL, ) for service_name in ( @@ -873,7 +877,7 @@ def async_setup_services(hass: HomeAssistant) -> None: service_name, _create_or_update_task, schema=SERVICE_UPDATE_TASK_SCHEMA, - supports_response=SupportsResponse.ONLY, + supports_response=SupportsResponse.OPTIONAL, ) for service_name in ( SERVICE_CREATE_DAILY, @@ -886,7 +890,7 @@ def async_setup_services(hass: HomeAssistant) -> None: service_name, _create_or_update_task, schema=SERVICE_CREATE_TASK_SCHEMA, - supports_response=SupportsResponse.ONLY, + supports_response=SupportsResponse.OPTIONAL, ) hass.services.async_register( @@ -894,7 +898,7 @@ def async_setup_services(hass: HomeAssistant) -> None: SERVICE_CAST_SKILL, _cast_skill, schema=SERVICE_CAST_SKILL_SCHEMA, - supports_response=SupportsResponse.ONLY, + supports_response=SupportsResponse.OPTIONAL, ) hass.services.async_register( @@ -902,14 +906,14 @@ def async_setup_services(hass: HomeAssistant) -> None: SERVICE_SCORE_HABIT, _score_task, schema=SERVICE_SCORE_TASK_SCHEMA, - supports_response=SupportsResponse.ONLY, + supports_response=SupportsResponse.OPTIONAL, ) hass.services.async_register( DOMAIN, SERVICE_SCORE_REWARD, _score_task, schema=SERVICE_SCORE_TASK_SCHEMA, - supports_response=SupportsResponse.ONLY, + supports_response=SupportsResponse.OPTIONAL, ) hass.services.async_register( @@ -917,7 +921,7 @@ def async_setup_services(hass: HomeAssistant) -> None: SERVICE_TRANSFORMATION, _transformation, schema=SERVICE_TRANSFORMATION_SCHEMA, - supports_response=SupportsResponse.ONLY, + supports_response=SupportsResponse.OPTIONAL, ) hass.services.async_register( DOMAIN,