From b2d4c9ecb4e4c0f9ca49485b5d4a94c311a422f9 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Tue, 2 Dec 2025 17:42:16 +0100 Subject: [PATCH] Add exception translation to SFR box (#157756) --- homeassistant/components/sfr_box/__init__.py | 11 +++++++++-- homeassistant/components/sfr_box/button.py | 7 ++++++- homeassistant/components/sfr_box/coordinator.py | 13 +++++++++++-- homeassistant/components/sfr_box/quality_scale.yaml | 4 +--- homeassistant/components/sfr_box/strings.json | 11 +++++++++++ 5 files changed, 38 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/sfr_box/__init__.py b/homeassistant/components/sfr_box/__init__.py index 89962f0dda9..1a717e82d82 100644 --- a/homeassistant/components/sfr_box/__init__.py +++ b/homeassistant/components/sfr_box/__init__.py @@ -28,9 +28,16 @@ async def async_setup_entry(hass: HomeAssistant, entry: SFRConfigEntry) -> bool: try: await box.authenticate(username=username, password=password) except SFRBoxAuthenticationError as err: - raise ConfigEntryAuthFailed from err + raise ConfigEntryAuthFailed( + translation_domain=DOMAIN, + translation_key="invalid_credentials", + ) from err except SFRBoxError as err: - raise ConfigEntryNotReady from err + raise ConfigEntryNotReady( + translation_domain=DOMAIN, + translation_key="unknown_error", + translation_placeholders={"error": str(err)}, + ) from err platforms = PLATFORMS_WITH_AUTH data = SFRRuntimeData( diff --git a/homeassistant/components/sfr_box/button.py b/homeassistant/components/sfr_box/button.py index 46809971fb1..350f72c68ac 100644 --- a/homeassistant/components/sfr_box/button.py +++ b/homeassistant/components/sfr_box/button.py @@ -21,6 +21,7 @@ from homeassistant.core import HomeAssistant from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback +from .const import DOMAIN from .coordinator import SFRConfigEntry from .entity import SFREntity @@ -44,7 +45,11 @@ def with_error_wrapping[**_P, _R]( try: return await func(self, *args, **kwargs) except SFRBoxError as err: - raise HomeAssistantError(err) from err + raise HomeAssistantError( + translation_domain=DOMAIN, + translation_key="unknown_error", + translation_placeholders={"error": str(err)}, + ) from err return wrapper diff --git a/homeassistant/components/sfr_box/coordinator.py b/homeassistant/components/sfr_box/coordinator.py index 7db26726e80..9b131177e37 100644 --- a/homeassistant/components/sfr_box/coordinator.py +++ b/homeassistant/components/sfr_box/coordinator.py @@ -16,6 +16,8 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed +from .const import DOMAIN + _LOGGER = logging.getLogger(__name__) _SCAN_INTERVAL = timedelta(minutes=1) @@ -63,5 +65,12 @@ class SFRDataUpdateCoordinator[_DataT](DataUpdateCoordinator[_DataT]): if data := await self._method(self.box): return data except SFRBoxError as err: - raise UpdateFailed from err - raise UpdateFailed("No data received from SFR Box") + raise UpdateFailed( + translation_domain=DOMAIN, + translation_key="unknown_error", + translation_placeholders={"error": str(err)}, + ) from err + raise UpdateFailed( + translation_domain=DOMAIN, + translation_key="no_data", + ) diff --git a/homeassistant/components/sfr_box/quality_scale.yaml b/homeassistant/components/sfr_box/quality_scale.yaml index 4f80001b540..fc41da4fff8 100644 --- a/homeassistant/components/sfr_box/quality_scale.yaml +++ b/homeassistant/components/sfr_box/quality_scale.yaml @@ -50,9 +50,7 @@ rules: comment: Should be possible stale-devices: done diagnostics: done - exception-translations: - status: todo - comment: not yet documented + exception-translations: done icon-translations: done reconfiguration-flow: done dynamic-devices: done diff --git a/homeassistant/components/sfr_box/strings.json b/homeassistant/components/sfr_box/strings.json index dcb23d2d6cd..9cc44b617a1 100644 --- a/homeassistant/components/sfr_box/strings.json +++ b/homeassistant/components/sfr_box/strings.json @@ -123,5 +123,16 @@ } } } + }, + "exceptions": { + "invalid_credentials": { + "message": "The provided credentials are invalid." + }, + "no_data": { + "message": "No data received from the SFR box." + }, + "unknown_error": { + "message": "An unknown error occurred while communicating with the SFR box: {error}" + } } }