homeassistant-stubs 2025.2.0b2__py3-none-any.whl → 2025.2.0b4__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.
Files changed (23) hide show
  1. homeassistant-stubs/components/backup/__init__.pyi +2 -1
  2. homeassistant-stubs/components/backup/backup.pyi +1 -1
  3. homeassistant-stubs/components/backup/config.pyi +1 -2
  4. homeassistant-stubs/components/backup/manager.pyi +1 -0
  5. homeassistant-stubs/components/backup/util.pyi +2 -0
  6. homeassistant-stubs/components/eheimdigital/climate.pyi +2 -0
  7. homeassistant-stubs/components/eheimdigital/coordinator.pyi +2 -3
  8. homeassistant-stubs/components/eheimdigital/light.pyi +1 -0
  9. homeassistant-stubs/components/google_drive/application_credentials.pyi +1 -0
  10. homeassistant-stubs/components/onedrive/backup.pyi +4 -1
  11. homeassistant-stubs/components/reolink/__init__.pyi +3 -2
  12. homeassistant-stubs/components/reolink/config_flow.pyi +1 -1
  13. homeassistant-stubs/components/reolink/const.pyi +1 -0
  14. homeassistant-stubs/components/reolink/host.pyi +6 -2
  15. homeassistant-stubs/components/reolink/util.pyi +4 -0
  16. homeassistant-stubs/components/roborock/__init__.pyi +1 -1
  17. homeassistant-stubs/components/roborock/coordinator.pyi +2 -2
  18. homeassistant-stubs/components/roborock/roborock_storage.pyi +2 -0
  19. homeassistant-stubs/helpers/config_entry_oauth2_flow.pyi +3 -0
  20. {homeassistant_stubs-2025.2.0b2.dist-info → homeassistant_stubs-2025.2.0b4.dist-info}/METADATA +2 -2
  21. {homeassistant_stubs-2025.2.0b2.dist-info → homeassistant_stubs-2025.2.0b4.dist-info}/RECORD +23 -23
  22. {homeassistant_stubs-2025.2.0b2.dist-info → homeassistant_stubs-2025.2.0b4.dist-info}/WHEEL +0 -0
  23. {homeassistant_stubs-2025.2.0b2.dist-info → homeassistant_stubs-2025.2.0b4.dist-info}/licenses/LICENSE +0 -0
@@ -1,9 +1,10 @@
1
1
  from .agent import BackupAgent as BackupAgent, BackupAgentError as BackupAgentError, BackupAgentPlatformProtocol as BackupAgentPlatformProtocol, LocalBackupAgent as LocalBackupAgent
2
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
3
  from .models import AddonInfo as AddonInfo, AgentBackup as AgentBackup, Folder as Folder
4
+ from .util import suggested_filename as suggested_filename, suggested_filename_from_name_date as suggested_filename_from_name_date
4
5
  from homeassistant.core import HomeAssistant, callback
5
6
 
6
- __all__ = ['AddonInfo', 'AgentBackup', 'BackupAgent', 'BackupAgentError', 'BackupAgentPlatformProtocol', 'BackupManagerError', 'BackupPlatformProtocol', 'BackupReaderWriter', 'BackupReaderWriterError', 'CreateBackupEvent', 'Folder', 'IdleEvent', 'IncorrectPasswordError', 'LocalBackupAgent', 'ManagerBackup', 'NewBackup', 'RestoreBackupEvent', 'RestoreBackupState', 'WrittenBackup', 'async_get_manager']
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
8
 
8
9
  @callback
9
10
  def async_get_manager(hass: HomeAssistant) -> BackupManager: ...
@@ -1,7 +1,7 @@
1
1
  from .agent import BackupAgent as BackupAgent, BackupNotFound as BackupNotFound, LocalBackupAgent as LocalBackupAgent
2
2
  from .const import DOMAIN as DOMAIN, LOGGER as LOGGER
3
3
  from .models import AgentBackup as AgentBackup
4
- from .util import read_backup as read_backup
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
7
7
  from homeassistant.core import HomeAssistant as HomeAssistant
@@ -3,7 +3,6 @@ from .const import LOGGER as LOGGER
3
3
  from .manager import BackupManager as BackupManager, ManagerBackup as ManagerBackup
4
4
  from .models import BackupManagerError as BackupManagerError, Folder as Folder
5
5
  from _typeshed import Incomplete
6
- from collections.abc import Callable as Callable
7
6
  from cronsim import CronSim
8
7
  from dataclasses import dataclass, field
9
8
  from datetime import datetime
@@ -158,5 +157,5 @@ class CreateBackupParametersDict(TypedDict, total=False):
158
157
  name: str | None
159
158
  password: str | None
160
159
 
161
- async def _delete_filtered_backups(manager: BackupManager, backup_filter: Callable[[dict[str, ManagerBackup]], dict[str, ManagerBackup]]) -> None: ...
160
+ def _automatic_backups_filter(backups: dict[str, ManagerBackup]) -> dict[str, ManagerBackup]: ...
162
161
  async def delete_backups_exceeding_configured_count(manager: BackupManager) -> None: ...
@@ -177,6 +177,7 @@ class BackupManager:
177
177
  @staticmethod
178
178
  def is_our_automatic_backup(backup: AgentBackup, our_instance_id: str) -> bool | None: ...
179
179
  async def async_delete_backup(self, backup_id: str) -> dict[str, Exception]: ...
180
+ async def async_delete_filtered_backups(self, *, include_filter: Callable[[dict[str, ManagerBackup]], dict[str, ManagerBackup]], delete_filter: Callable[[dict[str, ManagerBackup]], dict[str, ManagerBackup]]) -> None: ...
180
181
  async def async_receive_backup(self, *, agent_ids: list[str], contents: aiohttp.BodyPartReader) -> str: ...
