homeassistant-stubs 2025.2.0b7__py3-none-any.whl → 2025.2.0b9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
1
1
  from .agent import BackupAgent as BackupAgent, BackupAgentError as BackupAgentError, BackupAgentPlatformProtocol as BackupAgentPlatformProtocol, LocalBackupAgent as LocalBackupAgent
2
- from .manager import BackupManager, BackupManagerError as BackupManagerError, BackupPlatformProtocol as BackupPlatformProtocol, BackupReaderWriter as BackupReaderWriter, BackupReaderWriterError as BackupReaderWriterError, CreateBackupEvent as CreateBackupEvent, IdleEvent as IdleEvent, IncorrectPasswordError as IncorrectPasswordError, ManagerBackup as ManagerBackup, NewBackup as NewBackup, RestoreBackupEvent as RestoreBackupEvent, RestoreBackupState as RestoreBackupState, WrittenBackup as WrittenBackup
3
- from .models import AddonInfo as AddonInfo, AgentBackup as AgentBackup, Folder as Folder
2
+ from .manager import BackupManager, BackupManagerError as BackupManagerError, BackupPlatformProtocol as BackupPlatformProtocol, BackupReaderWriter as BackupReaderWriter, BackupReaderWriterError as BackupReaderWriterError, CreateBackupEvent as CreateBackupEvent, CreateBackupStage as CreateBackupStage, CreateBackupState as CreateBackupState, IdleEvent as IdleEvent, IncorrectPasswordError as IncorrectPasswordError, ManagerBackup as ManagerBackup, NewBackup as NewBackup, RestoreBackupEvent as RestoreBackupEvent, RestoreBackupState as RestoreBackupState, WrittenBackup as WrittenBackup
3
+ from .models import AddonInfo as AddonInfo, AgentBackup as AgentBackup, BackupNotFound as BackupNotFound, Folder as Folder
4
4
  from .util import suggested_filename as suggested_filename, suggested_filename_from_name_date as suggested_filename_from_name_date
5
5
  from homeassistant.core import HomeAssistant, callback
6
6
 
7
- __all__ = ['AddonInfo', 'AgentBackup', 'BackupAgent', 'BackupAgentError', 'BackupAgentPlatformProtocol', 'BackupManagerError', 'BackupPlatformProtocol', 'BackupReaderWriter', 'BackupReaderWriterError', 'CreateBackupEvent', 'Folder', 'IdleEvent', 'IncorrectPasswordError', 'LocalBackupAgent', 'ManagerBackup', 'NewBackup', 'RestoreBackupEvent', 'RestoreBackupState', 'WrittenBackup', 'async_get_manager', 'suggested_filename', 'suggested_filename_from_name_date']
7
+ __all__ = ['AddonInfo', 'AgentBackup', 'BackupAgent', 'BackupAgentError', 'BackupAgentPlatformProtocol', 'BackupManagerError', 'BackupNotFound', 'BackupPlatformProtocol', 'BackupReaderWriter', 'BackupReaderWriterError', 'CreateBackupEvent', 'CreateBackupStage', 'CreateBackupState', 'Folder', 'IdleEvent', 'IncorrectPasswordError', 'LocalBackupAgent', 'ManagerBackup', 'NewBackup', 'RestoreBackupEvent', 'RestoreBackupState', 'WrittenBackup', 'async_get_manager', 'suggested_filename', 'suggested_filename_from_name_date']
8
8
 
9
9
  @callback
10
10
  def async_get_manager(hass: HomeAssistant) -> BackupManager: ...
@@ -1,21 +1,15 @@
1
1
  import abc
2
- from .models import AgentBackup as AgentBackup, BackupError as BackupError
2
+ from .models import AgentBackup as AgentBackup, BackupAgentError as BackupAgentError
3
3
  from collections.abc import AsyncIterator, Callable as Callable, Coroutine
4
4
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
5
5
  from pathlib import Path
6
6
  from propcache.api import cached_property
7
7
  from typing import Any, Protocol
8
8
 
9
- class BackupAgentError(BackupError):
10
- error_code: str
11
-
12
9
  class BackupAgentUnreachableError(BackupAgentError):
13
10
  error_code: str
14
11
  _message: str
15
12
 
16
- class BackupNotFound(BackupAgentError):
17
- error_code: str
18
-
19
13
  class BackupAgent(abc.ABC, metaclass=abc.ABCMeta):
20
14
  domain: str
21
15
  name: str
@@ -1,6 +1,6 @@
1
- from .agent import BackupAgent as BackupAgent, BackupNotFound as BackupNotFound, LocalBackupAgent as LocalBackupAgent
1
+ from .agent import BackupAgent as BackupAgent, LocalBackupAgent as LocalBackupAgent
2
2
  from .const import DOMAIN as DOMAIN, LOGGER as LOGGER
3
- from .models import AgentBackup as AgentBackup
3
+ from .models import AgentBackup as AgentBackup, BackupNotFound as BackupNotFound
4
4
  from .util import read_backup as read_backup, suggested_filename as suggested_filename
5
5
  from _typeshed import Incomplete
6
6
  from collections.abc import AsyncIterator, Callable as Callable, Coroutine
@@ -2,6 +2,7 @@ from . import util as util
2
2
  from .agent import BackupAgent as BackupAgent
3
3
  from .const import DATA_MANAGER as DATA_MANAGER
4
4
  from .manager import BackupManager as BackupManager
5
+ from .models import BackupNotFound as BackupNotFound
5
6
  from aiohttp.web import FileResponse, Request as Request, Response, StreamResponse
6
7
  from homeassistant.components.http import HomeAssistantView as HomeAssistantView, KEY_HASS as KEY_HASS, require_admin as require_admin
