homeassistant-stubs 2025.8.3__py3-none-any.whl → 2025.9.0b1__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.
Potentially problematic release.
This version of homeassistant-stubs might be problematic. Click here for more details.
- homeassistant-stubs/auth/models.pyi +3 -1
- homeassistant-stubs/components/airos/binary_sensor.pyi +27 -0
- homeassistant-stubs/components/airos/sensor.pyi +4 -2
- homeassistant-stubs/components/airq/number.pyi +31 -0
- homeassistant-stubs/components/aladdin_connect/__init__.pyi +10 -5
- homeassistant-stubs/components/aladdin_connect/api.pyi +12 -0
- homeassistant-stubs/components/aladdin_connect/application_credentials.pyi +5 -0
- homeassistant-stubs/components/aladdin_connect/config_flow.pyi +15 -4
- homeassistant-stubs/components/aladdin_connect/const.pyi +10 -0
- homeassistant-stubs/components/aladdin_connect/coordinator.pyi +16 -0
- homeassistant-stubs/components/aladdin_connect/cover.pyi +25 -0
- homeassistant-stubs/components/aladdin_connect/entity.pyi +15 -0
- homeassistant-stubs/components/aladdin_connect/sensor.pyi +25 -0
- homeassistant-stubs/components/alexa_devices/__init__.pyi +1 -1
- homeassistant-stubs/components/alexa_devices/config_flow.pyi +2 -0
- homeassistant-stubs/components/alexa_devices/const.pyi +1 -1
- homeassistant-stubs/components/alexa_devices/sensor.pyi +1 -1
- homeassistant-stubs/components/amberelectric/const.pyi +0 -1
- homeassistant-stubs/components/amberelectric/services.pyi +2 -1
- homeassistant-stubs/components/ambient_station/entity.pyi +1 -1
- homeassistant-stubs/components/android_ip_webcam/coordinator.pyi +0 -1
- homeassistant-stubs/components/apcupsd/binary_sensor.pyi +2 -6
- homeassistant-stubs/components/apcupsd/entity.pyi +11 -0
- homeassistant-stubs/components/apcupsd/sensor.pyi +2 -6
- homeassistant-stubs/components/asuswrt/bridge.pyi +10 -8
- homeassistant-stubs/components/asuswrt/helpers.pyi +8 -0
- homeassistant-stubs/components/auth/login_flow.pyi +1 -1
- homeassistant-stubs/components/auth/mfa_setup_flow.pyi +1 -1
- homeassistant-stubs/components/awair/const.pyi +1 -0
- homeassistant-stubs/components/awair/sensor.pyi +2 -2
- homeassistant-stubs/components/backup/config.pyi +0 -14
- homeassistant-stubs/components/bayesian/__init__.pyi +6 -4
- homeassistant-stubs/components/bayesian/binary_sensor.pyi +6 -5
- homeassistant-stubs/components/bayesian/config_flow.pyi +69 -0
- homeassistant-stubs/components/bayesian/const.pyi +5 -0
- homeassistant-stubs/components/bayesian/issues.pyi +1 -1
- homeassistant-stubs/components/bosch_alarm/const.pyi +0 -1
- homeassistant-stubs/components/bosch_alarm/services.pyi +2 -1
- homeassistant-stubs/components/braviatv/button.pyi +1 -1
- homeassistant-stubs/components/braviatv/coordinator.pyi +1 -0
- homeassistant-stubs/components/braviatv/entity.pyi +1 -1
- homeassistant-stubs/components/climate/__init__.pyi +1 -1
- homeassistant-stubs/components/cloud/alexa_config.pyi +2 -1
- homeassistant-stubs/components/cloud/subscription.pyi +2 -4
- homeassistant-stubs/components/co2signal/coordinator.pyi +3 -3
- homeassistant-stubs/components/co2signal/helpers.pyi +2 -3
- homeassistant-stubs/components/co2signal/sensor.pyi +3 -3
- homeassistant-stubs/components/config/config_entries.pyi +6 -3
- homeassistant-stubs/components/demo/media_player.pyi +2 -0
- homeassistant-stubs/components/device_automation/condition.pyi +2 -2
- homeassistant-stubs/components/enphase_envoy/binary_sensor.pyi +29 -1
- homeassistant-stubs/components/enphase_envoy/sensor.pyi +30 -1
- homeassistant-stubs/components/esphome/manager.pyi +1 -2
- homeassistant-stubs/components/esphome/media_player.pyi +5 -0
- homeassistant-stubs/components/fan/intent.pyi +7 -0
- homeassistant-stubs/components/fritz/coordinator.pyi +0 -1
- homeassistant-stubs/components/fyta/const.pyi +4 -0
- homeassistant-stubs/components/fyta/sensor.pyi +11 -0
- homeassistant-stubs/components/glances/coordinator.pyi +0 -1
- homeassistant-stubs/components/group/config_flow.pyi +2 -0
- homeassistant-stubs/components/habitica/__init__.pyi +6 -2
- homeassistant-stubs/components/habitica/binary_sensor.pyi +13 -4
- homeassistant-stubs/components/habitica/coordinator.pyi +18 -4
- homeassistant-stubs/components/habitica/entity.pyi +10 -1
- homeassistant-stubs/components/habitica/image.pyi +19 -4
- homeassistant-stubs/components/habitica/sensor.pyi +27 -3
- homeassistant-stubs/components/habitica/util.pyi +5 -2
- homeassistant-stubs/components/home_connect/const.pyi +0 -7
- homeassistant-stubs/components/home_connect/services.pyi +1 -14
- homeassistant-stubs/components/homeassistant_hardware/coordinator.pyi +0 -1
- homeassistant-stubs/components/homee/config_flow.pyi +8 -2
- homeassistant-stubs/components/homee/const.pyi +3 -0
- homeassistant-stubs/components/homekit/accessories.pyi +1 -1
- homeassistant-stubs/components/homekit/const.pyi +4 -0
- homeassistant-stubs/components/homekit/type_switches.pyi +11 -1
- homeassistant-stubs/components/homekit/util.pyi +3 -2
- homeassistant-stubs/components/huawei_lte/__init__.pyi +2 -2
- homeassistant-stubs/components/huawei_lte/const.pyi +0 -1
- homeassistant-stubs/components/huawei_lte/notify.pyi +2 -2
- homeassistant-stubs/components/husqvarna_automower/button.pyi +4 -0
- homeassistant-stubs/components/husqvarna_automower/const.pyi +1 -0
- homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +10 -0
- homeassistant-stubs/components/husqvarna_automower/event.pyi +35 -0
- homeassistant-stubs/components/husqvarna_automower/sensor.pyi +1 -2
- homeassistant-stubs/components/idasen_desk/__init__.pyi +0 -1
- homeassistant-stubs/components/jewish_calendar/__init__.pyi +2 -1
- homeassistant-stubs/components/jewish_calendar/coordinator.pyi +41 -0
- homeassistant-stubs/components/jewish_calendar/entity.pyi +5 -26
- homeassistant-stubs/components/jewish_calendar/sensor.pyi +1 -1
- homeassistant-stubs/components/knx/scene.pyi +5 -4
- homeassistant-stubs/components/knx/storage/entity_store_schema.pyi +5 -11
- homeassistant-stubs/components/knx/storage/knx_selector.pyi +57 -6
- homeassistant-stubs/components/knx/storage/serialize.pyi +10 -0
- homeassistant-stubs/components/knx/storage/util.pyi +2 -0
- homeassistant-stubs/components/knx/websocket.pyi +7 -3
- homeassistant-stubs/components/letpot/select.pyi +39 -0
- homeassistant-stubs/components/mastodon/__init__.pyi +1 -2
- homeassistant-stubs/components/mastodon/config_flow.pyi +2 -2
- homeassistant-stubs/components/mastodon/const.pyi +0 -1
- homeassistant-stubs/components/mastodon/diagnostics.pyi +2 -2
- homeassistant-stubs/components/mastodon/services.pyi +2 -1
- homeassistant-stubs/components/matter/lock.pyi +6 -0
- homeassistant-stubs/components/matter/sensor.pyi +2 -1
- homeassistant-stubs/components/mealie/const.pyi +0 -1
- homeassistant-stubs/components/mealie/services.pyi +2 -2
- homeassistant-stubs/components/media_player/__init__.pyi +4 -0
- homeassistant-stubs/components/media_player/intent.pyi +13 -3
- homeassistant-stubs/components/met_eireann/const.pyi +1 -1
- homeassistant-stubs/components/met_eireann/weather.pyi +4 -0
- homeassistant-stubs/components/miele/const.pyi +1 -0
- homeassistant-stubs/components/miele/coordinator.pyi +2 -3
- homeassistant-stubs/components/miele/entity.pyi +2 -3
- homeassistant-stubs/components/miele/sensor.pyi +25 -6
- homeassistant-stubs/components/modbus/binary_sensor.pyi +1 -2
- homeassistant-stubs/components/modbus/climate.pyi +1 -2
- homeassistant-stubs/components/modbus/const.pyi +2 -0
- homeassistant-stubs/components/modbus/entity.pyi +8 -10
- homeassistant-stubs/components/modbus/light.pyi +0 -1
- homeassistant-stubs/components/modbus/modbus.pyi +9 -11
- homeassistant-stubs/components/modbus/sensor.pyi +1 -3
- homeassistant-stubs/components/mqtt/alarm_control_panel.pyi +2 -23
- homeassistant-stubs/components/mqtt/config_flow.pyi +8 -2
- homeassistant-stubs/components/mqtt/const.pyi +40 -1
- homeassistant-stubs/components/mqtt/lock.pyi +1 -21
- homeassistant-stubs/components/mqtt/number.pyi +1 -0
- homeassistant-stubs/components/mqtt/sensor.pyi +1 -1
- homeassistant-stubs/components/music_assistant/actions.pyi +2 -1
- homeassistant-stubs/components/music_assistant/const.pyi +0 -1
- homeassistant-stubs/components/number/__init__.pyi +3 -0
- homeassistant-stubs/components/number/const.pyi +2 -1
- homeassistant-stubs/components/open_router/entity.pyi +2 -2
- homeassistant-stubs/components/openai_conversation/entity.pyi +3 -3
- homeassistant-stubs/components/opower/__init__.pyi +1 -0
- homeassistant-stubs/components/opower/repairs.pyi +13 -0
- homeassistant-stubs/components/overseerr/const.pyi +0 -1
- homeassistant-stubs/components/overseerr/services.pyi +2 -1
- homeassistant-stubs/components/person/__init__.pyi +2 -1
- homeassistant-stubs/components/qbus/binary_sensor.pyi +43 -0
- homeassistant-stubs/components/qbus/climate.pyi +1 -1
- homeassistant-stubs/components/qbus/coordinator.pyi +4 -3
- homeassistant-stubs/components/qbus/cover.pyi +1 -1
- homeassistant-stubs/components/qbus/entity.pyi +6 -5
- homeassistant-stubs/components/qbus/light.pyi +1 -1
- homeassistant-stubs/components/qbus/scene.pyi +4 -6
- homeassistant-stubs/components/qbus/sensor.pyi +67 -0
- homeassistant-stubs/components/qbus/switch.pyi +1 -1
- homeassistant-stubs/components/recorder/statistics.pyi +1 -1
- homeassistant-stubs/components/recorder/websocket_api.pyi +1 -1
- homeassistant-stubs/components/rest_command/__init__.pyi +1 -1
- homeassistant-stubs/components/romy/coordinator.pyi +0 -1
- homeassistant-stubs/components/russound_rio/media_browser.pyi +8 -0
- homeassistant-stubs/components/russound_rio/media_player.pyi +3 -2
- homeassistant-stubs/components/ruuvitag_ble/sensor.pyi +2 -2
- homeassistant-stubs/components/scene/__init__.pyi +13 -4
- homeassistant-stubs/components/sensibo/select.pyi +0 -5
- homeassistant-stubs/components/sensor/__init__.pyi +3 -0
- homeassistant-stubs/components/sensor/const.pyi +3 -2
- homeassistant-stubs/components/sensor/recorder.pyi +1 -1
- homeassistant-stubs/components/sleep_as_android/__init__.pyi +16 -0
- homeassistant-stubs/components/sleep_as_android/config_flow.pyi +2 -0
- homeassistant-stubs/components/sleep_as_android/const.pyi +9 -0
- homeassistant-stubs/components/sleep_as_android/diagnostics.pyi +5 -0
- homeassistant-stubs/components/sleep_as_android/entity.pyi +20 -0
- homeassistant-stubs/components/sleep_as_android/event.pyi +33 -0
- homeassistant-stubs/components/sleep_as_android/sensor.pyi +25 -0
- homeassistant-stubs/components/solarlog/sensor.pyi +11 -1
- homeassistant-stubs/components/speedtestdotnet/coordinator.pyi +0 -1
- homeassistant-stubs/components/stookwijzer/const.pyi +0 -1
- homeassistant-stubs/components/stookwijzer/services.pyi +2 -1
- homeassistant-stubs/components/sun/condition.pyi +2 -2
- homeassistant-stubs/components/switchbot_cloud/__init__.pyi +1 -0
- homeassistant-stubs/components/switchbot_cloud/const.pyi +10 -0
- homeassistant-stubs/components/switchbot_cloud/cover.pyi +57 -0
- homeassistant-stubs/components/switchbot_cloud/fan.pyi +22 -1
- homeassistant-stubs/components/telegram_bot/__init__.pyi +2 -1
- homeassistant-stubs/components/telegram_bot/bot.pyi +4 -1
- homeassistant-stubs/components/telegram_bot/notify.pyi +21 -0
- homeassistant-stubs/components/unifi/switch.pyi +3 -0
- homeassistant-stubs/components/volvo/__init__.pyi +1 -1
- homeassistant-stubs/components/volvo/binary_sensor.pyi +42 -0
- homeassistant-stubs/components/volvo/const.pyi +1 -1
- homeassistant-stubs/components/volvo/coordinator.pyi +5 -0
- homeassistant-stubs/components/volvo/sensor.pyi +2 -2
- homeassistant-stubs/components/webostv/__init__.pyi +2 -2
- homeassistant-stubs/components/webostv/const.pyi +0 -1
- homeassistant-stubs/components/webostv/notify.pyi +2 -2
- homeassistant-stubs/components/wemo/coordinator.pyi +0 -1
- homeassistant-stubs/components/workday/__init__.pyi +6 -8
- homeassistant-stubs/components/workday/binary_sensor.pyi +9 -33
- homeassistant-stubs/components/workday/entity.pyi +34 -0
- homeassistant-stubs/components/workday/util.pyi +14 -0
- homeassistant-stubs/components/zone/condition.pyi +2 -2
- homeassistant-stubs/components/zwave_js/__init__.pyi +5 -5
- homeassistant-stubs/components/zwave_js/binary_sensor.pyi +18 -10
- homeassistant-stubs/components/zwave_js/const.pyi +0 -1
- homeassistant-stubs/components/zwave_js/discovery.pyi +7 -51
- homeassistant-stubs/components/zwave_js/discovery_data_template.pyi +1 -11
- homeassistant-stubs/components/zwave_js/entity.pyi +15 -5
- homeassistant-stubs/components/zwave_js/helpers.pyi +0 -7
- homeassistant-stubs/components/zwave_js/migrate.pyi +2 -2
- homeassistant-stubs/components/zwave_js/models.pyi +95 -1
- homeassistant-stubs/components/zwave_js/triggers/event.pyi +5 -4
- homeassistant-stubs/components/zwave_js/triggers/trigger_helpers.pyi +2 -2
- homeassistant-stubs/components/zwave_js/triggers/value_updated.pyi +3 -2
- homeassistant-stubs/components/zwave_js/update.pyi +0 -3
- homeassistant-stubs/config_entries.pyi +5 -0
- homeassistant-stubs/const.pyi +9 -5
- homeassistant-stubs/data_entry_flow.pyi +0 -1
- homeassistant-stubs/helpers/automation.pyi +2 -0
- homeassistant-stubs/helpers/condition.pyi +6 -6
- homeassistant-stubs/helpers/config_validation.pyi +3 -0
- homeassistant-stubs/helpers/data_entry_flow.pyi +1 -1
- homeassistant-stubs/helpers/device_registry.pyi +4 -3
- homeassistant-stubs/helpers/entity_registry.pyi +6 -4
- homeassistant-stubs/helpers/json.pyi +0 -7
- homeassistant-stubs/helpers/llm.pyi +1 -0
- homeassistant-stubs/helpers/schema_config_entry_flow.pyi +2 -1
- homeassistant-stubs/helpers/selector.pyi +2 -1
- homeassistant-stubs/helpers/target.pyi +3 -2
- homeassistant-stubs/helpers/trigger.pyi +6 -6
- homeassistant-stubs/util/unit_conversion.pyi +11 -1
- {homeassistant_stubs-2025.8.3.dist-info → homeassistant_stubs-2025.9.0b1.dist-info}/METADATA +2 -2
- {homeassistant_stubs-2025.8.3.dist-info → homeassistant_stubs-2025.9.0b1.dist-info}/RECORD +225 -200
- homeassistant-stubs/components/linear_garage_door/__init__.pyi +0 -10
- homeassistant-stubs/components/linear_garage_door/config_flow.pyi +0 -25
- homeassistant-stubs/components/linear_garage_door/const.pyi +0 -1
- homeassistant-stubs/components/linear_garage_door/coordinator.pyi +0 -26
- homeassistant-stubs/components/linear_garage_door/cover.pyi +0 -28
- homeassistant-stubs/components/linear_garage_door/diagnostics.pyi +0 -10
- homeassistant-stubs/components/linear_garage_door/entity.pyi +0 -17
- homeassistant-stubs/components/linear_garage_door/light.pyi +0 -23
- homeassistant-stubs/components/mastodon/notify.pyi +0 -24
- {homeassistant_stubs-2025.8.3.dist-info → homeassistant_stubs-2025.9.0b1.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2025.8.3.dist-info → homeassistant_stubs-2025.9.0b1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,62 +1,18 @@
|
|
|
1
1
|
from .const import COVER_POSITION_PROPERTY_KEYS as COVER_POSITION_PROPERTY_KEYS, COVER_TILT_PROPERTY_KEYS as COVER_TILT_PROPERTY_KEYS, LOGGER as LOGGER
|
|
2
2
|
from .discovery_data_template import BaseDiscoverySchemaDataTemplate as BaseDiscoverySchemaDataTemplate, ConfigurableFanValueMappingDataTemplate as ConfigurableFanValueMappingDataTemplate, CoverTiltDataTemplate as CoverTiltDataTemplate, DynamicCurrentTempClimateDataTemplate as DynamicCurrentTempClimateDataTemplate, FanValueMapping as FanValueMapping, FixedFanValueMappingDataTemplate as FixedFanValueMappingDataTemplate, NumericSensorDataTemplate as NumericSensorDataTemplate
|
|
3
|
-
from .
|
|
3
|
+
from .entity import NewZwaveDiscoveryInfo as NewZwaveDiscoveryInfo
|
|
4
|
+
from .models import FirmwareVersionRange as FirmwareVersionRange, NewZWaveDiscoverySchema as NewZWaveDiscoverySchema, ValueType as ValueType, ZWaveValueDiscoverySchema as ZWaveValueDiscoverySchema, ZwaveDiscoveryInfo as ZwaveDiscoveryInfo, ZwaveValueID as ZwaveValueID
|
|
4
5
|
from _typeshed import Incomplete
|
|
5
|
-
from awesomeversion import AwesomeVersion
|
|
6
6
|
from collections.abc import Generator
|
|
7
|
-
from dataclasses import dataclass
|
|
8
|
-
from enum import StrEnum
|
|
7
|
+
from dataclasses import dataclass
|
|
9
8
|
from homeassistant.const import EntityCategory as EntityCategory, Platform as Platform
|
|
10
9
|
from homeassistant.core import callback as callback
|
|
11
10
|
from homeassistant.helpers.device_registry import DeviceEntry as DeviceEntry
|
|
12
|
-
from typing import Any
|
|
13
11
|
from zwave_js_server.model.node import Node as ZwaveNode
|
|
14
12
|
from zwave_js_server.model.value import ConfigurationValue, Value as ZwaveValue
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
BOOLEAN = 'boolean'
|
|
19
|
-
NUMBER = 'number'
|
|
20
|
-
STRING = 'string'
|
|
21
|
-
|
|
22
|
-
class DataclassMustHaveAtLeastOne:
|
|
23
|
-
def __post_init__(self) -> None: ...
|
|
24
|
-
|
|
25
|
-
@dataclass
|
|
26
|
-
class FirmwareVersionRange(DataclassMustHaveAtLeastOne):
|
|
27
|
-
min: str | None = ...
|
|
28
|
-
max: str | None = ...
|
|
29
|
-
min_ver: AwesomeVersion | None = field(default=None, init=False)
|
|
30
|
-
max_ver: AwesomeVersion | None = field(default=None, init=False)
|
|
31
|
-
def __post_init__(self) -> None: ...
|
|
32
|
-
|
|
33
|
-
@dataclass
|
|
34
|
-
class ZwaveDiscoveryInfo:
|
|
35
|
-
node: ZwaveNode
|
|
36
|
-
primary_value: ZwaveValue
|
|
37
|
-
assumed_state: bool
|
|
38
|
-
platform: Platform
|
|
39
|
-
platform_data: Any
|
|
40
|
-
additional_value_ids_to_watch: set[str]
|
|
41
|
-
platform_hint: str | None = ...
|
|
42
|
-
platform_data_template: BaseDiscoverySchemaDataTemplate | None = ...
|
|
43
|
-
entity_registry_enabled_default: bool = ...
|
|
44
|
-
entity_category: EntityCategory | None = ...
|
|
45
|
-
|
|
46
|
-
@dataclass
|
|
47
|
-
class ZWaveValueDiscoverySchema(DataclassMustHaveAtLeastOne):
|
|
48
|
-
command_class: set[int] | None = ...
|
|
49
|
-
endpoint: set[int] | None = ...
|
|
50
|
-
property: set[str | int] | None = ...
|
|
51
|
-
property_name: set[str] | None = ...
|
|
52
|
-
property_key: set[str | int | None] | None = ...
|
|
53
|
-
not_property_key: set[str | int | None] | None = ...
|
|
54
|
-
type: set[str] | None = ...
|
|
55
|
-
readable: bool | None = ...
|
|
56
|
-
writeable: bool | None = ...
|
|
57
|
-
any_available_states: set[tuple[int, str]] | None = ...
|
|
58
|
-
value: Any | None = ...
|
|
59
|
-
stateful: bool | None = ...
|
|
14
|
+
NEW_DISCOVERY_SCHEMAS: dict[Platform, list[NewZWaveDiscoverySchema]]
|
|
15
|
+
SUPPORTED_PLATFORMS: Incomplete
|
|
60
16
|
|
|
61
17
|
@dataclass
|
|
62
18
|
class ZWaveDiscoverySchema:
|
|
@@ -88,9 +44,9 @@ WINDOW_COVERING_SLAT_CURRENT_VALUE_SCHEMA: Incomplete
|
|
|
88
44
|
DISCOVERY_SCHEMAS: Incomplete
|
|
89
45
|
|
|
90
46
|
@callback
|
|
91
|
-
def async_discover_node_values(node: ZwaveNode, device: DeviceEntry, discovered_value_ids: dict[str, set[str]]) -> Generator[ZwaveDiscoveryInfo]: ...
|
|
47
|
+
def async_discover_node_values(node: ZwaveNode, device: DeviceEntry, discovered_value_ids: dict[str, set[str]]) -> Generator[ZwaveDiscoveryInfo | NewZwaveDiscoveryInfo]: ...
|
|
92
48
|
@callback
|
|
93
|
-
def async_discover_single_value(value: ZwaveValue, device: DeviceEntry, discovered_value_ids: dict[str, set[str]]) -> Generator[ZwaveDiscoveryInfo]: ...
|
|
49
|
+
def async_discover_single_value(value: ZwaveValue, device: DeviceEntry, discovered_value_ids: dict[str, set[str]]) -> Generator[ZwaveDiscoveryInfo | NewZwaveDiscoveryInfo]: ...
|
|
94
50
|
@callback
|
|
95
51
|
def async_discover_single_configuration_value(value: ConfigurationValue) -> Generator[ZwaveDiscoveryInfo]: ...
|
|
96
52
|
@callback
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from .const import ENTITY_DESC_KEY_BATTERY_LEVEL as ENTITY_DESC_KEY_BATTERY_LEVEL, ENTITY_DESC_KEY_BATTERY_LIST_STATE as ENTITY_DESC_KEY_BATTERY_LIST_STATE, ENTITY_DESC_KEY_BATTERY_MAXIMUM_CAPACITY as ENTITY_DESC_KEY_BATTERY_MAXIMUM_CAPACITY, ENTITY_DESC_KEY_BATTERY_TEMPERATURE as ENTITY_DESC_KEY_BATTERY_TEMPERATURE, ENTITY_DESC_KEY_CO as ENTITY_DESC_KEY_CO, ENTITY_DESC_KEY_CO2 as ENTITY_DESC_KEY_CO2, ENTITY_DESC_KEY_CURRENT as ENTITY_DESC_KEY_CURRENT, ENTITY_DESC_KEY_ENERGY_MEASUREMENT as ENTITY_DESC_KEY_ENERGY_MEASUREMENT, ENTITY_DESC_KEY_ENERGY_PRODUCTION_POWER as ENTITY_DESC_KEY_ENERGY_PRODUCTION_POWER, ENTITY_DESC_KEY_ENERGY_PRODUCTION_TIME as ENTITY_DESC_KEY_ENERGY_PRODUCTION_TIME, ENTITY_DESC_KEY_ENERGY_PRODUCTION_TODAY as ENTITY_DESC_KEY_ENERGY_PRODUCTION_TODAY, ENTITY_DESC_KEY_ENERGY_PRODUCTION_TOTAL as ENTITY_DESC_KEY_ENERGY_PRODUCTION_TOTAL, ENTITY_DESC_KEY_ENERGY_TOTAL_INCREASING as ENTITY_DESC_KEY_ENERGY_TOTAL_INCREASING, ENTITY_DESC_KEY_HUMIDITY as ENTITY_DESC_KEY_HUMIDITY, ENTITY_DESC_KEY_ILLUMINANCE as ENTITY_DESC_KEY_ILLUMINANCE, ENTITY_DESC_KEY_MEASUREMENT as ENTITY_DESC_KEY_MEASUREMENT, ENTITY_DESC_KEY_POWER as ENTITY_DESC_KEY_POWER, ENTITY_DESC_KEY_POWER_FACTOR as ENTITY_DESC_KEY_POWER_FACTOR, ENTITY_DESC_KEY_PRESSURE as ENTITY_DESC_KEY_PRESSURE, ENTITY_DESC_KEY_SIGNAL_STRENGTH as ENTITY_DESC_KEY_SIGNAL_STRENGTH, ENTITY_DESC_KEY_TARGET_TEMPERATURE as ENTITY_DESC_KEY_TARGET_TEMPERATURE, ENTITY_DESC_KEY_TEMPERATURE as ENTITY_DESC_KEY_TEMPERATURE, ENTITY_DESC_KEY_TOTAL_INCREASING as ENTITY_DESC_KEY_TOTAL_INCREASING, ENTITY_DESC_KEY_UV_INDEX as ENTITY_DESC_KEY_UV_INDEX, ENTITY_DESC_KEY_VOLTAGE as ENTITY_DESC_KEY_VOLTAGE
|
|
2
|
-
from .
|
|
2
|
+
from .models import BaseDiscoverySchemaDataTemplate as BaseDiscoverySchemaDataTemplate, ZwaveValueID as ZwaveValueID
|
|
3
3
|
from _typeshed import Incomplete
|
|
4
4
|
from collections.abc import Iterable, Mapping
|
|
5
5
|
from dataclasses import dataclass, field
|
|
@@ -9,7 +9,6 @@ from typing import Any
|
|
|
9
9
|
from zwave_js_server.const.command_class.energy_production import EnergyProductionParameter, EnergyProductionScaleType as EnergyProductionScaleType
|
|
10
10
|
from zwave_js_server.const.command_class.meter import MeterScaleType as MeterScaleType
|
|
11
11
|
from zwave_js_server.const.command_class.multilevel_sensor import MultilevelSensorScaleType as MultilevelSensorScaleType, MultilevelSensorType
|
|
12
|
-
from zwave_js_server.model.node import Node as ZwaveNode
|
|
13
12
|
from zwave_js_server.model.value import ConfigurationValue as ZwaveConfigurationValue, Value as ZwaveValue
|
|
14
13
|
|
|
15
14
|
ENERGY_PRODUCTION_DEVICE_CLASS_MAP: dict[str, list[EnergyProductionParameter]]
|
|
@@ -20,15 +19,6 @@ METER_UNIT_MAP: dict[str, list[MeterScaleType]]
|
|
|
20
19
|
MULTILEVEL_SENSOR_UNIT_MAP: dict[str, list[MultilevelSensorScaleType]]
|
|
21
20
|
_LOGGER: Incomplete
|
|
22
21
|
|
|
23
|
-
@dataclass
|
|
24
|
-
class BaseDiscoverySchemaDataTemplate:
|
|
25
|
-
static_data: Any | None = ...
|
|
26
|
-
def resolve_data(self, value: ZwaveValue) -> Any: ...
|
|
27
|
-
def values_to_watch(self, resolved_data: Any) -> Iterable[ZwaveValue | None]: ...
|
|
28
|
-
def value_ids_to_watch(self, resolved_data: Any) -> set[str]: ...
|
|
29
|
-
@staticmethod
|
|
30
|
-
def _get_value_from_id(node: ZwaveNode, value_id_obj: ZwaveValueID) -> ZwaveValue | ZwaveConfigurationValue | None: ...
|
|
31
|
-
|
|
32
22
|
@dataclass
|
|
33
23
|
class DynamicCurrentTempClimateDataTemplate(BaseDiscoverySchemaDataTemplate):
|
|
34
24
|
lookup_table: dict[str | int, ZwaveValueID] = field(default_factory=dict)
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
from .const import DOMAIN as DOMAIN, EVENT_VALUE_UPDATED as EVENT_VALUE_UPDATED, LOGGER as LOGGER
|
|
2
|
-
from .
|
|
2
|
+
from .discovery_data_template import BaseDiscoverySchemaDataTemplate as BaseDiscoverySchemaDataTemplate
|
|
3
3
|
from .helpers import get_device_id as get_device_id, get_unique_id as get_unique_id, get_valueless_base_unique_id as get_valueless_base_unique_id
|
|
4
|
+
from .models import PlatformZwaveDiscoveryInfo as PlatformZwaveDiscoveryInfo, ZwaveDiscoveryInfo as ZwaveDiscoveryInfo
|
|
4
5
|
from _typeshed import Incomplete
|
|
5
6
|
from collections.abc import Sequence
|
|
7
|
+
from dataclasses import dataclass
|
|
6
8
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
7
9
|
from homeassistant.core import callback as callback
|
|
8
10
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
|
9
11
|
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
|
10
12
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
|
|
11
|
-
from homeassistant.helpers.entity import Entity as Entity
|
|
13
|
+
from homeassistant.helpers.entity import Entity as Entity, EntityDescription as EntityDescription
|
|
12
14
|
from homeassistant.helpers.typing import UNDEFINED as UNDEFINED
|
|
13
15
|
from typing import Any
|
|
14
16
|
from zwave_js_server.model.driver import Driver as Driver
|
|
@@ -16,6 +18,13 @@ from zwave_js_server.model.value import SetValueResult as SetValueResult, Value
|
|
|
16
18
|
|
|
17
19
|
EVENT_VALUE_REMOVED: str
|
|
18
20
|
|
|
21
|
+
@dataclass(kw_only=True)
|
|
22
|
+
class NewZwaveDiscoveryInfo(PlatformZwaveDiscoveryInfo):
|
|
23
|
+
entity_class: type[ZWaveBaseEntity]
|
|
24
|
+
entity_description: EntityDescription
|
|
25
|
+
platform_data: Any = ...
|
|
26
|
+
platform_data_template: BaseDiscoverySchemaDataTemplate | None = ...
|
|
27
|
+
|
|
19
28
|
class ZWaveBaseEntity(Entity):
|
|
20
29
|
_attr_should_poll: bool
|
|
21
30
|
_attr_has_entity_name: bool
|
|
@@ -25,11 +34,12 @@ class ZWaveBaseEntity(Entity):
|
|
|
25
34
|
watched_value_ids: Incomplete
|
|
26
35
|
_attr_name: Incomplete
|
|
27
36
|
_attr_unique_id: Incomplete
|
|
28
|
-
|
|
37
|
+
entity_description: Incomplete
|
|
38
|
+
_attr_entity_registry_enabled_default: Incomplete
|
|
29
39
|
_attr_entity_category: Incomplete
|
|
30
|
-
_attr_assumed_state:
|
|
40
|
+
_attr_assumed_state: Incomplete
|
|
31
41
|
_attr_device_info: Incomplete
|
|
32
|
-
def __init__(self, config_entry: ConfigEntry, driver: Driver, info: ZwaveDiscoveryInfo) -> None: ...
|
|
42
|
+
def __init__(self, config_entry: ConfigEntry, driver: Driver, info: ZwaveDiscoveryInfo | NewZwaveDiscoveryInfo) -> None: ...
|
|
33
43
|
@callback
|
|
34
44
|
def on_value_update(self) -> None: ...
|
|
35
45
|
async def _async_poll_value(self, value_or_id: str | ZwaveValue) -> None: ...
|
|
@@ -23,13 +23,6 @@ from zwave_js_server.version import VersionInfo as VersionInfo
|
|
|
23
23
|
DRIVER_READY_EVENT_TIMEOUT: int
|
|
24
24
|
SERVER_VERSION_TIMEOUT: int
|
|
25
25
|
|
|
26
|
-
@dataclass
|
|
27
|
-
class ZwaveValueID:
|
|
28
|
-
property_: str | int
|
|
29
|
-
command_class: int
|
|
30
|
-
endpoint: int | None = ...
|
|
31
|
-
property_key: str | int | None = ...
|
|
32
|
-
|
|
33
26
|
@dataclass
|
|
34
27
|
class ZwaveValueMatcher:
|
|
35
28
|
property_: str | int | None = ...
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from .const import DOMAIN as DOMAIN
|
|
2
|
-
from .discovery import ZwaveDiscoveryInfo as ZwaveDiscoveryInfo
|
|
3
2
|
from .helpers import get_unique_id as get_unique_id, get_valueless_base_unique_id as get_valueless_base_unique_id
|
|
3
|
+
from .models import PlatformZwaveDiscoveryInfo as PlatformZwaveDiscoveryInfo
|
|
4
4
|
from _typeshed import Incomplete
|
|
5
5
|
from dataclasses import dataclass
|
|
6
6
|
from homeassistant.const import Platform as Platform, STATE_UNAVAILABLE as STATE_UNAVAILABLE
|
|
@@ -29,7 +29,7 @@ def async_migrate_old_entity(hass: HomeAssistant, ent_reg: er.EntityRegistry, re
|
|
|
29
29
|
@callback
|
|
30
30
|
def async_migrate_unique_id(ent_reg: er.EntityRegistry, platform: Platform, old_unique_id: str, new_unique_id: str) -> None: ...
|
|
31
31
|
@callback
|
|
32
|
-
def async_migrate_discovered_value(hass: HomeAssistant, ent_reg: er.EntityRegistry, registered_unique_ids: set[str], device: dr.DeviceEntry, driver: Driver, disc_info:
|
|
32
|
+
def async_migrate_discovered_value(hass: HomeAssistant, ent_reg: er.EntityRegistry, registered_unique_ids: set[str], device: dr.DeviceEntry, driver: Driver, disc_info: PlatformZwaveDiscoveryInfo) -> None: ...
|
|
33
33
|
@callback
|
|
34
34
|
def async_migrate_statistics_sensors(hass: HomeAssistant, driver: Driver, node: Node, key_map: dict[str, str]) -> None: ...
|
|
35
35
|
@callback
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
from . import DriverEvents as DriverEvents
|
|
2
|
-
from
|
|
2
|
+
from awesomeversion import AwesomeVersion
|
|
3
|
+
from collections.abc import Iterable
|
|
4
|
+
from dataclasses import dataclass, field
|
|
5
|
+
from enum import StrEnum
|
|
3
6
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
7
|
+
from homeassistant.const import EntityCategory as EntityCategory, Platform as Platform
|
|
8
|
+
from homeassistant.helpers.entity import EntityDescription as EntityDescription
|
|
9
|
+
from typing import Any
|
|
4
10
|
from zwave_js_server.client import Client as ZwaveClient
|
|
5
11
|
from zwave_js_server.const import LogLevel as LogLevel
|
|
12
|
+
from zwave_js_server.model.node import Node as ZwaveNode
|
|
13
|
+
from zwave_js_server.model.value import ConfigurationValue as ZwaveConfigurationValue, Value as ZwaveValue
|
|
6
14
|
|
|
7
15
|
@dataclass
|
|
8
16
|
class ZwaveJSData:
|
|
@@ -10,3 +18,89 @@ class ZwaveJSData:
|
|
|
10
18
|
driver_events: DriverEvents
|
|
11
19
|
old_server_log_level: LogLevel | None = ...
|
|
12
20
|
type ZwaveJSConfigEntry = ConfigEntry[ZwaveJSData]
|
|
21
|
+
|
|
22
|
+
@dataclass
|
|
23
|
+
class ZwaveValueID:
|
|
24
|
+
property_: str | int
|
|
25
|
+
command_class: int
|
|
26
|
+
endpoint: int | None = ...
|
|
27
|
+
property_key: str | int | None = ...
|
|
28
|
+
|
|
29
|
+
class ValueType(StrEnum):
|
|
30
|
+
ANY = 'any'
|
|
31
|
+
BOOLEAN = 'boolean'
|
|
32
|
+
NUMBER = 'number'
|
|
33
|
+
STRING = 'string'
|
|
34
|
+
|
|
35
|
+
class DataclassMustHaveAtLeastOne:
|
|
36
|
+
def __post_init__(self) -> None: ...
|
|
37
|
+
|
|
38
|
+
@dataclass
|
|
39
|
+
class FirmwareVersionRange(DataclassMustHaveAtLeastOne):
|
|
40
|
+
min: str | None = ...
|
|
41
|
+
max: str | None = ...
|
|
42
|
+
min_ver: AwesomeVersion | None = field(default=None, init=False)
|
|
43
|
+
max_ver: AwesomeVersion | None = field(default=None, init=False)
|
|
44
|
+
def __post_init__(self) -> None: ...
|
|
45
|
+
|
|
46
|
+
@dataclass
|
|
47
|
+
class PlatformZwaveDiscoveryInfo:
|
|
48
|
+
node: ZwaveNode
|
|
49
|
+
primary_value: ZwaveValue
|
|
50
|
+
assumed_state: bool
|
|
51
|
+
platform: Platform
|
|
52
|
+
additional_value_ids_to_watch: set[str]
|
|
53
|
+
|
|
54
|
+
@dataclass
|
|
55
|
+
class ZwaveDiscoveryInfo(PlatformZwaveDiscoveryInfo):
|
|
56
|
+
platform_data: Any = ...
|
|
57
|
+
platform_data_template: BaseDiscoverySchemaDataTemplate | None = ...
|
|
58
|
+
platform_hint: str | None = ...
|
|
59
|
+
entity_registry_enabled_default: bool = ...
|
|
60
|
+
entity_category: EntityCategory | None = ...
|
|
61
|
+
|
|
62
|
+
@dataclass
|
|
63
|
+
class ZWaveValueDiscoverySchema(DataclassMustHaveAtLeastOne):
|
|
64
|
+
command_class: set[int] | None = ...
|
|
65
|
+
endpoint: set[int] | None = ...
|
|
66
|
+
property: set[str | int] | None = ...
|
|
67
|
+
property_name: set[str] | None = ...
|
|
68
|
+
property_key: set[str | int | None] | None = ...
|
|
69
|
+
not_property_key: set[str | int | None] | None = ...
|
|
70
|
+
type: set[str] | None = ...
|
|
71
|
+
readable: bool | None = ...
|
|
72
|
+
writeable: bool | None = ...
|
|
73
|
+
any_available_states: set[tuple[int, str]] | None = ...
|
|
74
|
+
any_available_states_keys: set[int] | None = ...
|
|
75
|
+
any_available_cc_specific: set[tuple[Any, Any]] | None = ...
|
|
76
|
+
value: Any | None = ...
|
|
77
|
+
stateful: bool | None = ...
|
|
78
|
+
|
|
79
|
+
@dataclass
|
|
80
|
+
class NewZWaveDiscoverySchema:
|
|
81
|
+
platform: Platform
|
|
82
|
+
entity_description: EntityDescription
|
|
83
|
+
entity_class: type
|
|
84
|
+
primary_value: ZWaveValueDiscoverySchema
|
|
85
|
+
data_template: BaseDiscoverySchemaDataTemplate | None = ...
|
|
86
|
+
manufacturer_id: set[int] | None = ...
|
|
87
|
+
product_id: set[int] | None = ...
|
|
88
|
+
product_type: set[int] | None = ...
|
|
89
|
+
firmware_version_range: FirmwareVersionRange | None = ...
|
|
90
|
+
firmware_version: set[str] | None = ...
|
|
91
|
+
device_class_basic: set[str | int] | None = ...
|
|
92
|
+
device_class_generic: set[str | int] | None = ...
|
|
93
|
+
device_class_specific: set[str | int] | None = ...
|
|
94
|
+
required_values: list[ZWaveValueDiscoverySchema] | None = ...
|
|
95
|
+
absent_values: list[ZWaveValueDiscoverySchema] | None = ...
|
|
96
|
+
allow_multi: bool = ...
|
|
97
|
+
assumed_state: bool = ...
|
|
98
|
+
|
|
99
|
+
@dataclass
|
|
100
|
+
class BaseDiscoverySchemaDataTemplate:
|
|
101
|
+
static_data: Any | None = ...
|
|
102
|
+
def resolve_data(self, value: ZwaveValue) -> Any: ...
|
|
103
|
+
def values_to_watch(self, resolved_data: Any) -> Iterable[ZwaveValue | None]: ...
|
|
104
|
+
def value_ids_to_watch(self, resolved_data: Any) -> set[str]: ...
|
|
105
|
+
@staticmethod
|
|
106
|
+
def _get_value_from_id(node: ZwaveNode, value_id_obj: ZwaveValueID) -> ZwaveValue | ZwaveConfigurationValue | None: ...
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
from ..const import
|
|
1
|
+
from ..const import ATTR_EVENT as ATTR_EVENT, ATTR_EVENT_DATA as ATTR_EVENT_DATA, ATTR_EVENT_SOURCE as ATTR_EVENT_SOURCE, ATTR_NODE_ID as ATTR_NODE_ID, ATTR_PARTIAL_DICT_MATCH as ATTR_PARTIAL_DICT_MATCH, DOMAIN as DOMAIN
|
|
2
2
|
from ..helpers import async_get_nodes_from_targets as async_get_nodes_from_targets, get_device_id as get_device_id, get_home_and_node_id_from_device_entry as get_home_and_node_id_from_device_entry
|
|
3
3
|
from .trigger_helpers import async_bypass_dynamic_config_validation as async_bypass_dynamic_config_validation
|
|
4
4
|
from _typeshed import Incomplete
|
|
5
5
|
from collections.abc import Callable as Callable
|
|
6
|
-
from homeassistant.const import ATTR_DEVICE_ID as ATTR_DEVICE_ID, ATTR_ENTITY_ID as ATTR_ENTITY_ID, CONF_PLATFORM as CONF_PLATFORM
|
|
6
|
+
from homeassistant.const import ATTR_CONFIG_ENTRY_ID as ATTR_CONFIG_ENTRY_ID, ATTR_DEVICE_ID as ATTR_DEVICE_ID, ATTR_ENTITY_ID as ATTR_ENTITY_ID, CONF_PLATFORM as CONF_PLATFORM
|
|
7
7
|
from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, HassJob as HassJob, HomeAssistant as HomeAssistant, callback as callback
|
|
8
8
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
|
|
9
9
|
from homeassistant.helpers.trigger import Trigger as Trigger, TriggerActionType as TriggerActionType, TriggerInfo as TriggerInfo
|
|
10
10
|
from homeassistant.helpers.typing import ConfigType as ConfigType
|
|
11
11
|
from zwave_js_server.model.driver import Driver as Driver
|
|
12
12
|
|
|
13
|
+
RELATIVE_PLATFORM_TYPE: Incomplete
|
|
13
14
|
PLATFORM_TYPE: Incomplete
|
|
14
15
|
|
|
15
16
|
def validate_non_node_event_source(obj: dict) -> dict: ...
|
|
@@ -26,5 +27,5 @@ class EventTrigger(Trigger):
|
|
|
26
27
|
_hass: Incomplete
|
|
27
28
|
def __init__(self, hass: HomeAssistant, config: ConfigType) -> None: ...
|
|
28
29
|
@classmethod
|
|
29
|
-
async def
|
|
30
|
-
async def
|
|
30
|
+
async def async_validate_config(cls, hass: HomeAssistant, config: ConfigType) -> ConfigType: ...
|
|
31
|
+
async def async_attach(self, action: TriggerActionType, trigger_info: TriggerInfo) -> CALLBACK_TYPE: ...
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
from ..const import
|
|
1
|
+
from ..const import DOMAIN as DOMAIN
|
|
2
2
|
from homeassistant.config_entries import ConfigEntryState as ConfigEntryState
|
|
3
|
-
from homeassistant.const import ATTR_DEVICE_ID as ATTR_DEVICE_ID, ATTR_ENTITY_ID as ATTR_ENTITY_ID
|
|
3
|
+
from homeassistant.const import ATTR_CONFIG_ENTRY_ID as ATTR_CONFIG_ENTRY_ID, ATTR_DEVICE_ID as ATTR_DEVICE_ID, ATTR_ENTITY_ID as ATTR_ENTITY_ID
|
|
4
4
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
|
5
5
|
from homeassistant.helpers.typing import ConfigType as ConfigType
|
|
6
6
|
|
|
@@ -12,6 +12,7 @@ from homeassistant.helpers.typing import ConfigType as ConfigType
|
|
|
12
12
|
from zwave_js_server.model.driver import Driver as Driver
|
|
13
13
|
from zwave_js_server.model.value import Value as Value
|
|
14
14
|
|
|
15
|
+
RELATIVE_PLATFORM_TYPE: Incomplete
|
|
15
16
|
PLATFORM_TYPE: Incomplete
|
|
16
17
|
ATTR_FROM: str
|
|
17
18
|
ATTR_TO: str
|
|
@@ -25,5 +26,5 @@ class ValueUpdatedTrigger(Trigger):
|
|
|
25
26
|
_hass: Incomplete
|
|
26
27
|
def __init__(self, hass: HomeAssistant, config: ConfigType) -> None: ...
|
|
27
28
|
@classmethod
|
|
28
|
-
async def
|
|
29
|
-
async def
|
|
29
|
+
async def async_validate_config(cls, hass: HomeAssistant, config: ConfigType) -> ConfigType: ...
|
|
30
|
+
async def async_attach(self, action: TriggerActionType, trigger_info: TriggerInfo) -> CALLBACK_TYPE: ...
|
|
@@ -51,7 +51,6 @@ class ZWaveFirmwareUpdateEntity(UpdateEntity):
|
|
|
51
51
|
_attr_has_entity_name: bool
|
|
52
52
|
_attr_should_poll: bool
|
|
53
53
|
_latest_version_firmware: FirmwareUpdateInfo | None
|
|
54
|
-
_status_unsub: Callable[[], None] | None
|
|
55
54
|
_poll_unsub: Callable[[], None] | None
|
|
56
55
|
_progress_unsub: Callable[[], None] | None
|
|
57
56
|
_finished_unsub: Callable[[], None] | None
|
|
@@ -66,8 +65,6 @@ class ZWaveFirmwareUpdateEntity(UpdateEntity):
|
|
|
66
65
|
def __init__(self, driver: Driver, node: ZwaveNode, delay: timedelta, entity_description: ZWaveUpdateEntityDescription) -> None: ...
|
|
67
66
|
@property
|
|
68
67
|
def extra_restore_state_data(self) -> ZWaveFirmwareUpdateExtraStoredData: ...
|
|
69
|
-
@callback
|
|
70
|
-
def _update_on_status_change(self, _: dict[str, Any]) -> None: ...
|
|
71
68
|
_attr_in_progress: bool
|
|
72
69
|
_attr_update_percentage: Incomplete
|
|
73
70
|
@callback
|
|
@@ -129,6 +129,7 @@ class ConfigFlowContext(FlowContext, total=False):
|
|
|
129
129
|
class ConfigFlowResult(FlowResult[ConfigFlowContext, str], total=False):
|
|
130
130
|
minor_version: int
|
|
131
131
|
options: Mapping[str, Any]
|
|
132
|
+
result: ConfigEntry
|
|
132
133
|
subentries: Iterable[ConfigSubentryData]
|
|
133
134
|
version: int
|
|
134
135
|
|
|
@@ -444,7 +445,11 @@ class ConfigSubentryFlow(data_entry_flow.FlowHandler[SubentryFlowContext, Subent
|
|
|
444
445
|
@callback
|
|
445
446
|
def async_create_entry(self, *, title: str | None = None, data: Mapping[str, Any], description: str | None = None, description_placeholders: Mapping[str, str] | None = None, unique_id: str | None = None) -> SubentryFlowResult: ...
|
|
446
447
|
@callback
|
|
448
|
+
def _async_update(self, entry: ConfigEntry, subentry: ConfigSubentry, *, unique_id: str | None | UndefinedType = ..., title: str | UndefinedType = ..., data: Mapping[str, Any] | UndefinedType = ..., data_updates: Mapping[str, Any] | UndefinedType = ...) -> bool: ...
|
|
449
|
+
@callback
|
|
447
450
|
def async_update_and_abort(self, entry: ConfigEntry, subentry: ConfigSubentry, *, unique_id: str | None | UndefinedType = ..., title: str | UndefinedType = ..., data: Mapping[str, Any] | UndefinedType = ..., data_updates: Mapping[str, Any] | UndefinedType = ...) -> SubentryFlowResult: ...
|
|
451
|
+
@callback
|
|
452
|
+
def async_update_reload_and_abort(self, entry: ConfigEntry, subentry: ConfigSubentry, *, unique_id: str | None | UndefinedType = ..., title: str | UndefinedType = ..., data: Mapping[str, Any] | UndefinedType = ..., data_updates: Mapping[str, Any] | UndefinedType = ..., reload_even_if_entry_is_unchanged: bool = True) -> SubentryFlowResult: ...
|
|
448
453
|
@property
|
|
449
454
|
def _entry_id(self) -> str: ...
|
|
450
455
|
@property
|
homeassistant-stubs/const.pyi
CHANGED
|
@@ -341,6 +341,7 @@ ATTR_SERVICE_DATA: Final[str]
|
|
|
341
341
|
ATTR_ID: Final[str]
|
|
342
342
|
ATTR_NAME: Final[str]
|
|
343
343
|
ATTR_ENTITY_ID: Final[str]
|
|
344
|
+
ATTR_CONFIG_ENTRY_ID: Final[str]
|
|
344
345
|
ATTR_AREA_ID: Final[str]
|
|
345
346
|
ATTR_DEVICE_ID: Final[str]
|
|
346
347
|
ATTR_FLOOR_ID: Final[str]
|
|
@@ -392,6 +393,7 @@ ATTR_TEMPERATURE: Final[str]
|
|
|
392
393
|
ATTR_PERSONS: Final[str]
|
|
393
394
|
|
|
394
395
|
class UnitOfApparentPower(StrEnum):
|
|
396
|
+
MILLIVOLT_AMPERE = 'mVA'
|
|
395
397
|
VOLT_AMPERE = 'VA'
|
|
396
398
|
|
|
397
399
|
class UnitOfPower(StrEnum):
|
|
@@ -404,6 +406,7 @@ class UnitOfPower(StrEnum):
|
|
|
404
406
|
BTU_PER_HOUR = 'BTU/h'
|
|
405
407
|
|
|
406
408
|
class UnitOfReactivePower(StrEnum):
|
|
409
|
+
MILLIVOLT_AMPERE_REACTIVE = 'mvar'
|
|
407
410
|
VOLT_AMPERE_REACTIVE = 'var'
|
|
408
411
|
KILO_VOLT_AMPERE_REACTIVE = 'kvar'
|
|
409
412
|
|
|
@@ -440,7 +443,7 @@ class UnitOfElectricCurrent(StrEnum):
|
|
|
440
443
|
AMPERE = 'A'
|
|
441
444
|
|
|
442
445
|
class UnitOfElectricPotential(StrEnum):
|
|
443
|
-
MICROVOLT = '
|
|
446
|
+
MICROVOLT = 'μV'
|
|
444
447
|
MILLIVOLT = 'mV'
|
|
445
448
|
VOLT = 'V'
|
|
446
449
|
KILOVOLT = 'kV'
|
|
@@ -510,6 +513,7 @@ class UnitOfVolume(StrEnum):
|
|
|
510
513
|
|
|
511
514
|
class UnitOfVolumeFlowRate(StrEnum):
|
|
512
515
|
CUBIC_METERS_PER_HOUR = 'm³/h'
|
|
516
|
+
CUBIC_METERS_PER_MINUTE = 'm³/min'
|
|
513
517
|
CUBIC_METERS_PER_SECOND = 'm³/s'
|
|
514
518
|
CUBIC_FEET_PER_MINUTE = 'ft³/min'
|
|
515
519
|
LITERS_PER_HOUR = 'L/h'
|
|
@@ -536,17 +540,17 @@ class UnitOfMass(StrEnum):
|
|
|
536
540
|
GRAMS = 'g'
|
|
537
541
|
KILOGRAMS = 'kg'
|
|
538
542
|
MILLIGRAMS = 'mg'
|
|
539
|
-
MICROGRAMS = '
|
|
543
|
+
MICROGRAMS = 'μg'
|
|
540
544
|
OUNCES = 'oz'
|
|
541
545
|
POUNDS = 'lb'
|
|
542
546
|
STONES = 'st'
|
|
543
547
|
|
|
544
548
|
class UnitOfConductivity(StrEnum, deprecated={'SIEMENS': ('UnitOfConductivity.SIEMENS_PER_CM', '2025.11.0'), 'MICROSIEMENS': ('UnitOfConductivity.MICROSIEMENS_PER_CM', '2025.11.0'), 'MILLISIEMENS': ('UnitOfConductivity.MILLISIEMENS_PER_CM', '2025.11.0')}, metaclass=EnumWithDeprecatedMembers):
|
|
545
549
|
SIEMENS_PER_CM = 'S/cm'
|
|
546
|
-
MICROSIEMENS_PER_CM = '
|
|
550
|
+
MICROSIEMENS_PER_CM = 'μS/cm'
|
|
547
551
|
MILLISIEMENS_PER_CM = 'mS/cm'
|
|
548
552
|
SIEMENS = 'S/cm'
|
|
549
|
-
MICROSIEMENS = '
|
|
553
|
+
MICROSIEMENS = 'μS/cm'
|
|
550
554
|
MILLISIEMENS = 'mS/cm'
|
|
551
555
|
|
|
552
556
|
_DEPRECATED_CONDUCTIVITY: Final[Incomplete]
|
|
@@ -571,8 +575,8 @@ class UnitOfPrecipitationDepth(StrEnum):
|
|
|
571
575
|
CENTIMETERS = 'cm'
|
|
572
576
|
|
|
573
577
|
CONCENTRATION_GRAMS_PER_CUBIC_METER: Final[str]
|
|
574
|
-
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: Final[str]
|
|
575
578
|
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER: Final[str]
|
|
579
|
+
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: Final[str]
|
|
576
580
|
CONCENTRATION_MICROGRAMS_PER_CUBIC_FOOT: Final[str]
|
|
577
581
|
CONCENTRATION_PARTS_PER_CUBIC_METER: Final[str]
|
|
578
582
|
CONCENTRATION_PARTS_PER_MILLION: Final[str]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import abc
|
|
2
2
|
import logging
|
|
3
|
+
from .automation import get_absolute_description_key as get_absolute_description_key, get_relative_description_key as get_relative_description_key
|
|
3
4
|
from .integration_platform import async_process_integration_platforms as async_process_integration_platforms
|
|
4
5
|
from .template import Template as Template, render_complex as render_complex
|
|
5
6
|
from .trace import TraceElement as TraceElement, trace_append_element as trace_append_element, trace_path as trace_path, trace_path_get as trace_path_get, trace_stack_cv as trace_stack_cv, trace_stack_pop as trace_stack_pop, trace_stack_push as trace_stack_push, trace_stack_top as trace_stack_top
|
|
@@ -15,7 +16,6 @@ from homeassistant.loader import Integration as Integration, IntegrationNotFound
|
|
|
15
16
|
from homeassistant.util.async_ import run_callback_threadsafe as run_callback_threadsafe
|
|
16
17
|
from homeassistant.util.hass_dict import HassKey as HassKey
|
|
17
18
|
from homeassistant.util.yaml import load_yaml_dict as load_yaml_dict
|
|
18
|
-
from homeassistant.util.yaml.loader import JSON_TYPE as JSON_TYPE
|
|
19
19
|
from typing import Any, Protocol
|
|
20
20
|
|
|
21
21
|
ASYNC_FROM_CONFIG_FORMAT: str
|
|
@@ -43,9 +43,9 @@ class Condition(abc.ABC, metaclass=abc.ABCMeta):
|
|
|
43
43
|
def __init__(self, hass: HomeAssistant, config: ConfigType) -> None: ...
|
|
44
44
|
@classmethod
|
|
45
45
|
@abc.abstractmethod
|
|
46
|
-
async def
|
|
46
|
+
async def async_validate_config(cls, hass: HomeAssistant, config: ConfigType) -> ConfigType: ...
|
|
47
47
|
@abc.abstractmethod
|
|
48
|
-
async def
|
|
48
|
+
async def async_get_checker(self) -> ConditionCheckerType: ...
|
|
49
49
|
|
|
50
50
|
class ConditionProtocol(Protocol):
|
|
51
51
|
async def async_get_conditions(self, hass: HomeAssistant) -> dict[str, type[Condition]]: ...
|
|
@@ -57,7 +57,7 @@ def condition_trace_update_result(**kwargs: Any) -> None: ...
|
|
|
57
57
|
@contextmanager
|
|
58
58
|
def trace_condition(variables: TemplateVarsType) -> Generator[TraceElement]: ...
|
|
59
59
|
def trace_condition_function(condition: ConditionCheckerType) -> ConditionCheckerType: ...
|
|
60
|
-
async def _async_get_condition_platform(hass: HomeAssistant,
|
|
60
|
+
async def _async_get_condition_platform(hass: HomeAssistant, condition_key: str) -> tuple[str, ConditionProtocol | None]: ...
|
|
61
61
|
async def async_from_config(hass: HomeAssistant, config: ConfigType) -> ConditionCheckerType: ...
|
|
62
62
|
async def async_and_from_config(hass: HomeAssistant, config: ConfigType) -> ConditionCheckerType: ...
|
|
63
63
|
async def async_or_from_config(hass: HomeAssistant, config: ConfigType) -> ConditionCheckerType: ...
|
|
@@ -82,6 +82,6 @@ async def async_conditions_from_config(hass: HomeAssistant, condition_configs: l
|
|
|
82
82
|
def async_extract_entities(config: ConfigType | Template) -> set[str]: ...
|
|
83
83
|
@callback
|
|
84
84
|
def async_extract_devices(config: ConfigType | Template) -> set[str]: ...
|
|
85
|
-
def _load_conditions_file(
|
|
86
|
-
def _load_conditions_files(
|
|
85
|
+
def _load_conditions_file(integration: Integration) -> dict[str, Any]: ...
|
|
86
|
+
def _load_conditions_files(integrations: Iterable[Integration]) -> dict[str, dict[str, Any]]: ...
|
|
87
87
|
async def async_get_all_descriptions(hass: HomeAssistant) -> dict[str, dict[str, Any] | None]: ...
|
|
@@ -71,6 +71,7 @@ def ensure_list[_T](value: list[_T]) -> list[_T]: ...
|
|
|
71
71
|
@overload
|
|
72
72
|
def ensure_list[_T](value: list[_T] | _T) -> list[_T]: ...
|
|
73
73
|
def entity_id(value: Any) -> str: ...
|
|
74
|
+
def strict_entity_id(value: Any) -> str: ...
|
|
74
75
|
def entity_id_or_uuid(value: Any) -> str: ...
|
|
75
76
|
def _entity_ids(value: str | list, allow_uuid: bool) -> list[str]: ...
|
|
76
77
|
def entity_ids(value: str | list) -> list[str]: ...
|
|
@@ -108,6 +109,7 @@ positive_time_period: Incomplete
|
|
|
108
109
|
def remove_falsy[_T](value: list[_T]) -> list[_T]: ...
|
|
109
110
|
def service(value: Any) -> str: ...
|
|
110
111
|
def slug(value: Any) -> str: ...
|
|
112
|
+
def underscore_slug(value: Any) -> str: ...
|
|
111
113
|
def schema_with_slug_keys(value_schema: dict | Callable, *, slug_validator: Callable[[Any], str] = ...) -> Callable: ...
|
|
112
114
|
def slugify(value: Any) -> str: ...
|
|
113
115
|
def string(value: Any) -> str: ...
|
|
@@ -158,6 +160,7 @@ def platform_only_config_schema(domain: str) -> Callable[[dict], dict]: ...
|
|
|
158
160
|
|
|
159
161
|
PLATFORM_SCHEMA: Incomplete
|
|
160
162
|
PLATFORM_SCHEMA_BASE: Incomplete
|
|
163
|
+
TARGET_FIELDS: VolDictType
|
|
161
164
|
ENTITY_SERVICE_FIELDS: VolDictType
|
|
162
165
|
TARGET_SERVICE_FIELDS: Incomplete
|
|
163
166
|
_HAS_ENTITY_SERVICE_FIELD: Incomplete
|
|
@@ -10,7 +10,7 @@ _FlowManagerT = TypeVar('_FlowManagerT', bound=data_entry_flow.FlowManager[Any,
|
|
|
10
10
|
class _BaseFlowManagerView(HomeAssistantView, Generic[_FlowManagerT]):
|
|
11
11
|
_flow_mgr: Incomplete
|
|
12
12
|
def __init__(self, flow_mgr: _FlowManagerT) -> None: ...
|
|
13
|
-
def _prepare_result_json(self, result: data_entry_flow.FlowResult) ->
|
|
13
|
+
def _prepare_result_json(self, result: data_entry_flow.FlowResult) -> dict[str, Any]: ...
|
|
14
14
|
|
|
15
15
|
class FlowManagerIndexView(_BaseFlowManagerView[_FlowManagerT]):
|
|
16
16
|
async def post(self, request: web.Request, data: dict[str, Any]) -> web.Response: ...
|
|
@@ -20,7 +20,7 @@ from homeassistant.util.event_type import EventType as EventType
|
|
|
20
20
|
from homeassistant.util.hass_dict import HassKey as HassKey
|
|
21
21
|
from homeassistant.util.json import format_unserializable_data as format_unserializable_data
|
|
22
22
|
from propcache.api import cached_property as under_cached_property
|
|
23
|
-
from typing import Any, Literal, TypedDict
|
|
23
|
+
from typing import Any, Final, Literal, TypedDict
|
|
24
24
|
from yarl import URL
|
|
25
25
|
|
|
26
26
|
_LOGGER: Incomplete
|
|
@@ -35,6 +35,7 @@ CONNECTION_NETWORK_MAC: str
|
|
|
35
35
|
CONNECTION_UPNP: str
|
|
36
36
|
CONNECTION_ZIGBEE: str
|
|
37
37
|
ORPHANED_DEVICE_KEEP_SECONDS: Incomplete
|
|
38
|
+
UNDEFINED_STR: Final[str]
|
|
38
39
|
RUNTIME_ONLY_ATTRS: Incomplete
|
|
39
40
|
CONFIGURATION_URL_SCHEMES: Incomplete
|
|
40
41
|
|
|
@@ -157,7 +158,7 @@ class DeletedDeviceEntry:
|
|
|
157
158
|
config_entries_subentries: dict[str, set[str | None]]
|
|
158
159
|
connections: set[tuple[str, str]]
|
|
159
160
|
created_at: datetime
|
|
160
|
-
disabled_by: DeviceEntryDisabler | None
|
|
161
|
+
disabled_by: DeviceEntryDisabler | UndefinedType | None
|
|
161
162
|
id: str
|
|
162
163
|
identifiers: set[tuple[str, str]]
|
|
163
164
|
labels: set[str]
|
|
@@ -165,7 +166,7 @@ class DeletedDeviceEntry:
|
|
|
165
166
|
name_by_user: str | None
|
|
166
167
|
orphaned_timestamp: float | None
|
|
167
168
|
_cache: dict[str, Any]
|
|
168
|
-
def to_device_entry(self,
|
|
169
|
+
def to_device_entry(self, config_entry: ConfigEntry, config_subentry_id: str | None, connections: set[tuple[str, str]], identifiers: set[tuple[str, str]], disabled_by: DeviceEntryDisabler | UndefinedType | None) -> DeviceEntry: ...
|
|
169
170
|
@under_cached_property
|
|
170
171
|
def as_storage_fragment(self) -> json_fragment: ...
|
|
171
172
|
def __init__(self, area_id, config_entries, config_entries_subentries, connections, created_at, disabled_by, id, identifiers, labels, modified_at, name_by_user, orphaned_timestamp, cache) -> None: ...
|
|
@@ -20,7 +20,7 @@ from homeassistant.util.hass_dict import HassKey as HassKey
|
|
|
20
20
|
from homeassistant.util.json import format_unserializable_data as format_unserializable_data
|
|
21
21
|
from homeassistant.util.read_only_dict import ReadOnlyDict as ReadOnlyDict
|
|
22
22
|
from propcache.api import cached_property as under_cached_property
|
|
23
|
-
from typing import Any, Literal, NotRequired, TypedDict
|
|
23
|
+
from typing import Any, Final, Literal, NotRequired, TypedDict
|
|
24
24
|
|
|
25
25
|
DATA_REGISTRY: HassKey[EntityRegistry]
|
|
26
26
|
EVENT_ENTITY_REGISTRY_UPDATED: EventType[EventEntityRegistryUpdatedData]
|
|
@@ -30,6 +30,7 @@ STORAGE_VERSION_MINOR: int
|
|
|
30
30
|
STORAGE_KEY: str
|
|
31
31
|
CLEANUP_INTERVAL: Incomplete
|
|
32
32
|
ORPHANED_ENTITY_KEEP_SECONDS: Incomplete
|
|
33
|
+
UNDEFINED_STR: Final[str]
|
|
33
34
|
ENTITY_CATEGORY_VALUE_TO_INDEX: dict[EntityCategory | None, int]
|
|
34
35
|
ENTITY_CATEGORY_INDEX_TO_VALUE: Incomplete
|
|
35
36
|
ENTITY_DESCRIBING_ATTRIBUTES: Incomplete
|
|
@@ -61,6 +62,7 @@ type ReadOnlyEntityOptionsType = ReadOnlyDict[str, ReadOnlyDict[str, Any]]
|
|
|
61
62
|
DISPLAY_DICT_OPTIONAL: Incomplete
|
|
62
63
|
|
|
63
64
|
def _protect_entity_options(data: EntityOptionsType | None) -> ReadOnlyEntityOptionsType: ...
|
|
65
|
+
def _protect_optional_entity_options(data: EntityOptionsType | UndefinedType | None) -> ReadOnlyEntityOptionsType | UndefinedType: ...
|
|
64
66
|
|
|
65
67
|
class RegistryEntry:
|
|
66
68
|
entity_id: str
|
|
@@ -132,15 +134,15 @@ class DeletedRegistryEntry:
|
|
|
132
134
|
config_subentry_id: str | None
|
|
133
135
|
created_at: datetime
|
|
134
136
|
device_class: str | None
|
|
135
|
-
disabled_by: RegistryEntryDisabler | None
|
|
137
|
+
disabled_by: RegistryEntryDisabler | UndefinedType | None
|
|
136
138
|
domain: str
|
|
137
|
-
hidden_by: RegistryEntryHider | None
|
|
139
|
+
hidden_by: RegistryEntryHider | UndefinedType | None
|
|
138
140
|
icon: str | None
|
|
139
141
|
id: str
|
|
140
142
|
labels: set[str]
|
|
141
143
|
modified_at: datetime
|
|
142
144
|
name: str | None
|
|
143
|
-
options: ReadOnlyEntityOptionsType
|
|
145
|
+
options: ReadOnlyEntityOptionsType | UndefinedType
|
|
144
146
|
orphaned_timestamp: float | None
|
|
145
147
|
_cache: dict[str, Any]
|
|
146
148
|
@domain.default
|