mirror of
https://github.com/home-assistant/core.git
synced 2026-09-26 17:31:15 -04:00
Make BackupSyncMetadata model a dataclass (#130555)
Make backup BackupSyncMetadata model a dataclass
This commit is contained in:
@@ -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()
|
||||
),
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user