7
8
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
@@ -4,7 +4,7 @@ import asyncio
4
4
  from .agent import BackupAgent as BackupAgent, BackupAgentError as BackupAgentError, BackupAgentPlatformProtocol as BackupAgentPlatformProtocol, LocalBackupAgent as LocalBackupAgent
5
5
  from .config import BackupConfig as BackupConfig, delete_backups_exceeding_configured_count as delete_backups_exceeding_configured_count
6
6
  from .const import BUF_SIZE as BUF_SIZE, DATA_MANAGER as DATA_MANAGER, DOMAIN as DOMAIN, EXCLUDE_DATABASE_FROM_BACKUP as EXCLUDE_DATABASE_FROM_BACKUP, EXCLUDE_FROM_BACKUP as EXCLUDE_FROM_BACKUP, LOGGER as LOGGER
7
- from .models import AgentBackup as AgentBackup, BackupError as BackupError, BackupManagerError as BackupManagerError, BaseBackup as BaseBackup, Folder as Folder
7
+ from .models import AgentBackup as AgentBackup, BackupError as BackupError, BackupManagerError as BackupManagerError, BackupReaderWriterError as BackupReaderWriterError, BaseBackup as BaseBackup, Folder as Folder
8
8
  from .store import BackupStore as BackupStore
9
9
  from .util import AsyncIteratorReader as AsyncIteratorReader, DecryptedBackupStreamer as DecryptedBackupStreamer, EncryptedBackupStreamer as EncryptedBackupStreamer, make_backup_dir as make_backup_dir, read_backup as read_backup, validate_password as validate_password, validate_password_stream as validate_password_stream
10
10
  from _typeshed import Incomplete
@@ -130,9 +130,6 @@ class BackupReaderWriter(abc.ABC, metaclass=abc.ABCMeta):
130
130
  @abc.abstractmethod
131
131
  async def async_resume_restore_progress_after_restart(self, *, on_progress: Callable[[RestoreBackupEvent | IdleEvent], None]) -> None: ...
132
132
 
133
- class BackupReaderWriterError(BackupError):
134
- error_code: str
135
-
136
133
  class IncorrectPasswordError(BackupReaderWriterError):
137
134
  error_code: str
138
135
  _message: str
@@ -26,7 +26,6 @@ class BaseBackup:
26
26
  homeassistant_included: bool
27
27
  homeassistant_version: str | None
28
28
  name: str
29
- def as_frontend_json(self) -> dict: ...
30
29
 
31
30
  @dataclass(frozen=True, kw_only=True)
32
31
  class AgentBackup(BaseBackup):
@@ -39,5 +38,14 @@ class AgentBackup(BaseBackup):
39
38
  class BackupError(HomeAssistantError):
40
39
  error_code: str
41
40
 
41
+ class BackupAgentError(BackupError):
42
+ error_code: str
43
+
42
44
  class BackupManagerError(BackupError):
43
45
  error_code: str
46
+
47
+ class BackupReaderWriterError(BackupError):
48
+ error_code: str
49
+
50
+ class BackupNotFound(BackupAgentError, BackupManagerError):
51
+ error_code: str
@@ -1,16 +1,17 @@
1
1
  import aiohttp
2
2
  import asyncio
3
3
  import tarfile
4
+ import threading
4
5
  from .const import BUF_SIZE as BUF_SIZE, LOGGER as LOGGER
5
6
  from .models import AddonInfo as AddonInfo, AgentBackup as AgentBackup, Folder as Folder
6
7
  from _typeshed import Incomplete
7
8
  from collections.abc import AsyncIterator, Callable as Callable, Coroutine
9
+ from concurrent.futures import Future
8
10
  from dataclasses import dataclass
9
11
  from homeassistant.backup_restore import password_to_key as password_to_key
10
12
  from homeassistant.core import HomeAssistant as HomeAssistant
11
13
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
12
14
  from homeassistant.util.json import JsonObjectType as JsonObjectType, json_loads_object as json_loads_object
13
- from homeassistant.util.thread import ThreadWithException as ThreadWithException
14
15
  from pathlib import Path
15
16
  from typing import Any, IO, Self
16
17
 
@@ -39,22 +40,28 @@ def suggested_filename(backup: AgentBackup) -> str: ...
39
40
  def validate_password(path: Path, password: str | None) -> bool: ...
40
41
 
41
42
  class AsyncIteratorReader:
43
+ _aborted: bool
42
44
  _hass: Incomplete
43
45
  _stream: Incomplete
44
46
  _buffer: bytes | None
47
+ _next_future: Future[bytes | None] | None
45
48
  _pos: int
46
49
  def __init__(self, hass: HomeAssistant, stream: AsyncIterator[bytes]) -> None: ...
47
50
  async def _next(self) -> bytes | None: ...
51
+ def abort(self) -> None: ...
48
52
  def read(self, n: int = -1, /) -> bytes: ...
49
53
  def close(self) -> None: ...
50
54
 
51
55
  class AsyncIteratorWriter:
56
+ _aborted: bool
52
57
  _hass: Incomplete
53
58
  _pos: int
54
59
  _queue: asyncio.Queue[bytes | None]
60
+ _write_future: Future[bytes | None] | None
55
61
  def __init__(self, hass: HomeAssistant) -> None: ...
56
62
  def __aiter__(self) -> Self: ...
57
63
  async def __anext__(self) -> bytes: ...
64
+ def abort(self) -> None: ...
58
65
  def tell(self) -> int: ...
59
66
  def write(self, s: bytes, /) -> int: ...
60
67
 