181
182
  async def _async_receive_backup(self, *, agent_ids: list[str], contents: aiohttp.BodyPartReader) -> str: ...
182
183
  async def async_create_backup(self, *, agent_ids: list[str], extra_metadata: dict[str, bool | str] | None = None, include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, name: str | None, password: str | None, with_automatic_settings: bool = False) -> NewBackup: ...
@@ -34,6 +34,8 @@ class AbortCipher(HomeAssistantError):
34
34
 
35
35
  def make_backup_dir(path: Path) -> None: ...
36
36
  def read_backup(backup_path: Path) -> AgentBackup: ...
37
+ def suggested_filename_from_name_date(name: str, date_str: str) -> str: ...
38
+ def suggested_filename(backup: AgentBackup) -> str: ...
37
39
  def validate_password(path: Path, password: str | None) -> bool: ...
38
40
 
39
41
  class AsyncIteratorReader:
@@ -3,6 +3,7 @@ from .const import HEATER_BIO_MODE as HEATER_BIO_MODE, HEATER_PRESET_TO_HEATER_M
3
3
  from .coordinator import EheimDigitalUpdateCoordinator as EheimDigitalUpdateCoordinator
4
4
  from .entity import EheimDigitalEntity as EheimDigitalEntity
5
5
  from _typeshed import Incomplete
6
+ from eheimdigital.device import EheimDigitalDevice as EheimDigitalDevice
6
7
  from eheimdigital.heater import EheimDigitalHeater
7
8
  from homeassistant.components.climate import ClimateEntity as ClimateEntity, ClimateEntityFeature as ClimateEntityFeature, HVACAction as HVACAction, HVACMode as HVACMode, PRESET_NONE as PRESET_NONE
8
9
  from homeassistant.const import ATTR_TEMPERATURE as ATTR_TEMPERATURE, PRECISION_HALVES as PRECISION_HALVES, PRECISION_TENTHS as PRECISION_TENTHS, UnitOfTemperature as UnitOfTemperature
@@ -25,6 +26,7 @@ class EheimDigitalHeaterClimate(EheimDigitalEntity[EheimDigitalHeater], ClimateE
25
26
  _attr_temperature_unit: Incomplete
26
27
  _attr_preset_mode = PRESET_NONE
27
28
  _attr_translation_key: str
29
+ _attr_name: Incomplete
28
30
  _attr_unique_id: Incomplete
29
31
  def __init__(self, coordinator: EheimDigitalUpdateCoordinator, device: EheimDigitalHeater) -> None: ...
30
32
  async def async_set_preset_mode(self, preset_mode: str) -> None: ...
@@ -1,6 +1,6 @@
1
1
  from .const import DOMAIN as DOMAIN, LOGGER as LOGGER
2
2
  from _typeshed import Incomplete
3
- from collections.abc import Callable, Coroutine
3
+ from collections.abc import Callable
4
4
  from eheimdigital.device import EheimDigitalDevice
5
5
  from eheimdigital.types import EheimDeviceType as EheimDeviceType
6
6
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
@@ -9,9 +9,8 @@ from homeassistant.core import HomeAssistant as HomeAssistant
9
9
  from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
10
10
  from homeassistant.helpers.entity_component import DEFAULT_SCAN_INTERVAL as DEFAULT_SCAN_INTERVAL
11
11
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
12
- from typing import Any
13
12
 
14
- type AsyncSetupDeviceEntitiesCallback = Callable[[str], Coroutine[Any, Any, None]]
13
+ type AsyncSetupDeviceEntitiesCallback = Callable[[str | dict[str, EheimDigitalDevice]], None]
15
14
  class EheimDigitalUpdateCoordinator(DataUpdateCoordinator[dict[str, EheimDigitalDevice]]):
16
15
  config_entry: ConfigEntry
17
16
  hub: Incomplete
@@ -4,6 +4,7 @@ from .coordinator import EheimDigitalUpdateCoordinator as EheimDigitalUpdateCoor
4
4
  from .entity import EheimDigitalEntity as EheimDigitalEntity
5
5
  from _typeshed import Incomplete
6
6
  from eheimdigital.classic_led_ctrl import EheimDigitalClassicLEDControl
7
+ from eheimdigital.device import EheimDigitalDevice as EheimDigitalDevice
7
8
  from homeassistant.components.light import ATTR_BRIGHTNESS as ATTR_BRIGHTNESS, ATTR_EFFECT as ATTR_EFFECT, ColorMode as ColorMode, EFFECT_OFF as EFFECT_OFF, LightEntity as LightEntity, LightEntityFeature as LightEntityFeature
8
9
  from homeassistant.core import HomeAssistant as HomeAssistant
9
10
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
@@ -1,5 +1,6 @@
1
1
  from homeassistant.components.application_credentials import AuthorizationServer as AuthorizationServer
2
2
  from homeassistant.core import HomeAssistant as HomeAssistant
3
+ from homeassistant.helpers import config_entry_oauth2_flow as config_entry_oauth2_flow
3
4
 
4
5
  async def async_get_authorization_server(hass: HomeAssistant) -> AuthorizationServer: ...
5
6
  async def async_get_description_placeholders(hass: HomeAssistant) -> dict[str, str]: ...
@@ -2,14 +2,16 @@ from . import OneDriveConfigEntry as OneDriveConfigEntry
2
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 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.core import HomeAssistant as HomeAssistant, callback as callback
7
7
  from homeassistant.helpers.httpx_client import get_async_client as get_async_client
8
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
9
10
  from typing import Any, Concatenate
10
11
 
11
12
  _LOGGER: Incomplete
12
13
  UPLOAD_CHUNK_SIZE: Incomplete
14
+ MAX_RETRIES: int
13
15
 
14
16
  async def async_get_backup_agents(hass: HomeAssistant) -> list[BackupAgent]: ...
15
17
  @callback
@@ -36,5 +38,6 @@ class OneDriveBackupAgent(BackupAgent):
36
38
  @handle_backup_errors
37
39
  async def async_get_backup(self, backup_id: str, **kwargs: Any) -> AgentBackup | None: ...
38
40
  def _backup_from_description(self, description: str) -> AgentBackup: ...
41
+ async def _find_item_by_backup_id(self, backup_id: str) -> DriveItem | None: ...
39
42
  def _get_backup_file_item(self, backup_id: str) -> DriveItemItemRequestBuilder: ...
40
43
  async def _upload_file(self, upload_url: str, stream: AsyncIterator[bytes], total_size: int) -> None: ...
@@ -1,8 +1,8 @@
1
- from .const import CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
1
+ from .const import CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
2
2
  from .exceptions import PasswordIncompatible as PasswordIncompatible, ReolinkException as ReolinkException, UserNotAdmin as UserNotAdmin
3
3
  from .host import ReolinkHost as ReolinkHost
4
4
  from .services import async_setup_services as async_setup_services
5
- from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData, get_device_uid_and_ch as get_device_uid_and_ch
5
+ from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData, get_device_uid_and_ch as get_device_uid_and_ch, get_store as get_store
6
6
  from .views import PlaybackProxyView as PlaybackProxyView
7
7
  from _typeshed import Incomplete
8
8
  from homeassistant.config_entries import ConfigEntryState as ConfigEntryState
@@ -26,5 +26,6 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
26
26
  async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry) -> bool: ...
