From 957ece747d38bd9cb5baf67522bddf398ce8c422 Mon Sep 17 00:00:00 2001 From: Martin Hjelmare Date: Wed, 13 Nov 2024 21:11:25 +0100 Subject: [PATCH] Make BackupSyncMetadata model a dataclass (#130555) Make backup BackupSyncMetadata model a dataclass --- homeassistant/components/backup/manager.py | 16 +++++----- homeassistant/components/backup/models.py | 6 ++-- .../components/kitchen_sink/backup.py | 8 ++--- tests/components/backup/test_manager.py | 30 +++++++++---------- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/homeassistant/components/backup/manager.py b/homeassistant/components/backup/manager.py index 70f29679cdc0..f20bc1b83721 100644 --- a/homeassistant/components/backup/manager.py +++ b/homeassistant/components/backup/manager.py @@ -32,7 +32,7 @@ from homeassistant.util import dt as dt_util from homeassistant.util.json import json_loads_object from .const import DOMAIN, EXCLUDE_FROM_BACKUP, LOGGER -from .models import BaseBackup +from .models import BackupSyncMetadata, BaseBackup from .sync_agent import BackupPlatformAgentProtocol, BackupSyncAgent BUF_SIZE = 2**20 * 4 # 4MB @@ -238,13 +238,13 @@ class BackupManager(BaseBackupManager[Backup]): *( agent.async_upload_backup( path=backup.path, - metadata={ - "homeassistant": HAVERSION, - "size": backup.size, - "date": backup.date, - "slug": backup.slug, - "name": backup.name, - }, + metadata=BackupSyncMetadata( + homeassistant=HAVERSION, + size=backup.size, + date=backup.date, + slug=backup.slug, + name=backup.name, + ), ) for agent in self.sync_agents.values() ), diff --git a/homeassistant/components/backup/models.py b/homeassistant/components/backup/models.py index 6f5f013e4035..2eb720847bbd 100644 --- a/homeassistant/components/backup/models.py +++ b/homeassistant/components/backup/models.py @@ -1,7 +1,6 @@ """Models for the backup integration.""" from dataclasses import asdict, dataclass -from typing import TypedDict @dataclass() @@ -18,8 +17,9 @@ class BaseBackup: return asdict(self) -class BackupSyncMetadata(TypedDict): - """Dictionary type for backup sync metadata.""" +@dataclass() +class BackupSyncMetadata: + """Backup sync metadata.""" date: str # The date the backup was created slug: str # The slug of the backup diff --git a/homeassistant/components/kitchen_sink/backup.py b/homeassistant/components/kitchen_sink/backup.py index 18c8f0f9abf4..7140ae3099d4 100644 --- a/homeassistant/components/kitchen_sink/backup.py +++ b/homeassistant/components/kitchen_sink/backup.py @@ -62,10 +62,10 @@ class KitchenSinkBackupSyncAgent(BackupSyncAgent): self._uploads.append( SyncedBackup( id=uuid4().hex, - name=metadata["name"], - slug=metadata["slug"], - size=metadata["size"], - date=metadata["date"], + name=metadata.name, + slug=metadata.slug, + size=metadata.size, + date=metadata.date, ) ) diff --git a/tests/components/backup/test_manager.py b/tests/components/backup/test_manager.py index 827ee8962993..7b5f97f2cc3d 100644 --- a/tests/components/backup/test_manager.py +++ b/tests/components/backup/test_manager.py @@ -10,7 +10,7 @@ import aiohttp from multidict import CIMultiDict, CIMultiDictProxy import pytest -from homeassistant.components.backup import BackupManager +from homeassistant.components.backup import BackupManager, BackupSyncMetadata from homeassistant.components.backup.manager import ( BackupPlatformProtocol, BackupProgress, @@ -299,13 +299,13 @@ async def test_syncing_backup( assert mocked_upload.call_count == 2 first_call = mocked_upload.call_args_list[0] assert first_call[1]["path"] == backup.path - assert first_call[1]["metadata"] == { - "date": backup.date, - "homeassistant": "2025.1.0", - "name": backup.name, - "size": backup.size, - "slug": backup.slug, - } + assert first_call[1]["metadata"] == BackupSyncMetadata( + date=backup.date, + homeassistant="2025.1.0", + name=backup.name, + size=backup.size, + slug=backup.slug, + ) assert "Error during backup sync" not in caplog.text @@ -361,13 +361,13 @@ async def test_syncing_backup_with_exception( assert mocked_upload.call_count == 2 first_call = mocked_upload.call_args_list[0] assert first_call[1]["path"] == backup.path - assert first_call[1]["metadata"] == { - "date": backup.date, - "homeassistant": "2025.1.0", - "name": backup.name, - "size": backup.size, - "slug": backup.slug, - } + assert first_call[1]["metadata"] == BackupSyncMetadata( + date=backup.date, + homeassistant="2025.1.0", + name=backup.name, + size=backup.size, + slug=backup.slug, + ) assert "Error during backup sync - Test exception" in caplog.text