From 95fbba1d746d91099e7d3249a0d7c93a93abca48 Mon Sep 17 00:00:00 2001 From: Erik Montnemery <erik@montnemery.com> Date: Tue, 4 Mar 2025 17:46:13 +0100 Subject: [PATCH] Align cloud with changes in BackupAgent (#139766) --- homeassistant/components/cloud/backup.py | 27 +++++++++++------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/homeassistant/components/cloud/backup.py b/homeassistant/components/cloud/backup.py index b31fe16fbe9..b83c4725663 100644 --- a/homeassistant/components/cloud/backup.py +++ b/homeassistant/components/cloud/backup.py @@ -18,7 +18,12 @@ from hass_nabucasa.cloud_api import ( ) from hass_nabucasa.files import FilesError, StorageType, calculate_b64md5 -from homeassistant.components.backup import AgentBackup, BackupAgent, BackupAgentError +from homeassistant.components.backup import ( + AgentBackup, + BackupAgent, + BackupAgentError, + BackupNotFound, +) from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.aiohttp_client import ChunkAsyncStreamIterator from homeassistant.helpers.dispatcher import async_dispatcher_connect @@ -90,9 +95,7 @@ class CloudBackupAgent(BackupAgent): :param backup_id: The ID of the backup that was returned in async_list_backups. :return: An async iterator that yields bytes. """ - if not (backup := await self._async_get_backup(backup_id)): - raise BackupAgentError("Backup not found") - + backup = await self._async_get_backup(backup_id) try: content = await self._cloud.files.download( storage_type=StorageType.BACKUP, @@ -171,9 +174,7 @@ class CloudBackupAgent(BackupAgent): :param backup_id: The ID of the backup that was returned in async_list_backups. """ - if not (backup := await self._async_get_backup(backup_id)): - return - + backup = await self._async_get_backup(backup_id) try: await async_files_delete_file( self._cloud, @@ -204,16 +205,12 @@ class CloudBackupAgent(BackupAgent): self, backup_id: str, **kwargs: Any, - ) -> AgentBackup | None: + ) -> AgentBackup: """Return a backup.""" - if not (backup := await self._async_get_backup(backup_id)): - return None + backup = await self._async_get_backup(backup_id) return AgentBackup.from_dict(backup["Metadata"]) - async def _async_get_backup( - self, - backup_id: str, - ) -> FilesHandlerListEntry | None: + async def _async_get_backup(self, backup_id: str) -> FilesHandlerListEntry: """Return a backup.""" backups = await self._async_list_backups() @@ -221,4 +218,4 @@ class CloudBackupAgent(BackupAgent): if backup["Metadata"]["backup_id"] == backup_id: return backup - return None + raise BackupNotFound(f"Backup {backup_id} not found") -- GitLab