27
27
  async def entry_update_listener(hass: HomeAssistant, config_entry: ReolinkConfigEntry) -> None: ...
28
28
  async def async_unload_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry) -> bool: ...
29
+ async def async_remove_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry) -> None: ...
29
30
  async def async_remove_config_entry_device(hass: HomeAssistant, config_entry: ReolinkConfigEntry, device: dr.DeviceEntry) -> bool: ...
30
31
  def migrate_entity_ids(hass: HomeAssistant, config_entry_id: str, host: ReolinkHost) -> None: ...
@@ -1,4 +1,4 @@
1
- from .const import CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
1
+ from .const import CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
2
2
  from .exceptions import PasswordIncompatible as PasswordIncompatible, ReolinkException as ReolinkException, ReolinkWebhookException as ReolinkWebhookException, UserNotAdmin as UserNotAdmin
3
3
  from .host import ReolinkHost as ReolinkHost
4
4
  from .util import ReolinkConfigEntry as ReolinkConfigEntry, is_connected as is_connected
@@ -1,2 +1,3 @@
1
1
  DOMAIN: str
2
2
  CONF_USE_HTTPS: str
3
+ CONF_SUPPORTS_PRIVACY_MODE: str
@@ -1,6 +1,7 @@
1
1
  import asyncio
2
- from .const import CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
2
+ from .const import CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
3
3
  from .exceptions import PasswordIncompatible as PasswordIncompatible, ReolinkSetupException as ReolinkSetupException, ReolinkWebhookException as ReolinkWebhookException, UserNotAdmin as UserNotAdmin
4
+ from .util import get_store as get_store
4
5
  from _typeshed import Incomplete
5
6
  from aiohttp.web import Request as Request
6
7
  from collections import defaultdict
@@ -13,6 +14,7 @@ from homeassistant.helpers.device_registry import format_mac as format_mac
13
14
  from homeassistant.helpers.dispatcher import async_dispatcher_send as async_dispatcher_send
14
15
  from homeassistant.helpers.event import async_call_later as async_call_later
15
16
  from homeassistant.helpers.network import NoURLAvailableError as NoURLAvailableError, get_url as get_url
17
+ from homeassistant.helpers.storage import Store as Store
16
18
  from homeassistant.util.ssl import SSLCipherList as SSLCipherList
17
19
  from reolink_aio.api import Host
18
20
  from reolink_aio.enums import SubType
@@ -31,6 +33,8 @@ _LOGGER: Incomplete
31
33
 
32
34
  class ReolinkHost:
33
35
  _hass: HomeAssistant
36
+ _config_entry_id: Incomplete
37
+ _config: Incomplete
34
38
  _unique_id: str
35
39
  _api: Incomplete
36
40
  last_wake: float
@@ -57,7 +61,7 @@ class ReolinkHost:
57
61
  _lost_subscription_start: bool
58
62
  _lost_subscription: bool
59
63
  cancel_refresh_privacy_mode: CALLBACK_TYPE | None
60
- def __init__(self, hass: HomeAssistant, config: Mapping[str, Any], options: Mapping[str, Any]) -> None: ...
64
+ def __init__(self, hass: HomeAssistant, config: Mapping[str, Any], options: Mapping[str, Any], config_entry_id: str | None = None) -> None: ...
61
65
  @callback
62
66
  def async_register_update_cmd(self, cmd: str, channel: int | None = None) -> None: ...
63
67
  @callback
@@ -7,10 +7,13 @@ from homeassistant.components.media_source import Unresolvable as Unresolvable
7
7
  from homeassistant.core import HomeAssistant as HomeAssistant
8
8
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
9
9
  from homeassistant.helpers import device_registry as dr
10
+ from homeassistant.helpers.storage import Store as Store
10
11
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator
11
12
  from typing import Any