@@ -68,7 +75,9 @@ def _encrypt_backup(input_tar: tarfile.TarFile, output_tar: tarfile.TarFile, pas
68
75
  class _CipherWorkerStatus:
69
76
  done: asyncio.Event
70
77
  error: Exception | None = ...
71
- thread: ThreadWithException
78
+ reader: AsyncIteratorReader
79
+ thread: threading.Thread
80
+ writer: AsyncIteratorWriter
72
81
 
73
82
  class _CipherBackupStreamer:
74
83
  _cipher_func: Callable[[IO[bytes], IO[bytes], str | None, Callable[[Exception | None], None], int, list[bytes]], None]
@@ -1,7 +1,7 @@
1
1
  from .config import Day as Day, ScheduleRecurrence as ScheduleRecurrence
2
2
  from .const import DATA_MANAGER as DATA_MANAGER, LOGGER as LOGGER
3
3
  from .manager import DecryptOnDowloadNotSupported as DecryptOnDowloadNotSupported, IncorrectPasswordError as IncorrectPasswordError, ManagerStateEvent as ManagerStateEvent
4
- from .models import Folder as Folder
4
+ from .models import BackupNotFound as BackupNotFound, Folder as Folder
5
5
  from homeassistant.components import websocket_api as websocket_api
6
6
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
7
7
  from typing import Any
@@ -5,7 +5,7 @@ from .google_config import CLOUD_GOOGLE as CLOUD_GOOGLE
5
5
  from .repairs import async_manage_legacy_subscription_issue as async_manage_legacy_subscription_issue
6
6
  from .subscription import async_subscription_info as async_subscription_info
7
7
  from _typeshed import Incomplete
8
- from aiohttp import web as web
8
+ from aiohttp import web
9
9
  from collections.abc import Awaitable, Callable as Callable, Coroutine
10
10
  from hass_nabucasa import Cloud as Cloud, auth
11
11
  from homeassistant.components import websocket_api as websocket_api
@@ -76,6 +76,12 @@ class CloudForgotPasswordView(HomeAssistantView):
76
76
  @_handle_cloud_errors
77
77
  async def post(self, request: web.Request, data: dict[str, Any]) -> web.Response: ...
78
78
 
79
+ class DownloadSupportPackageView(HomeAssistantView):
80
+ url: str
81
+ name: str
82
+ def _generate_markdown(self, hass_info: dict[str, Any], domains_info: dict[str, dict[str, str]]) -> str: ...
83
+ async def get(self, request: web.Request) -> web.Response: ...
84
+
79
85
  @websocket_api.require_admin
80
86
  @websocket_api.async_response
81
87
  async def websocket_cloud_remove_data(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
@@ -1,5 +1,5 @@
1
1
  from _typeshed import Incomplete
2
- from homeassistant.const import LIGHT_LUX as LIGHT_LUX, PERCENTAGE as PERCENTAGE, REVOLUTIONS_PER_MINUTE as REVOLUTIONS_PER_MINUTE, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfEnergy as UnitOfEnergy, UnitOfPower as UnitOfPower, UnitOfSpeed as UnitOfSpeed, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime, UnitOfVolume as UnitOfVolume
2
+ from homeassistant.const import DEGREE as DEGREE, LIGHT_LUX as LIGHT_LUX, PERCENTAGE as PERCENTAGE, REVOLUTIONS_PER_MINUTE as REVOLUTIONS_PER_MINUTE, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfEnergy as UnitOfEnergy, UnitOfPower as UnitOfPower, UnitOfSpeed as UnitOfSpeed, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime, UnitOfVolume as UnitOfVolume
3
3
 
4
4
  DOMAIN: str
5
5
  HOMEE_UNIT_TO_HA_UNIT: Incomplete
@@ -29,7 +29,7 @@ class HomeWizardConfigFlow(ConfigFlow, domain=DOMAIN):
29
29
  async def async_step_reauth_confirm_update_token(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
30
30
  async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
31
31
 
32
- async def async_try_connect(ip_address: str) -> Device: ...
32
+ async def async_try_connect(ip_address: str, token: str | None = None) -> Device: ...
33
33
  async def async_request_token(ip_address: str) -> str | None: ...
34
34
 
35
35
  class RecoverableError(HomeAssistantError):
@@ -1,17 +1,18 @@
1
1
  from .api import OneDriveConfigEntryAccessTokenProvider as OneDriveConfigEntryAccessTokenProvider
2
- from .const import DATA_BACKUP_AGENT_LISTENERS as DATA_BACKUP_AGENT_LISTENERS, DOMAIN as DOMAIN, OAUTH_SCOPES as OAUTH_SCOPES
2
+ from .const import DATA_BACKUP_AGENT_LISTENERS as DATA_BACKUP_AGENT_LISTENERS, DOMAIN as DOMAIN
3
3
  from _typeshed import Incomplete
4
4
  from dataclasses import dataclass
5
5
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
6
6
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
7
7
  from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
8
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
8
9
  from homeassistant.helpers.config_entry_oauth2_flow import OAuth2Session as OAuth2Session, async_get_config_entry_implementation as async_get_config_entry_implementation
9
- from homeassistant.helpers.httpx_client import create_async_httpx_client as create_async_httpx_client
10
- from msgraph.generated.drives.item.items.items_request_builder import ItemsRequestBuilder as ItemsRequestBuilder
10
+ from onedrive_personal_sdk import OneDriveClient
11
11
 
12
12
  @dataclass
13
13
  class OneDriveRuntimeData:
14
- items: ItemsRequestBuilder
14
+ client: OneDriveClient
15
+ token_provider: OneDriveConfigEntryAccessTokenProvider
15
16
  backup_folder_id: str
16
17
  type OneDriveConfigEntry = ConfigEntry[OneDriveRuntimeData]
17
18
 
@@ -22,4 +23,3 @@ async def async_unload_entry(hass: HomeAssistant, entry: OneDriveConfigEntry) ->
22
23
  def _async_notify_backup_listeners(hass: HomeAssistant) -> None: ...
23
24
  @callback
24
25
  def _async_notify_backup_listeners_soon(hass: HomeAssistant) -> None: ...
25
- async def _async_create_folder_if_not_exists(items: ItemsRequestBuilder, base_folder_id: str, folder: str) -> str: ...
@@ -1,20 +1,14 @@
1
1
  from _typeshed import Incomplete
2
2
  from homeassistant.const import CONF_ACCESS_TOKEN as CONF_ACCESS_TOKEN
3
3
  from homeassistant.helpers import config_entry_oauth2_flow as config_entry_oauth2_flow
4
- from kiota_abstractions.authentication import AccessTokenProvider, AllowedHostsValidator
5
- from typing import Any
4
+ from onedrive_personal_sdk import TokenProvider
6
5
 
7
- class OneDriveAccessTokenProvider(AccessTokenProvider):
8
- _allowed_hosts_validator: Incomplete
9
- def __init__(self) -> None: ...
10
- def get_allowed_hosts_validator(self) -> AllowedHostsValidator: ...
11
-
12
- class OneDriveConfigFlowAccessTokenProvider(OneDriveAccessTokenProvider):
6
+ class OneDriveConfigFlowAccessTokenProvider(TokenProvider):
13
7
  _token: Incomplete
14
8
  def __init__(self, token: str) -> None: ...
15
- async def get_authorization_token(self, uri: str, additional_authentication_context: dict[str, Any] = {}) -> str: ...
9
+ def async_get_access_token(self) -> str: ...
16
10
 
17
- class OneDriveConfigEntryAccessTokenProvider(OneDriveAccessTokenProvider):
11
+ class OneDriveConfigEntryAccessTokenProvider(TokenProvider):
18
12
  _oauth_session: Incomplete
19
13
  def __init__(self, oauth_session: config_entry_oauth2_flow.OAuth2Session) -> None: ...
20
- async def get_authorization_token(self, uri: str, additional_authentication_context: dict[str, Any] = {}) -> str: ...
14
+ def async_get_access_token(self) -> str: ...
@@ -4,14 +4,13 @@ from _typeshed import Incomplete
4
4
  from collections.abc import AsyncIterator, Callable as Callable, Coroutine
5
5
  from homeassistant.components.backup import AgentBackup as AgentBackup, BackupAgent as BackupAgent, BackupAgentError as BackupAgentError, suggested_filename as suggested_filename
6
6
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
7
- from homeassistant.helpers.httpx_client import get_async_client as get_async_client
8
- from msgraph.generated.drives.item.items.item.drive_item_item_request_builder import DriveItemItemRequestBuilder as DriveItemItemRequestBuilder
9
- from msgraph.generated.models.drive_item import DriveItem
7
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
8
+ from onedrive_personal_sdk.models.items import File as File, Folder as Folder
10
9
  from typing import Any, Concatenate
11
10
 
12
11
  _LOGGER: Incomplete
13
12
  UPLOAD_CHUNK_SIZE: Incomplete
14
- MAX_RETRIES: int
13
+ TIMEOUT: Incomplete
15
14
 
16
15
  async def async_get_backup_agents(hass: HomeAssistant) -> list[BackupAgent]: ...
17
16
  @callback
@@ -22,7 +21,8 @@ class OneDriveBackupAgent(BackupAgent):
22
21
  domain = DOMAIN
23
22
  _hass: Incomplete
24
23
  _entry: Incomplete
25
- _items: Incomplete
24
+ _client: Incomplete
25
+ _token_provider: Incomplete
26
26
  _folder_id: Incomplete
27
27
  name: Incomplete
28
28
  unique_id: Incomplete
@@ -38,6 +38,4 @@ class OneDriveBackupAgent(BackupAgent):
38
38
  @handle_backup_errors
39
39
  async def async_get_backup(self, backup_id: str, **kwargs: Any) -> AgentBackup | None: ...
40
40
  def _backup_from_description(self, description: str) -> AgentBackup: ...
41
- async def _find_item_by_backup_id(self, backup_id: str) -> DriveItem | None: ...
42
- def _get_backup_file_item(self, backup_id: str) -> DriveItemItemRequestBuilder: ...
43
- async def _upload_file(self, upload_url: str, stream: AsyncIterator[bytes], total_size: int) -> None: ...
41
+ async def _find_item_by_backup_id(self, backup_id: str) -> File | Folder | None: ...
@@ -4,8 +4,8 @@ from .const import DOMAIN as DOMAIN, OAUTH_SCOPES as OAUTH_SCOPES
4
4
  from collections.abc import Mapping
5
5
  from homeassistant.config_entries import ConfigFlowResult as ConfigFlowResult, SOURCE_REAUTH as SOURCE_REAUTH
6
6
  from homeassistant.const import CONF_ACCESS_TOKEN as CONF_ACCESS_TOKEN, CONF_TOKEN as CONF_TOKEN
7
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
7
8
  from homeassistant.helpers.config_entry_oauth2_flow import AbstractOAuth2FlowHandler as AbstractOAuth2FlowHandler
8
- from homeassistant.helpers.httpx_client import get_async_client as get_async_client
9
9
  from typing import Any
10
10
 
11
11
  class OneDriveConfigFlow(AbstractOAuth2FlowHandler, domain=DOMAIN):
@@ -2,7 +2,7 @@ from .const import CONF_BACKUP_PATH as CONF_BACKUP_PATH, CONF_BACKUP_SHARE as CO
2
2
  from .models import SynologyDSMData as SynologyDSMData
3
3
  from _typeshed import Incomplete
4
4
  from collections.abc import AsyncIterator, Callable as Callable, Coroutine
5
- from homeassistant.components.backup import AgentBackup as AgentBackup, BackupAgent as BackupAgent, BackupAgentError as BackupAgentError
5
+ from homeassistant.components.backup import AgentBackup as AgentBackup, BackupAgent as BackupAgent, BackupAgentError as BackupAgentError, suggested_filename as suggested_filename
6
6
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
7
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
8
8
  from homeassistant.helpers.aiohttp_client import ChunkAsyncStreamIterator as ChunkAsyncStreamIterator
@@ -13,6 +13,7 @@ from typing import Any
13
13
 
14
14
  LOGGER: Incomplete
15
15
 
16
+ def suggested_filenames(backup: AgentBackup) -> tuple[str, str]: ...
16
17
  async def async_get_backup_agents(hass: HomeAssistant) -> list[BackupAgent]: ...
17
18
  @callback
18
19
  def async_register_backup_agents_listener(hass: HomeAssistant, *, listener: Callable[[], None], **kwargs: Any) -> Callable[[], None]: ...
@@ -26,6 +27,7 @@ class SynologyDSMBackupAgent(BackupAgent):
26
27
  def __init__(self, hass: HomeAssistant, entry: ConfigEntry, unique_id: str) -> None: ...
27
28
  @property
28
29
  def _file_station(self) -> SynoFileStation: ...
30
+ async def _async_suggested_filenames(self, backup_id: str) -> tuple[str, str]: ...
29
31
  async def async_download_backup(self, backup_id: str, **kwargs: Any) -> AsyncIterator[bytes]: ...
30
32
  async def async_upload_backup(self, *, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], backup: AgentBackup, **kwargs: Any) -> None: ...
31
33
  async def async_delete_backup(self, backup_id: str, **kwargs: Any) -> None: ...
@@ -1,6 +1,6 @@
1
1
  import dataclasses
2
2
  from _typeshed import Incomplete
3
- from collections.abc import Awaitable, Callable as Callable
3
+ from collections.abc import AsyncGenerator, Awaitable, Callable as Callable
4
4
  from homeassistant.components import websocket_api as websocket_api
5
5
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
6
6
  from homeassistant.helpers import aiohttp_client as aiohttp_client, integration_platform as integration_platform
@@ -23,6 +23,8 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
23
23
  @callback
24
24
  def _register_system_health_platform(hass: HomeAssistant, integration_domain: str, platform: SystemHealthProtocol) -> None: ...
25
25
  async def get_integration_info(hass: HomeAssistant, registration: SystemHealthRegistration) -> dict[str, Any]: ...
26
+ async def _registered_domain_data(hass: HomeAssistant) -> AsyncGenerator[tuple[str, dict[str, Any]]]: ...
27
+ async def get_info(hass: HomeAssistant) -> dict[str, dict[str, str]]: ...
26
28
  @callback
27
29
  def _format_value(val: Any) -> Any: ...
28
30
  @websocket_api.async_response
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: homeassistant-stubs
3
- Version: 2025.2.0b7
3
+ Version: 2025.2.0b9
4
4
  Summary: PEP 484 typing stubs for Home Assistant Core
5
5
  Project-URL: Homepage, https://github.com/KapJI/homeassistant-stubs
6
6
  Project-URL: Bug Tracker, https://github.com/KapJI/homeassistant-stubs/issues
@@ -18,7 +18,7 @@ Classifier: Topic :: Home Automation
18
18
  Classifier: Topic :: Software Development
19
19
  Classifier: Typing :: Typed
20
20
  Requires-Python: <3.14,>=3.13
21
- Requires-Dist: homeassistant==2025.2.0b7
21
+ Requires-Dist: homeassistant==2025.2.0b9
22
22
  Description-Content-Type: text/markdown
23
23
 
24
24
  [![CI](https://github.com/KapJI/homeassistant-stubs/actions/workflows/ci.yaml/badge.svg)](https://github.com/KapJI/homeassistant-stubs/actions/workflows/ci.yaml)
@@ -411,17 +411,17 @@ homeassistant-stubs/components/axis/hub/config.pyi,sha256=XdvjJsdRPVG1rx8AXEwsCG
411
411
  homeassistant-stubs/components/axis/hub/entity_loader.pyi,sha256=XgpSlOIFJ1kZM4w9d53MqdtK3xgZxnlQRYOw0BIvIwE,971
412
412
  homeassistant-stubs/components/axis/hub/event_source.pyi,sha256=2MWGaVgI5mHf_gEO1ds6qaZYNx5vD5xMINhcjbBJK1o,1182
413
413
  homeassistant-stubs/components/axis/hub/hub.pyi,sha256=mulaCc4i9ZIxA8la7aIObtE4AJtjQBsKzr61mj_CMqU,1544
414
- homeassistant-stubs/components/backup/__init__.pyi,sha256=Ttzbpq4U143HR9_Skqaq-GZeo5T2UhzTTscurden2s0,1504
415
- homeassistant-stubs/components/backup/agent.pyi,sha256=DpkW5FNDAA9T9AbxAVQOdjUu_YvBfLFJiT2Mg3sZVCs,1906
416
- homeassistant-stubs/components/backup/backup.pyi,sha256=uLKcQpmIMp_pt9McFb0fb0bQgTLvA_ZiJPPX8o1ZxNc,1737
414
+ homeassistant-stubs/components/backup/__init__.pyi,sha256=GTSbQNH6d3CGrwtoRytBpt0iyLWKvHDNhnWJtWHL_88,1678
415
+ homeassistant-stubs/components/backup/agent.pyi,sha256=GbbCb0uzuqZwpnfClAFgkf-QTtNtMTlBd7fHPpnms7A,1797
416
+ homeassistant-stubs/components/backup/backup.pyi,sha256=--FNKX88MzJ-_cfJsawQlTqbuHhxhJPLOoJbpvkKifE,1737
417
417
  homeassistant-stubs/components/backup/config.pyi,sha256=OK8m9EmG0RnlevvU0ADEPE3HTWgbwDafzQQ5wvNBnuM,5418
418
418
  homeassistant-stubs/components/backup/const.pyi,sha256=N3Hb5USpEK0tHJxtqdrgroGNitCuldDGckqVOVk2yX8,308
419
- homeassistant-stubs/components/backup/http.pyi,sha256=kDUEQMLnTwCH6vQNPkKxwHP9nRPF-LKtaT67lB_1f6g,1560
420
- homeassistant-stubs/components/backup/manager.pyi,sha256=y2DR5Re1VYLwSMAg9IeRlB3_A3AJGdVLciSXzAbYdpE,13781
421
- homeassistant-stubs/components/backup/models.pyi,sha256=SG3JfOq6qc-2yppKCaDy1ONyxaFAtD8qMUfjnYVh-3Q,1052
419
+ homeassistant-stubs/components/backup/http.pyi,sha256=4BMeB5O1IBqpG5XY02XdfE5K1uFhB6Ob6Aa_YSMwbfY,1613
420
+ homeassistant-stubs/components/backup/manager.pyi,sha256=v_eSGe_JeZBtuB2wOOfDNw1mfM7xTPuI2cjs6SxLTnQ,13768
421
+ homeassistant-stubs/components/backup/models.pyi,sha256=mFvNpBmNQ3vOZ4ep4y-1TYDzll8QeQNCx3aYaX36lLg,1212
422
422
  homeassistant-stubs/components/backup/store.pyi,sha256=CTgV9bZqdqSFYc6xrwrWizFVQYOaraG9ZHWAIMnBKi8,1174
423
- homeassistant-stubs/components/backup/util.pyi,sha256=UoCKw_wQEdbfwrBYa8Of81EX5wiLZeOGtKUH6Ic5Zdk,4168
424
- homeassistant-stubs/components/backup/websocket.pyi,sha256=2cnxdvl_VYBm_mbXgAqcepqqPoDVbaGymWmciaKM66k,3011
423
+ homeassistant-stubs/components/backup/util.pyi,sha256=0_yUHocSWTk3jPM-GFI-OTikYMCvtiYQzM-9b-pfG3k,4400
424
+ homeassistant-stubs/components/backup/websocket.pyi,sha256=kSJcnu97O7HxDiyp6lWBinuhrV93nyGusELOcPeuJ1k,3045
425
425
  homeassistant-stubs/components/baf/__init__.pyi,sha256=Ylh2xJjcBgDaMmOK4Jf2dc6oFmekClLSl0IgZljcRVQ,670
426
426
  homeassistant-stubs/components/baf/binary_sensor.pyi,sha256=EqurXjaTV7WQ5Wnkco7bPu1jSm-ZY4N_mmARtoxhFNE,1165
427
427
  homeassistant-stubs/components/baf/climate.pyi,sha256=rMtRwfJU5EgzEBlP5P5cdYwgmW3g3mu-8QO0ZNUJ90U,1276
@@ -616,7 +616,7 @@ homeassistant-stubs/components/cloud/client.pyi,sha256=rjc7j2n3jZMu_sPoxE81pOJzD
616
616
  homeassistant-stubs/components/cloud/config_flow.pyi,sha256=vm2mv28c3EqTWnBZ44h9BsVeFA6HkwcGRrkH-BDe9dA,336
617
617
  homeassistant-stubs/components/cloud/const.pyi,sha256=dMeRRe8RmVq2LDTeIoqZb4gKYseg4-FQPrR4bOITrww,1796
618
618
  homeassistant-stubs/components/cloud/google_config.pyi,sha256=WPDIF_sx4OQkoqTkFWSVQdQ3ms4IQV3Zpii2IiKH9Ak,4345
619
- homeassistant-stubs/components/cloud/http_api.pyi,sha256=gj6JDU4NbL0VlSb0XkLgTP7_ayLn8OqwarIqWf5bpIU,7869
619
+ homeassistant-stubs/components/cloud/http_api.pyi,sha256=KmYBFuvZRB7yAPaSJOD0Gp_L6wyQUaPGlf-r6nFyIIg,8123
620
620
  homeassistant-stubs/components/cloud/prefs.pyi,sha256=Dq9VToqLyzSIavEhJSmm-e8WlTYYl7bJhfAnvY2Zudw,5312
621
621
  homeassistant-stubs/components/cloud/repairs.pyi,sha256=xm6_byWtgSq4WcJUdR_r2VV4Pb4lSr48-T2TslA_Zno,1378
622
622
  homeassistant-stubs/components/cloud/stt.pyi,sha256=VtiHFCgdzaJJEDbc4mQkGP-A0CNZLk7Npi0ptCy9mAs,2062
@@ -1431,7 +1431,7 @@ homeassistant-stubs/components/homeassistant_yellow/const.pyi,sha256=7X2X_4ADaYb
1431
1431
  homeassistant-stubs/components/homeassistant_yellow/hardware.pyi,sha256=F0vW0HKbmTiUbCAYKK8j0nzSgOxlqC7Ja6h7WlE9qiA,518
1432
1432
  homeassistant-stubs/components/homee/__init__.pyi,sha256=rogh-qriORRnR58yqrv4p4o-qpjPsYgLnXm03NR5OGQ,708
1433
1433
  homeassistant-stubs/components/homee/config_flow.pyi,sha256=nkoWO86BrlvdMuhjymK3prZnmYP6_QpsBtJAnt_s11Y,574
1434
- homeassistant-stubs/components/homee/const.pyi,sha256=vZGXbLZj_RJJHI9LyrhOO9Z-5Thdz9DHoWN8CwDAO34,611
1434
+ homeassistant-stubs/components/homee/const.pyi,sha256=5KEv844zroIKbs0-bQXUQHXPJIcja6klelp0WotpxGA,629
1435
1435
  homeassistant-stubs/components/homee/cover.pyi,sha256=6jsaHsVw05Jf6ftcwRPXu92IurLAP1GeHlCxcaBpLWg,2261
1436
1436
  homeassistant-stubs/components/homee/entity.pyi,sha256=qyDTCBsSS744ZwCWVPJuJNkA82YVFKFwM-xmPXwFmn8,1856
1437
1437
  homeassistant-stubs/components/homee/helpers.pyi,sha256=UbrbjMWJKHCmDOqc_OJ3oUonExbkQ1UhYOdtmAO3pzM,160
@@ -1471,7 +1471,7 @@ homeassistant-stubs/components/homekit_controller/storage.pyi,sha256=WXANNCtoCm6
1471
1471
  homeassistant-stubs/components/homekit_controller/utils.pyi,sha256=Lb054G3_bRhkHSHmz_fi-iLHD-2cht34BIBjrUROLXU,664
1472
1472
  homeassistant-stubs/components/homewizard/__init__.pyi,sha256=nJ6ln9Ot3VCZSyQ9PMibVvO5Esi7e2xyPgO8gO5fdzM,1150
1473
1473
  homeassistant-stubs/components/homewizard/button.pyi,sha256=aBZB727defdZWpkgcw-KdYMvJarx22HoUMbzn0YmusQ,1146
1474
- homeassistant-stubs/components/homewizard/config_flow.pyi,sha256=fl5OaAPOu-7rXHhXmG7UeFcaKfAsVEnab_baCBVzdjE,2451
1474
+ homeassistant-stubs/components/homewizard/config_flow.pyi,sha256=_jKAvwHHh6lEMuMqF8efhlB53E2Ri_q6VYO2SYNFh50,2477
1475
1475
  homeassistant-stubs/components/homewizard/const.pyi,sha256=yLgz59VQEwQfqMoTLZ1v8yzYp2a17D-sWSM9RWL9CSM,231
1476
1476
  homeassistant-stubs/components/homewizard/coordinator.pyi,sha256=B8eiSlbhmpmsUTTT0qAljN55ASj0y8ar3EgH0kAh0BQ,940
1477
1477
  homeassistant-stubs/components/homewizard/diagnostics.pyi,sha256=UCrL38haQiv_lC-qmJL2ZOl10iacZUFpP5er6Oecopc,477
@@ -2393,11 +2393,11 @@ homeassistant-stubs/components/oncue/const.pyi,sha256=4EdfjkoGOjFyxQQnpGXMvvi-E5
2393
2393
  homeassistant-stubs/components/oncue/entity.pyi,sha256=TZJvQio7AWzk_dLywz3eSiHJJJQsMeVOqjA69LfZ5xc,1181
2394
2394
  homeassistant-stubs/components/oncue/sensor.pyi,sha256=9gLVq1feftHBrtw02Be1vpbB6Gus0lAv2JBxniW-g_8,1612
2395
2395
  homeassistant-stubs/components/oncue/types.pyi,sha256=KqG_536UpHzCPPb-qCPZA6bUmXVTiPqmIZKwz8NabMs,285
2396
- homeassistant-stubs/components/onedrive/__init__.pyi,sha256=Pi6zsrs7kcUl3ADgryN3yY2T7opRZc1D_qmFHVH969A,1587
2397
- homeassistant-stubs/components/onedrive/api.pyi,sha256=Bluz-pPYTDcVLgLoAhZy8DUsw0N1fC_MbSlxscUBK_c,1097
2396
+ homeassistant-stubs/components/onedrive/__init__.pyi,sha256=s7GqsIlxkutUnLcvxneg7agtA9vjsxx9SNp0IB2NQ7o,1427
2397
+ homeassistant-stubs/components/onedrive/api.pyi,sha256=jBHSZx_30q-CO1JcPAiL6fAROzAgrQpQG9NTrh4LfXE,653
2398
2398
  homeassistant-stubs/components/onedrive/application_credentials.pyi,sha256=gC5LevrYVBmGRf6YJuwIR4rPyphIk0ro8IvjoPQVjiI,343
2399
- homeassistant-stubs/components/onedrive/backup.pyi,sha256=cIeWwAEO190T7x-Sz7WtoaUXOe3TPtDexDkXd3OGLAg,2636
2400
- homeassistant-stubs/components/onedrive/config_flow.pyi,sha256=oWCpZLZlHcjVsmIOE8jAyiAy0Inzh3lqFawx4yfYaBY,1159
2399
+ homeassistant-stubs/components/onedrive/backup.pyi,sha256=XjQFK73v1QgmGdpF1jfuR8JMBuAhMm9kjuePEa39sIo,2370
2400
+ homeassistant-stubs/components/onedrive/config_flow.pyi,sha256=KWv8ztIW3WB5yByJ4SuPlGKkFqqHk5MhOn-nZADl_4g,1175
2401
2401
  homeassistant-stubs/components/onedrive/const.pyi,sha256=evMrmc2zcW6JonKLyshgaphWE_14cDyc9PQphaM_jGY,336
2402
2402
  homeassistant-stubs/components/onewire/__init__.pyi,sha256=wMDZKMHzaTbanOaeZ95Qi4krp8DV-HxY9toO5lC0PEo,878
2403
2403
  homeassistant-stubs/components/onewire/binary_sensor.pyi,sha256=3f8tg405qoYG9GCwHm-1CsAQw4VdpfgZK4B3NCt7qeE,1942
@@ -3289,7 +3289,7 @@ homeassistant-stubs/components/switcher_kis/sensor.pyi,sha256=t4X85IOslTTPDgENiv
3289
3289
  homeassistant-stubs/components/switcher_kis/switch.pyi,sha256=BwVvRHWVOAUsLg9IjBSsO2pj5xbPoiQA4Z_C9p7y30A,3638
3290
3290
  homeassistant-stubs/components/switcher_kis/utils.pyi,sha256=QZXY_c_fOdFbh0YleuleZP4Pz1HH7rI1LzE52VLI1gA,534
3291
3291
  homeassistant-stubs/components/synology_dsm/__init__.pyi,sha256=CUNt03jAwjqnQcFDIJaTouI7DrpRjiS6rlWCZUS5sb4,1972
3292
- homeassistant-stubs/components/synology_dsm/backup.pyi,sha256=F9dffe2H6OvRYeR_T1SxDiYbFWVCmo7szxdwwg5186w,2171
3292
+ homeassistant-stubs/components/synology_dsm/backup.pyi,sha256=Tuz2awVnD-cFW9vR1ejb7aHD6Lfm-ebUyaknMG0Tf04,2369
3293
3293
  homeassistant-stubs/components/synology_dsm/binary_sensor.pyi,sha256=3YyuXnYz_W_JB_kB16t4KazdGmXKngoUgmbqs80p4m4,2333
3294
3294
  homeassistant-stubs/components/synology_dsm/button.pyi,sha256=JGWnJRnJO7Jy_HwEGA7GwyvEJiwAcpDQJqh8o1geYd8,1509
3295
3295
  homeassistant-stubs/components/synology_dsm/camera.pyi,sha256=VfhIvOpet19evEXFoyB9o1CRkXXnwDB1Xk7Jr94v_Gc,2554
@@ -3305,7 +3305,7 @@ homeassistant-stubs/components/synology_dsm/sensor.pyi,sha256=BkDpmeOlKBGimcbXDI
3305
3305
  homeassistant-stubs/components/synology_dsm/service.pyi,sha256=h0qhMzwZO2z_nq_I0T1WbE5ViCtRCZy0eN0SIa-x2TE,422
3306
3306
  homeassistant-stubs/components/synology_dsm/switch.pyi,sha256=NODzRkhspxDeAAe_g36sbRwrl2RqHmr5KCZ-dnj0tJM,1861
3307
3307
  homeassistant-stubs/components/synology_dsm/update.pyi,sha256=66Zp6UYN4Wahixw1KtOWPH8qVIy8ECZ8IW7ljZ9pnYU,1556
3308
- homeassistant-stubs/components/system_health/__init__.pyi,sha256=bi596qrEM_KuYvdzYLShfSgMiMS2YtVhl_CQz3P3yBo,1932
3308
+ homeassistant-stubs/components/system_health/__init__.pyi,sha256=k7rT00IU17tciY1-4SVGfTnIfqv8kpsB7D4MRDfLEpA,2128
3309
3309
  homeassistant-stubs/components/system_log/__init__.pyi,sha256=pVTkbedAmQntjF0_Jo3cV4Wy5vCbJ7mRNJIZ8aZzCoI,2361
3310
3310
  homeassistant-stubs/components/systemmonitor/__init__.pyi,sha256=0QTWNhx4XDnf6nhR86afbx0g9mzIbdnvMAm9xFWXp58,1042
3311
3311
  homeassistant-stubs/components/systemmonitor/binary_sensor.pyi,sha256=h9SXOAb1XMtlgTlqPfappyuPzsYglqWxYPt0eQRnreE,2535
@@ -4019,7 +4019,7 @@ homeassistant-stubs/util/yaml/dumper.pyi,sha256=uQjW0KuME-gXVWgYJLNLoRDwDzVhhhgg
4019
4019
  homeassistant-stubs/util/yaml/input.pyi,sha256=wuxpKYTXZL4MujFhqjHnRLv4VPYY6QPYd-Zji-Lz9Mo,383
4020
4020
  homeassistant-stubs/util/yaml/loader.pyi,sha256=9MJS3AZNCemqAEU41KVJox1f16OceP64SNXE1-Z37kU,4117
4021
4021
  homeassistant-stubs/util/yaml/objects.pyi,sha256=EmJiT8WnVUHa5dkbYzXtWzu5mhO1YG5bBnEAIF0XLAU,665
4022
- homeassistant_stubs-2025.2.0b7.dist-info/METADATA,sha256=4l0aDA7f-V5qExJvYvpSaRNh5_V43ey4pFgbLNpXg9k,2956
4023
- homeassistant_stubs-2025.2.0b7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4024
- homeassistant_stubs-2025.2.0b7.dist-info/licenses/LICENSE,sha256=_kHFjg-MAmJ-lXc7HiEjUzD3vZutVYKUVZZpAWcIuqo,1075
4025
- homeassistant_stubs-2025.2.0b7.dist-info/RECORD,,
4022
+ homeassistant_stubs-2025.2.0b9.dist-info/METADATA,sha256=gQ8Z3i5LCOHSX8GwS77qNeQDqiMCJY8pWDE1I0-d-rs,2956
4023
+ homeassistant_stubs-2025.2.0b9.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4024
+ homeassistant_stubs-2025.2.0b9.dist-info/licenses/LICENSE,sha256=_kHFjg-MAmJ-lXc7HiEjUzD3vZutVYKUVZZpAWcIuqo,1075
4025
+ homeassistant_stubs-2025.2.0b9.dist-info/RECORD,,