12
13
 
14
+ STORAGE_VERSION: int
13
15
  type ReolinkConfigEntry = config_entries.ConfigEntry[ReolinkData]
16
+
14
17
  @dataclass
15
18
  class ReolinkData:
16
19
  host: ReolinkHost
@@ -19,5 +22,6 @@ class ReolinkData:
19
22
 
20
23
  def is_connected(hass: HomeAssistant, config_entry: config_entries.ConfigEntry) -> bool: ...
21
24
  def get_host(hass: HomeAssistant, config_entry_id: str) -> ReolinkHost: ...
25
+ def get_store(hass: HomeAssistant, config_entry_id: str) -> Store[str]: ...
22
26
  def get_device_uid_and_ch(device: dr.DeviceEntry, host: ReolinkHost) -> tuple[list[str], int | None, bool]: ...
23
27
  def raise_translated_error[**P, R](func: Callable[P, Awaitable[R]]) -> Callable[P, Coroutine[Any, Any, R]]: ...
@@ -5,7 +5,7 @@ from _typeshed import Incomplete
5
5
  from collections.abc import Coroutine
6
6
  from dataclasses import dataclass
7
7
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
8
- from homeassistant.const import CONF_USERNAME as CONF_USERNAME
8
+ from homeassistant.const import CONF_USERNAME as CONF_USERNAME, EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP
9
9
  from homeassistant.core import HomeAssistant as HomeAssistant
10
10
  from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
11
11
  from roborock import HomeDataRoom as HomeDataRoom
@@ -34,7 +34,7 @@ class RoborockDataUpdateCoordinator(DataUpdateCoordinator[DeviceProp]):
34
34
  def __init__(self, hass: HomeAssistant, device: HomeDataDevice, device_networking: NetworkInfo, product_info: HomeDataProduct, cloud_api: RoborockMqttClientV1, home_data_rooms: list[HomeDataRoom]) -> None: ...
35
35
  async def _async_setup(self) -> None: ...
36
36
  async def _verify_api(self) -> None: ...
37
- async def release(self) -> None: ...
37
+ async def async_shutdown(self) -> None: ...
38
38
  async def _update_device_prop(self) -> None: ...
39
39
  async def _async_update_data(self) -> DeviceProp: ...
40
40
  def _set_current_map(self) -> None: ...
@@ -51,7 +51,7 @@ class RoborockDataUpdateCoordinatorA01(DataUpdateCoordinator[dict[RoborockDyadDa
51
51
  roborock_device_info: Incomplete
52
52
  def __init__(self, hass: HomeAssistant, device: HomeDataDevice, product_info: HomeDataProduct, api: RoborockClientA01) -> None: ...
53
53
  async def _async_update_data(self) -> dict[RoborockDyadDataProtocol | RoborockZeoProtocol, StateType]: ...
54
- async def release(self) -> None: ...
54
+ async def async_shutdown(self) -> None: ...
55
55
  @cached_property
56
56
  def duid(self) -> str: ...
57
57
  @cached_property
@@ -12,10 +12,12 @@ def _storage_path_prefix(hass: HomeAssistant, entry_id: str) -> Path: ...
12
12
  class RoborockMapStorage:
13
13
  _hass: Incomplete
14
14
  _path_prefix: Incomplete
15
+ _write_queue: dict[int, bytes]
15
16
  def __init__(self, hass: HomeAssistant, entry_id: str, device_id_slug: str) -> None: ...
16
17
  async def async_load_map(self, map_flag: int) -> bytes | None: ...
17
18
  def _load_map(self, filename: Path) -> bytes | None: ...
18
19
  async def async_save_map(self, map_flag: int, content: bytes) -> None: ...
20
+ async def flush(self) -> None: ...
19
21
  def _save_map(self, filename: Path, content: bytes) -> None: ...
20
22
 
21
23
  async def async_remove_map_storage(hass: HomeAssistant, entry_id: str) -> None: ...
@@ -24,6 +24,9 @@ CLOCK_OUT_OF_SYNC_MAX_SEC: int
24
24
  OAUTH_AUTHORIZE_URL_TIMEOUT_SEC: int
25
25
  OAUTH_TOKEN_TIMEOUT_SEC: int
26
26
 
27
+ @callback
28
+ def async_get_redirect_uri(hass: HomeAssistant) -> str: ...
29
+
27
30
  class AbstractOAuth2Implementation(ABC, metaclass=abc.ABCMeta):
28
31
  @property
29
32
  @abstractmethod
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: homeassistant-stubs
3
- Version: 2025.2.0b2
3
+ Version: 2025.2.0b4
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.0b2
21
+ Requires-Dist: homeassistant==2025.2.0b4
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,16 +411,16 @@ 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=IV8yiUhMPagJ6I-IWKK1kTTMgQa004J33IPkIH3kcBQ,1314
414
+ homeassistant-stubs/components/backup/__init__.pyi,sha256=Ttzbpq4U143HR9_Skqaq-GZeo5T2UhzTTscurden2s0,1504
415
415
  homeassistant-stubs/components/backup/agent.pyi,sha256=DpkW5FNDAA9T9AbxAVQOdjUu_YvBfLFJiT2Mg3sZVCs,1906
416
- homeassistant-stubs/components/backup/backup.pyi,sha256=QB50md9OqenXxY7MO5fdi6iHmQy4tXUI3T9ewCYdGW8,1695
417
- homeassistant-stubs/components/backup/config.pyi,sha256=byGi--EOmOm2ZwyygMm5AjFgyyM16GaCjwMVke3rF_I,5520
416
+ homeassistant-stubs/components/backup/backup.pyi,sha256=uLKcQpmIMp_pt9McFb0fb0bQgTLvA_ZiJPPX8o1ZxNc,1737
417
+ homeassistant-stubs/components/backup/config.pyi,sha256=OK8m9EmG0RnlevvU0ADEPE3HTWgbwDafzQQ5wvNBnuM,5418
418
418
  homeassistant-stubs/components/backup/const.pyi,sha256=N3Hb5USpEK0tHJxtqdrgroGNitCuldDGckqVOVk2yX8,308
419
419
  homeassistant-stubs/components/backup/http.pyi,sha256=kDUEQMLnTwCH6vQNPkKxwHP9nRPF-LKtaT67lB_1f6g,1560
420
- homeassistant-stubs/components/backup/manager.pyi,sha256=npKZyev8J2CP_cRCrDvuH_7WkZVX1Dnpt3L1UAvEk08,13556
420
+ homeassistant-stubs/components/backup/manager.pyi,sha256=y2DR5Re1VYLwSMAg9IeRlB3_A3AJGdVLciSXzAbYdpE,13781
421
421
  homeassistant-stubs/components/backup/models.pyi,sha256=SG3JfOq6qc-2yppKCaDy1ONyxaFAtD8qMUfjnYVh-3Q,1052
422
422
  homeassistant-stubs/components/backup/store.pyi,sha256=CTgV9bZqdqSFYc6xrwrWizFVQYOaraG9ZHWAIMnBKi8,1174
423
- homeassistant-stubs/components/backup/util.pyi,sha256=IPextwlfUcZT8b-rhfU0qGVBOKTtjyU4zpVAC02NWAI,4036
423
+ homeassistant-stubs/components/backup/util.pyi,sha256=UoCKw_wQEdbfwrBYa8Of81EX5wiLZeOGtKUH6Ic5Zdk,4168
424
424
  homeassistant-stubs/components/backup/websocket.pyi,sha256=2cnxdvl_VYBm_mbXgAqcepqqPoDVbaGymWmciaKM66k,3011
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
@@ -918,12 +918,12 @@ homeassistant-stubs/components/efergy/const.pyi,sha256=BcxPoGgibA8PTYK8tKhK-bxRu
918
918
  homeassistant-stubs/components/efergy/entity.pyi,sha256=qRftczmCFJNRlPU9h3ephyYP3w8JyejiJkJOWxy_Wx0,452
919
919
  homeassistant-stubs/components/efergy/sensor.pyi,sha256=7y3w0uLcQ3J5iV76cr8bUHr9ZGythe0IZitOKUSy5cE,1529
920
920
  homeassistant-stubs/components/eheimdigital/__init__.pyi,sha256=W2_rMokC840tK7Y_Ob4CS8excVWyD2I7LiHB75lV2aU,847
921
- homeassistant-stubs/components/eheimdigital/climate.pyi,sha256=C1a5FT0Duxzfl_0-kNs1Wa618536USBl0PpHEnlAUXM,2249
921
+ homeassistant-stubs/components/eheimdigital/climate.pyi,sha256=7tKu75m1N8tX01384cH9dCIff1pK_QgwP83EEs_XEmg,2349
922
922
  homeassistant-stubs/components/eheimdigital/config_flow.pyi,sha256=W--gIgnYhAol__zuancqhAghvqp_A7jq9EUOMomJKnQ,1058
923
923
  homeassistant-stubs/components/eheimdigital/const.pyi,sha256=49OZQwYkDDD8s5yk5l10RZex6lNN9MO6UbPAJnareOI,369
924
- homeassistant-stubs/components/eheimdigital/coordinator.pyi,sha256=SdJfqpkfCEQK53WjScRylVCUhagF_Z46dv6dyV8XPao,1556
924
+ homeassistant-stubs/components/eheimdigital/coordinator.pyi,sha256=cI3k_L-pg6LKBx2BSDhl7-COzCcDVCqSRD_aCQeXK_g,1533
925
925
  homeassistant-stubs/components/eheimdigital/entity.pyi,sha256=-x5QWJtrKVGTlHGPwbAGwooKS6CHFGywPpdiYEwCV5Y,1069
926
- homeassistant-stubs/components/eheimdigital/light.pyi,sha256=2gzod8kkXKSBW2fd8MXdtOosRPz3j7xaWigPJ7HnCm4,2057
926
+ homeassistant-stubs/components/eheimdigital/light.pyi,sha256=VAgkCoatwkcn1no2rwmqZHXaR-KCz4H-ciSA5q_MNE0,2130
927
927
  homeassistant-stubs/components/electrasmart/__init__.pyi,sha256=Ihs3IF0cNVlrf4Wwqy3P0Siqbi7EBld185TUZIk36UY,842
928
928
  homeassistant-stubs/components/electrasmart/climate.pyi,sha256=JFXHcb43FfvbJMn7G-v-tXnWScYrSU6gZi_NnmVqiQo,3272
929
929
  homeassistant-stubs/components/electrasmart/config_flow.pyi,sha256=WIr2iCfHWH7m9uI0ocMxRpUFYKY9VoDnzaV0mX01gTI,1488
@@ -1278,7 +1278,7 @@ homeassistant-stubs/components/google_cloud/stt.pyi,sha256=UJPsL2DpdR6YAqk-B04vZ
1278
1278
  homeassistant-stubs/components/google_cloud/tts.pyi,sha256=Xs7VppuHboUhedyyDJL3BzFjGxyX3sNluYY0_fIQFM4,3207
1279
1279
  homeassistant-stubs/components/google_drive/__init__.pyi,sha256=Es1ePXR0u1w689VEfB4un5sPjao5NGwL8JZUQSbmm9s,1146
1280
1280
  homeassistant-stubs/components/google_drive/api.pyi,sha256=7GLTWPgSlfC2GQppkdNJgSURmIg1UHDpmb-qY_2ieHw,1950
1281
- homeassistant-stubs/components/google_drive/application_credentials.pyi,sha256=Gmvn3dEU0tsbOI858WMEY_rFTOymSz9L8RAhQnYEjpc,346
1281
+ homeassistant-stubs/components/google_drive/application_credentials.pyi,sha256=dhwkmqp34vm9JEsf2qggjkDAkhbM9iIr8u3Va-pz3KI,433
1282
1282
  homeassistant-stubs/components/google_drive/backup.pyi,sha256=owvzDHPwVKd-vxcSaEv3o2rUwhXlT1QvND8A5zB0Fmw,1739
1283
1283
  homeassistant-stubs/components/google_drive/config_flow.pyi,sha256=gVO87X4hat7MZhGWcVvIYWYdGAAU98WdMtVvAgGb3po,1269
1284
1284
  homeassistant-stubs/components/google_drive/const.pyi,sha256=khiPPfo2eMEa2_FD5EaWMNBjEj5lrRekpLiGQofynn8,12
@@ -2395,7 +2395,7 @@ homeassistant-stubs/components/oncue/types.pyi,sha256=KqG_536UpHzCPPb-qCPZA6bUmX
2395
2395
  homeassistant-stubs/components/onedrive/__init__.pyi,sha256=Pi6zsrs7kcUl3ADgryN3yY2T7opRZc1D_qmFHVH969A,1587
2396
2396
  homeassistant-stubs/components/onedrive/api.pyi,sha256=Bluz-pPYTDcVLgLoAhZy8DUsw0N1fC_MbSlxscUBK_c,1097
2397
2397
  homeassistant-stubs/components/onedrive/application_credentials.pyi,sha256=gC5LevrYVBmGRf6YJuwIR4rPyphIk0ro8IvjoPQVjiI,343
2398
- homeassistant-stubs/components/onedrive/backup.pyi,sha256=BKpnlxO7pUqishnm4Yp9mL7A25qyra2hCDaKUssKrTk,2434
2398
+ homeassistant-stubs/components/onedrive/backup.pyi,sha256=cIeWwAEO190T7x-Sz7WtoaUXOe3TPtDexDkXd3OGLAg,2636
2399
2399
  homeassistant-stubs/components/onedrive/config_flow.pyi,sha256=oWCpZLZlHcjVsmIOE8jAyiAy0Inzh3lqFawx4yfYaBY,1159
2400
2400
  homeassistant-stubs/components/onedrive/const.pyi,sha256=evMrmc2zcW6JonKLyshgaphWE_14cDyc9PQphaM_jGY,336
2401
2401
  homeassistant-stubs/components/onewire/__init__.pyi,sha256=wMDZKMHzaTbanOaeZ95Qi4krp8DV-HxY9toO5lC0PEo,878
@@ -2779,16 +2779,16 @@ homeassistant-stubs/components/renault/renault_vehicle.pyi,sha256=a6GzNFgckeFwC8
2779
2779
  homeassistant-stubs/components/renault/select.pyi,sha256=EWN8KVW3r9BQ1qlnQNrZpc5l6AW0FxeMn9JMi1xPpaA,1325
2780
2780
  homeassistant-stubs/components/renault/sensor.pyi,sha256=MkzCe_iElhk7JvjXdJ9TAMAJRya_P3Zj0htGwHFek90,2368
2781
2781
  homeassistant-stubs/components/renault/services.pyi,sha256=93aeXcNqvW36ybA568nTXdIfvLdE_ZZ6jivO6PtsR1U,1080
2782
- homeassistant-stubs/components/reolink/__init__.pyi,sha256=XyhLIl8HNUKS3PKmAaZyLbvpfQduLIRZ25Y0705MJpY,2113
2782
+ homeassistant-stubs/components/reolink/__init__.pyi,sha256=5pBZuk8TH2PDAUr_g9Gou9jOb866IWQdfdGghikFwRI,2292
2783
2783
  homeassistant-stubs/components/reolink/binary_sensor.pyi,sha256=xEiIog0nAbS2wPhYCD0TOFuAdZMAYRSHCX2Y30UHw3Q,1883
2784
2784
  homeassistant-stubs/components/reolink/button.pyi,sha256=pmgmSzKfbnSKFxpIglQja1MYWlO0KELluirBBvBhi38,2698
2785
2785
  homeassistant-stubs/components/reolink/camera.pyi,sha256=h3q172wEZyZ_od5zwgADfaGhQGPh801F6oZwGpkfZHE,1552
2786
- homeassistant-stubs/components/reolink/config_flow.pyi,sha256=dPpIkQZXw6Dbvl_SLOG9BKu-dw5H91DcBUyfXt7g3yk,2434
2787
- homeassistant-stubs/components/reolink/const.pyi,sha256=9elp6o1-C2MFX-igL2xu56A8IDGTdMqpFywGZeUhNyY,32
2786
+ homeassistant-stubs/components/reolink/config_flow.pyi,sha256=6qDl0_CvOLc--w31TI7cYqE13lPLVTyjb9CjNaz7wEM,2492
2787
+ homeassistant-stubs/components/reolink/const.pyi,sha256=gtIoXbArbXmFsnrh7hmDgEeRyiGigbkfpttSjpVIbME,64
2788
2788
  homeassistant-stubs/components/reolink/diagnostics.pyi,sha256=FYtTX1V3XHgvwY2pDt0OoPeiZDWXAkzYY31b41rqIas,296
2789
2789
  homeassistant-stubs/components/reolink/entity.pyi,sha256=bvcjJ1TqkwZBgMSFN4Gvk1LoitJ73Vjv1ViaqzoC2KM,2923
2790
2790
  homeassistant-stubs/components/reolink/exceptions.pyi,sha256=eCC-KWgwTQeTaAm1XA27iWOrPmfdRnkqj14BH3trGVI,323
2791
- homeassistant-stubs/components/reolink/host.pyi,sha256=KYXBd_hz_OWiestiD-sDZros2BGgcP_xh3nwJzuGVL4,4289
2791
+ homeassistant-stubs/components/reolink/host.pyi,sha256=6MOHM3G0yt2go6RqOiiSW24U5OXr9iWzi-vi9vTexcI,4538
2792
2792
  homeassistant-stubs/components/reolink/light.pyi,sha256=a6TlwtL6Kl8zD5Erc8Qo_h9-cTA-BiusrTQS-rBoTes,2975
2793
2793
  homeassistant-stubs/components/reolink/media_source.pyi,sha256=GWptV0u5ZCdlwR5-cy1fosjiPy2S1MIZYG0pIpUnHSY,1721
2794
2794
  homeassistant-stubs/components/reolink/number.pyi,sha256=UtYLVYNFlNjs5VgdD7jZwFEzcSmNShcZ1eyYoEYb7a0,3691
@@ -2798,7 +2798,7 @@ homeassistant-stubs/components/reolink/services.pyi,sha256=5MlkkniNxRTS5rP0gA-I-
2798
2798
  homeassistant-stubs/components/reolink/siren.pyi,sha256=Ft9S0wd7nSfMJQkGCsy0JHehHHc_AF6nRcApai2akTQ,1560
2799
2799
  homeassistant-stubs/components/reolink/switch.pyi,sha256=1_npNLSZ-KQJqeRyY5OaQOyQ3GmG99UUolGX9jtdLYA,3702
2800
2800
  homeassistant-stubs/components/reolink/update.pyi,sha256=g97iVH-OZTZed0WVZio3O23L5E590mo9J9QARutn4m4,3828
2801
- homeassistant-stubs/components/reolink/util.pyi,sha256=V-0Js4UAW0f0Zs1E047tvjdBg9gG5FTNG58W8DIAwss,1312
2801
+ homeassistant-stubs/components/reolink/util.pyi,sha256=Gws_xTkGNngjorTpNeGtGXIa1t4IBO6dQf2QN4r64UM,1467
2802
2802
  homeassistant-stubs/components/reolink/views.pyi,sha256=4HVI42z48HK0n4N3i6O7iO4nZlJppvwuyM1xetvrJLU,1041
2803
2803
  homeassistant-stubs/components/repairs/__init__.pyi,sha256=rP2wDUxLdI5jElaCv55gBOyLl43X4KtQXwaCD2BFXeU,421
2804
2804
  homeassistant-stubs/components/repairs/const.pyi,sha256=khiPPfo2eMEa2_FD5EaWMNBjEj5lrRekpLiGQofynn8,12
@@ -2869,18 +2869,18 @@ homeassistant-stubs/components/rituals_perfume_genie/number.pyi,sha256=vEcDSCqjS
2869
2869
  homeassistant-stubs/components/rituals_perfume_genie/select.pyi,sha256=pjxWHXjSnXkY9IstiPhkFub5oD_beDMaOiqgbkCmHKA,1562
2870
2870
  homeassistant-stubs/components/rituals_perfume_genie/sensor.pyi,sha256=6B03zPt2qQbbRuvhqwhozHiB6kU_iAb4qTUCw0gxJ-Y,1380
2871
2871
  homeassistant-stubs/components/rituals_perfume_genie/switch.pyi,sha256=FuMxOc9Q-IGBIQzZV-l4o5sTIdxFdIqFXnZOz83aszM,1612
2872
- homeassistant-stubs/components/roborock/__init__.pyi,sha256=rZiR6_mNvpojsQIZO0Zp7RQzALHVSMXOKbTkOiLicBA,2585
2872
+ homeassistant-stubs/components/roborock/__init__.pyi,sha256=740fLbGgwMeZUE-EdfiQd0FhLOTTsUu1kzyOih7H7M8,2639
2873
2873
  homeassistant-stubs/components/roborock/binary_sensor.pyi,sha256=Ff_C_YfSxK3YIHiDGLs-7wbep9L-Q3-KOE4TkrBdEKQ,1487
2874
2874
  homeassistant-stubs/components/roborock/button.pyi,sha256=jJ0VLrP0PrIVjd0jcVUNKrHu86qxzyhTzdY06SbaQ_A,1289
2875
2875
  homeassistant-stubs/components/roborock/config_flow.pyi,sha256=oXHOPEexgLdYspp-0nt2R1VMw7plYtE-wRyhHKXxuB8,1941
2876
2876
  homeassistant-stubs/components/roborock/const.pyi,sha256=SAstjD3OGuxxKmVH-bRpRwT-aqBYmbmzrCHnAXxFpCE,429
2877
- homeassistant-stubs/components/roborock/coordinator.pyi,sha256=5ApVwRpbsObOJdbs-zrYvmCCXYVY2ngrt2u_kE_5vLU,3210
2877
+ homeassistant-stubs/components/roborock/coordinator.pyi,sha256=Gkyf5s0pHXdFdC4KSYfZiNNKOiOg6vBMLW3hK6Z1tVw,3224
2878
2878
  homeassistant-stubs/components/roborock/diagnostics.pyi,sha256=VtrnKsPiGMAAqt-7BlhSHIe-7ALte5aEtwvJmcX5uDE,511
2879
2879
  homeassistant-stubs/components/roborock/entity.pyi,sha256=O5kGsR8u9oDJJD4XrGeIz_KvGzToTzqXZHZtW--EFQo,3083
2880
2880
  homeassistant-stubs/components/roborock/image.pyi,sha256=7rQqqvWnm0AhhBotpUO7mqaUxwG8tIbygwCXsI6wJYY,1993
2881
2881
  homeassistant-stubs/components/roborock/models.pyi,sha256=JafSkeURg1toz6HiSKYY2U68yeX93xxTccWNIy_7WRo,700
2882
2882
  homeassistant-stubs/components/roborock/number.pyi,sha256=16v4q9osYzcBbsE2DtWD_CepIXYeu2AI1rBZsijD4IU,1771
2883
- homeassistant-stubs/components/roborock/roborock_storage.pyi,sha256=mpEetq-n7WYtHOF7WspLp06Og3mVETzP1GLGzmirwc8,872
2883
+ homeassistant-stubs/components/roborock/roborock_storage.pyi,sha256=FsdJgkm0Nut_y3RSlYjNU0MRxRXKJ0sNjStE9AMecjk,946
2884
2884
  homeassistant-stubs/components/roborock/select.pyi,sha256=GZocSzVTmK9EDJk6A5680Xxn8oQxv7kjgnC8bqUqWfs,2187
2885
2885
  homeassistant-stubs/components/roborock/sensor.pyi,sha256=g1QnOYZjiT4PgPwRZxn_3Fy4tAsF8ZIzxKj1HCfEz94,2545
2886
2886
  homeassistant-stubs/components/roborock/switch.pyi,sha256=5vICBtMuwCcyTZUowLsVwQfOhJ20t1yTqWx4qr7G8hU,1804
@@ -3899,7 +3899,7 @@ homeassistant-stubs/helpers/check_config.pyi,sha256=zOdzvtEUMrEmQ9D8acIIWejJvd8b
3899
3899
  homeassistant-stubs/helpers/collection.pyi,sha256=9lf6IWv_0YRe_KMgc17cG37Ql3WaoT6nu2F3-Q6ZF9I,7574
3900
3900
  homeassistant-stubs/helpers/condition.pyi,sha256=SwmBnDSxLc0U7kNL2u-hn3U3hzI-3CDT4GZLsgdxZZo,6463
3901
3901
  homeassistant-stubs/helpers/config_entry_flow.pyi,sha256=o6lCGgd7Om_AHHxiotM6W6lguAjx38rEwxVmOBz3Oqc,3032
3902
- homeassistant-stubs/helpers/config_entry_oauth2_flow.pyi,sha256=tVGB5SZzextKQNEempVgW8p5LXmoi9gW6xX4Z4XOfZ0,5420
3902
+ homeassistant-stubs/helpers/config_entry_oauth2_flow.pyi,sha256=1HKjZZBbWsgERrVdbwqcelzeALGu_9_QspQz5rYXLVI,5491
3903
3903
  homeassistant-stubs/helpers/config_validation.pyi,sha256=g3EhmoTQbf8obKToXZzIF9WZIsqOCPV4G90z3POnBSo,12308
3904
3904
  homeassistant-stubs/helpers/data_entry_flow.pyi,sha256=RCeRvHGm8dzZPTqDFsxnwgHP_rM0Cw6ALXYu_kvQazc,1402
3905
3905
  homeassistant-stubs/helpers/debounce.pyi,sha256=lnisG_0NkR1odeqez4SDZkW_Wk8BDiYt55cSfY4M9_Y,1353
@@ -4018,7 +4018,7 @@ homeassistant-stubs/util/yaml/dumper.pyi,sha256=uQjW0KuME-gXVWgYJLNLoRDwDzVhhhgg
4018
4018
  homeassistant-stubs/util/yaml/input.pyi,sha256=wuxpKYTXZL4MujFhqjHnRLv4VPYY6QPYd-Zji-Lz9Mo,383
4019
4019
  homeassistant-stubs/util/yaml/loader.pyi,sha256=9MJS3AZNCemqAEU41KVJox1f16OceP64SNXE1-Z37kU,4117
4020
4020
  homeassistant-stubs/util/yaml/objects.pyi,sha256=EmJiT8WnVUHa5dkbYzXtWzu5mhO1YG5bBnEAIF0XLAU,665
4021
- homeassistant_stubs-2025.2.0b2.dist-info/METADATA,sha256=oUW39X222lmdwONk8Yj33Q5sPqGROwlH7wcFixnve6U,2956
4022
- homeassistant_stubs-2025.2.0b2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4023
- homeassistant_stubs-2025.2.0b2.dist-info/licenses/LICENSE,sha256=_kHFjg-MAmJ-lXc7HiEjUzD3vZutVYKUVZZpAWcIuqo,1075
4024
- homeassistant_stubs-2025.2.0b2.dist-info/RECORD,,
4021
+ homeassistant_stubs-2025.2.0b4.dist-info/METADATA,sha256=CYS3LdMsq02ZNthqGhDOlJQSLuuI0_2nlSGycAziu0E,2956
4022
+ homeassistant_stubs-2025.2.0b4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4023
+ homeassistant_stubs-2025.2.0b4.dist-info/licenses/LICENSE,sha256=_kHFjg-MAmJ-lXc7HiEjUzD3vZutVYKUVZZpAWcIuqo,1075
4024
+ homeassistant_stubs-2025.2.0b4.dist-info/RECORD,,