homeassistant-stubs 2025.8.3__py3-none-any.whl → 2025.9.0b0__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 (229) hide show
  1. homeassistant-stubs/auth/models.pyi +3 -1
  2. homeassistant-stubs/components/airos/binary_sensor.pyi +27 -0
  3. homeassistant-stubs/components/airos/sensor.pyi +4 -2
  4. homeassistant-stubs/components/airq/number.pyi +31 -0
  5. homeassistant-stubs/components/aladdin_connect/__init__.pyi +10 -5
  6. homeassistant-stubs/components/aladdin_connect/api.pyi +12 -0
  7. homeassistant-stubs/components/aladdin_connect/application_credentials.pyi +5 -0
  8. homeassistant-stubs/components/aladdin_connect/config_flow.pyi +15 -4
  9. homeassistant-stubs/components/aladdin_connect/const.pyi +10 -0
  10. homeassistant-stubs/components/aladdin_connect/coordinator.pyi +16 -0
  11. homeassistant-stubs/components/aladdin_connect/cover.pyi +25 -0
  12. homeassistant-stubs/components/aladdin_connect/entity.pyi +15 -0
  13. homeassistant-stubs/components/aladdin_connect/sensor.pyi +25 -0
  14. homeassistant-stubs/components/alexa_devices/__init__.pyi +1 -1
  15. homeassistant-stubs/components/alexa_devices/config_flow.pyi +2 -0
  16. homeassistant-stubs/components/amberelectric/const.pyi +0 -1
  17. homeassistant-stubs/components/amberelectric/services.pyi +2 -1
  18. homeassistant-stubs/components/ambient_station/entity.pyi +1 -1
  19. homeassistant-stubs/components/android_ip_webcam/coordinator.pyi +0 -1
  20. homeassistant-stubs/components/apcupsd/binary_sensor.pyi +2 -6
  21. homeassistant-stubs/components/apcupsd/entity.pyi +11 -0
  22. homeassistant-stubs/components/apcupsd/sensor.pyi +2 -6
  23. homeassistant-stubs/components/asuswrt/bridge.pyi +10 -8
  24. homeassistant-stubs/components/asuswrt/helpers.pyi +8 -0
  25. homeassistant-stubs/components/auth/login_flow.pyi +1 -1
  26. homeassistant-stubs/components/auth/mfa_setup_flow.pyi +1 -1
  27. homeassistant-stubs/components/awair/const.pyi +1 -0
  28. homeassistant-stubs/components/awair/sensor.pyi +2 -2
  29. homeassistant-stubs/components/backup/config.pyi +0 -14
  30. homeassistant-stubs/components/bayesian/__init__.pyi +6 -4
  31. homeassistant-stubs/components/bayesian/binary_sensor.pyi +6 -5
  32. homeassistant-stubs/components/bayesian/config_flow.pyi +69 -0
  33. homeassistant-stubs/components/bayesian/const.pyi +5 -0
  34. homeassistant-stubs/components/bayesian/issues.pyi +1 -1
  35. homeassistant-stubs/components/bosch_alarm/const.pyi +0 -1
  36. homeassistant-stubs/components/bosch_alarm/services.pyi +2 -1
  37. homeassistant-stubs/components/braviatv/button.pyi +1 -1
  38. homeassistant-stubs/components/braviatv/coordinator.pyi +1 -0
  39. homeassistant-stubs/components/braviatv/entity.pyi +1 -1
  40. homeassistant-stubs/components/climate/__init__.pyi +1 -1
  41. homeassistant-stubs/components/cloud/alexa_config.pyi +2 -1
  42. homeassistant-stubs/components/cloud/subscription.pyi +2 -4
  43. homeassistant-stubs/components/co2signal/coordinator.pyi +3 -3
  44. homeassistant-stubs/components/co2signal/helpers.pyi +2 -3
  45. homeassistant-stubs/components/co2signal/sensor.pyi +3 -3
  46. homeassistant-stubs/components/config/config_entries.pyi +6 -3
  47. homeassistant-stubs/components/demo/media_player.pyi +2 -0
  48. homeassistant-stubs/components/device_automation/condition.pyi +2 -2
  49. homeassistant-stubs/components/enphase_envoy/binary_sensor.pyi +29 -1
  50. homeassistant-stubs/components/enphase_envoy/sensor.pyi +30 -1
  51. homeassistant-stubs/components/esphome/manager.pyi +1 -2
  52. homeassistant-stubs/components/esphome/media_player.pyi +5 -0
  53. homeassistant-stubs/components/fan/intent.pyi +7 -0
  54. homeassistant-stubs/components/fritz/coordinator.pyi +0 -1
  55. homeassistant-stubs/components/fyta/const.pyi +4 -0
  56. homeassistant-stubs/components/fyta/sensor.pyi +11 -0
  57. homeassistant-stubs/components/glances/coordinator.pyi +0 -1
  58. homeassistant-stubs/components/group/config_flow.pyi +2 -0
  59. homeassistant-stubs/components/habitica/__init__.pyi +6 -2
  60. homeassistant-stubs/components/habitica/binary_sensor.pyi +13 -4
  61. homeassistant-stubs/components/habitica/coordinator.pyi +18 -4
  62. homeassistant-stubs/components/habitica/entity.pyi +10 -1
  63. homeassistant-stubs/components/habitica/image.pyi +19 -4
  64. homeassistant-stubs/components/habitica/sensor.pyi +27 -3
  65. homeassistant-stubs/components/habitica/util.pyi +5 -2
  66. homeassistant-stubs/components/home_connect/const.pyi +0 -7
  67. homeassistant-stubs/components/home_connect/services.pyi +1 -14
  68. homeassistant-stubs/components/homeassistant_hardware/coordinator.pyi +0 -1
  69. homeassistant-stubs/components/homee/config_flow.pyi +8 -2
  70. homeassistant-stubs/components/homee/const.pyi +3 -0
  71. homeassistant-stubs/components/homekit/accessories.pyi +1 -1
  72. homeassistant-stubs/components/homekit/const.pyi +4 -0
  73. homeassistant-stubs/components/homekit/type_switches.pyi +11 -1
  74. homeassistant-stubs/components/homekit/util.pyi +3 -2
  75. homeassistant-stubs/components/huawei_lte/__init__.pyi +2 -2
  76. homeassistant-stubs/components/huawei_lte/const.pyi +0 -1
  77. homeassistant-stubs/components/huawei_lte/notify.pyi +2 -2
  78. homeassistant-stubs/components/husqvarna_automower/button.pyi +4 -0
  79. homeassistant-stubs/components/husqvarna_automower/const.pyi +1 -0
  80. homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +10 -0
  81. homeassistant-stubs/components/husqvarna_automower/event.pyi +35 -0
  82. homeassistant-stubs/components/husqvarna_automower/sensor.pyi +1 -2
  83. homeassistant-stubs/components/idasen_desk/__init__.pyi +0 -1
  84. homeassistant-stubs/components/jewish_calendar/__init__.pyi +2 -1
  85. homeassistant-stubs/components/jewish_calendar/coordinator.pyi +41 -0
  86. homeassistant-stubs/components/jewish_calendar/entity.pyi +5 -26
  87. homeassistant-stubs/components/jewish_calendar/sensor.pyi +1 -1
  88. homeassistant-stubs/components/knx/scene.pyi +5 -4
  89. homeassistant-stubs/components/knx/storage/entity_store_schema.pyi +5 -11
  90. homeassistant-stubs/components/knx/storage/knx_selector.pyi +57 -6
  91. homeassistant-stubs/components/knx/storage/serialize.pyi +10 -0
  92. homeassistant-stubs/components/knx/storage/util.pyi +2 -0
  93. homeassistant-stubs/components/knx/websocket.pyi +7 -3
  94. homeassistant-stubs/components/letpot/select.pyi +39 -0
  95. homeassistant-stubs/components/mastodon/__init__.pyi +1 -2
  96. homeassistant-stubs/components/mastodon/const.pyi +0 -1
  97. homeassistant-stubs/components/mastodon/services.pyi +2 -1
  98. homeassistant-stubs/components/matter/lock.pyi +6 -0
  99. homeassistant-stubs/components/matter/sensor.pyi +2 -1
  100. homeassistant-stubs/components/mealie/const.pyi +0 -1
  101. homeassistant-stubs/components/mealie/services.pyi +2 -2
  102. homeassistant-stubs/components/media_player/__init__.pyi +4 -0
  103. homeassistant-stubs/components/media_player/intent.pyi +13 -3
  104. homeassistant-stubs/components/met_eireann/const.pyi +1 -1
  105. homeassistant-stubs/components/met_eireann/weather.pyi +4 -0
  106. homeassistant-stubs/components/miele/const.pyi +1 -0
  107. homeassistant-stubs/components/miele/coordinator.pyi +2 -3
  108. homeassistant-stubs/components/miele/entity.pyi +2 -3
  109. homeassistant-stubs/components/miele/sensor.pyi +25 -6
  110. homeassistant-stubs/components/modbus/binary_sensor.pyi +1 -2
  111. homeassistant-stubs/components/modbus/climate.pyi +1 -2
  112. homeassistant-stubs/components/modbus/const.pyi +2 -0
  113. homeassistant-stubs/components/modbus/entity.pyi +8 -10
  114. homeassistant-stubs/components/modbus/light.pyi +0 -1
  115. homeassistant-stubs/components/modbus/modbus.pyi +9 -11
  116. homeassistant-stubs/components/modbus/sensor.pyi +1 -3
  117. homeassistant-stubs/components/mqtt/alarm_control_panel.pyi +2 -23
  118. homeassistant-stubs/components/mqtt/config_flow.pyi +8 -2
  119. homeassistant-stubs/components/mqtt/const.pyi +40 -1
  120. homeassistant-stubs/components/mqtt/lock.pyi +1 -21
  121. homeassistant-stubs/components/mqtt/number.pyi +1 -0
  122. homeassistant-stubs/components/mqtt/sensor.pyi +1 -1
  123. homeassistant-stubs/components/music_assistant/actions.pyi +2 -1
  124. homeassistant-stubs/components/music_assistant/const.pyi +0 -1
  125. homeassistant-stubs/components/number/__init__.pyi +3 -0
  126. homeassistant-stubs/components/number/const.pyi +2 -1
  127. homeassistant-stubs/components/open_router/entity.pyi +2 -2
  128. homeassistant-stubs/components/openai_conversation/entity.pyi +3 -3
  129. homeassistant-stubs/components/opower/__init__.pyi +1 -0
  130. homeassistant-stubs/components/opower/repairs.pyi +13 -0
  131. homeassistant-stubs/components/overseerr/const.pyi +0 -1
  132. homeassistant-stubs/components/overseerr/services.pyi +2 -1
  133. homeassistant-stubs/components/person/__init__.pyi +2 -1
  134. homeassistant-stubs/components/qbus/binary_sensor.pyi +43 -0
  135. homeassistant-stubs/components/qbus/climate.pyi +1 -1
  136. homeassistant-stubs/components/qbus/coordinator.pyi +4 -3
  137. homeassistant-stubs/components/qbus/cover.pyi +1 -1
  138. homeassistant-stubs/components/qbus/entity.pyi +6 -5
  139. homeassistant-stubs/components/qbus/light.pyi +1 -1
  140. homeassistant-stubs/components/qbus/scene.pyi +4 -6
  141. homeassistant-stubs/components/qbus/sensor.pyi +67 -0
  142. homeassistant-stubs/components/qbus/switch.pyi +1 -1
  143. homeassistant-stubs/components/recorder/statistics.pyi +1 -1
  144. homeassistant-stubs/components/recorder/websocket_api.pyi +1 -1
  145. homeassistant-stubs/components/rest_command/__init__.pyi +1 -1
  146. homeassistant-stubs/components/romy/coordinator.pyi +0 -1
  147. homeassistant-stubs/components/russound_rio/media_browser.pyi +8 -0
  148. homeassistant-stubs/components/russound_rio/media_player.pyi +3 -2
  149. homeassistant-stubs/components/ruuvitag_ble/sensor.pyi +2 -2
  150. homeassistant-stubs/components/scene/__init__.pyi +13 -4
  151. homeassistant-stubs/components/sensibo/select.pyi +0 -5
  152. homeassistant-stubs/components/sensor/__init__.pyi +3 -0
  153. homeassistant-stubs/components/sensor/const.pyi +3 -2
  154. homeassistant-stubs/components/sensor/recorder.pyi +1 -1
  155. homeassistant-stubs/components/sleep_as_android/__init__.pyi +16 -0
  156. homeassistant-stubs/components/sleep_as_android/config_flow.pyi +2 -0
  157. homeassistant-stubs/components/sleep_as_android/const.pyi +9 -0
  158. homeassistant-stubs/components/sleep_as_android/diagnostics.pyi +5 -0
  159. homeassistant-stubs/components/sleep_as_android/entity.pyi +20 -0
  160. homeassistant-stubs/components/sleep_as_android/event.pyi +33 -0
  161. homeassistant-stubs/components/sleep_as_android/sensor.pyi +25 -0
  162. homeassistant-stubs/components/solarlog/sensor.pyi +11 -1
  163. homeassistant-stubs/components/speedtestdotnet/coordinator.pyi +0 -1
  164. homeassistant-stubs/components/stookwijzer/const.pyi +0 -1
  165. homeassistant-stubs/components/stookwijzer/services.pyi +2 -1
  166. homeassistant-stubs/components/sun/condition.pyi +2 -2
  167. homeassistant-stubs/components/switchbot_cloud/__init__.pyi +1 -0
  168. homeassistant-stubs/components/switchbot_cloud/const.pyi +10 -0
  169. homeassistant-stubs/components/switchbot_cloud/cover.pyi +57 -0
  170. homeassistant-stubs/components/switchbot_cloud/fan.pyi +22 -1
  171. homeassistant-stubs/components/telegram_bot/__init__.pyi +2 -1
  172. homeassistant-stubs/components/telegram_bot/bot.pyi +4 -1
  173. homeassistant-stubs/components/telegram_bot/notify.pyi +21 -0
  174. homeassistant-stubs/components/unifi/switch.pyi +3 -0
  175. homeassistant-stubs/components/volvo/__init__.pyi +1 -1
  176. homeassistant-stubs/components/volvo/binary_sensor.pyi +42 -0
  177. homeassistant-stubs/components/volvo/const.pyi +1 -1
  178. homeassistant-stubs/components/volvo/coordinator.pyi +5 -0
  179. homeassistant-stubs/components/volvo/sensor.pyi +2 -2
  180. homeassistant-stubs/components/webostv/__init__.pyi +2 -2
  181. homeassistant-stubs/components/webostv/const.pyi +0 -1
  182. homeassistant-stubs/components/webostv/notify.pyi +2 -2
  183. homeassistant-stubs/components/wemo/coordinator.pyi +0 -1
  184. homeassistant-stubs/components/workday/__init__.pyi +6 -8
  185. homeassistant-stubs/components/workday/binary_sensor.pyi +9 -33
  186. homeassistant-stubs/components/workday/entity.pyi +34 -0
  187. homeassistant-stubs/components/workday/util.pyi +14 -0
  188. homeassistant-stubs/components/zone/condition.pyi +2 -2
  189. homeassistant-stubs/components/zwave_js/__init__.pyi +5 -5
  190. homeassistant-stubs/components/zwave_js/binary_sensor.pyi +17 -10
  191. homeassistant-stubs/components/zwave_js/const.pyi +0 -1
  192. homeassistant-stubs/components/zwave_js/discovery.pyi +7 -51
  193. homeassistant-stubs/components/zwave_js/discovery_data_template.pyi +1 -11
  194. homeassistant-stubs/components/zwave_js/entity.pyi +15 -5
  195. homeassistant-stubs/components/zwave_js/helpers.pyi +0 -7
  196. homeassistant-stubs/components/zwave_js/migrate.pyi +2 -2
  197. homeassistant-stubs/components/zwave_js/models.pyi +95 -1
  198. homeassistant-stubs/components/zwave_js/triggers/event.pyi +5 -4
  199. homeassistant-stubs/components/zwave_js/triggers/trigger_helpers.pyi +2 -2
  200. homeassistant-stubs/components/zwave_js/triggers/value_updated.pyi +3 -2
  201. homeassistant-stubs/components/zwave_js/update.pyi +0 -3
  202. homeassistant-stubs/config_entries.pyi +5 -0
  203. homeassistant-stubs/const.pyi +9 -5
  204. homeassistant-stubs/data_entry_flow.pyi +0 -1
  205. homeassistant-stubs/helpers/automation.pyi +2 -0
  206. homeassistant-stubs/helpers/condition.pyi +6 -6
  207. homeassistant-stubs/helpers/config_validation.pyi +3 -0
  208. homeassistant-stubs/helpers/data_entry_flow.pyi +1 -1
  209. homeassistant-stubs/helpers/device_registry.pyi +1 -1
  210. homeassistant-stubs/helpers/json.pyi +0 -7
  211. homeassistant-stubs/helpers/llm.pyi +1 -0
  212. homeassistant-stubs/helpers/schema_config_entry_flow.pyi +2 -1
  213. homeassistant-stubs/helpers/selector.pyi +2 -1
  214. homeassistant-stubs/helpers/target.pyi +3 -2
  215. homeassistant-stubs/helpers/trigger.pyi +6 -6
  216. homeassistant-stubs/util/unit_conversion.pyi +11 -1
  217. {homeassistant_stubs-2025.8.3.dist-info → homeassistant_stubs-2025.9.0b0.dist-info}/METADATA +2 -2
  218. {homeassistant_stubs-2025.8.3.dist-info → homeassistant_stubs-2025.9.0b0.dist-info}/RECORD +220 -195
  219. homeassistant-stubs/components/linear_garage_door/__init__.pyi +0 -10
  220. homeassistant-stubs/components/linear_garage_door/config_flow.pyi +0 -25
  221. homeassistant-stubs/components/linear_garage_door/const.pyi +0 -1
  222. homeassistant-stubs/components/linear_garage_door/coordinator.pyi +0 -26
  223. homeassistant-stubs/components/linear_garage_door/cover.pyi +0 -28
  224. homeassistant-stubs/components/linear_garage_door/diagnostics.pyi +0 -10
  225. homeassistant-stubs/components/linear_garage_door/entity.pyi +0 -17
  226. homeassistant-stubs/components/linear_garage_door/light.pyi +0 -23
  227. homeassistant-stubs/components/mastodon/notify.pyi +0 -24
  228. {homeassistant_stubs-2025.8.3.dist-info → homeassistant_stubs-2025.9.0b0.dist-info}/WHEEL +0 -0
  229. {homeassistant_stubs-2025.8.3.dist-info → homeassistant_stubs-2025.9.0b0.dist-info}/licenses/LICENSE +0 -0
@@ -1,9 +1,11 @@
1
- from .coordinator import HabiticaConfigEntry as HabiticaConfigEntry, HabiticaDataUpdateCoordinator as HabiticaDataUpdateCoordinator
2
- from .entity import HabiticaBase as HabiticaBase
1
+ from . import HABITICA_KEY as HABITICA_KEY
2
+ from .const import ASSETS_URL as ASSETS_URL
3
+ from .coordinator import HabiticaConfigEntry as HabiticaConfigEntry, HabiticaDataUpdateCoordinator as HabiticaDataUpdateCoordinator, HabiticaPartyCoordinator as HabiticaPartyCoordinator
4
+ from .entity import HabiticaBase as HabiticaBase, HabiticaPartyBase as HabiticaPartyBase
3
5
  from _typeshed import Incomplete
4
6
  from enum import StrEnum
5
- from habiticalib import Avatar as Avatar
6
- from homeassistant.components.image import ImageEntity as ImageEntity, ImageEntityDescription as ImageEntityDescription
7
+ from habiticalib import Avatar as Avatar, ContentData as ContentData
8
+ from homeassistant.components.image import Image as Image, ImageEntity as ImageEntity, ImageEntityDescription as ImageEntityDescription
7
9
  from homeassistant.core import HomeAssistant as HomeAssistant
8
10
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
9
11
 
@@ -11,6 +13,7 @@ PARALLEL_UPDATES: int
11
13
 
12
14
  class HabiticaImageEntity(StrEnum):
13
15
  AVATAR = 'avatar'
16
+ QUEST_IMAGE = 'quest_image'
14
17
 
15
18
  async def async_setup_entry(hass: HomeAssistant, config_entry: HabiticaConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
16
19
 
@@ -23,3 +26,15 @@ class HabiticaImage(HabiticaBase, ImageEntity):
23
26
  def __init__(self, hass: HomeAssistant, coordinator: HabiticaDataUpdateCoordinator) -> None: ...
24
27
  def _handle_coordinator_update(self) -> None: ...
25
28
  async def async_image(self) -> bytes | None: ...
29
+
30
+ class HabiticaPartyImage(HabiticaPartyBase, ImageEntity):
31
+ entity_description: Incomplete
32
+ _attr_content_type: str
33
+ _attr_image_url: Incomplete
34
+ _attr_image_last_updated: Incomplete
35
+ def __init__(self, hass: HomeAssistant, coordinator: HabiticaPartyCoordinator, config_entry: HabiticaConfigEntry, content: ContentData) -> None: ...
36
+ _cached_image: Incomplete
37
+ def _handle_coordinator_update(self) -> None: ...
38
+ @property
39
+ def image_url(self) -> str | None: ...
40
+ async def _async_load_image_from_url(self, url: str) -> Image | None: ...
@@ -1,12 +1,13 @@
1
+ from . import HABITICA_KEY as HABITICA_KEY
1
2
  from .const import ASSETS_URL as ASSETS_URL
2
3
  from .coordinator import HabiticaConfigEntry as HabiticaConfigEntry
3
- from .entity import HabiticaBase as HabiticaBase
4
- from .util import get_attribute_points as get_attribute_points, get_attributes_total as get_attributes_total, inventory_list as inventory_list, pending_damage as pending_damage, pending_quest_items as pending_quest_items
4
+ from .entity import HabiticaBase as HabiticaBase, HabiticaPartyBase as HabiticaPartyBase
5
+ from .util import collected_quest_items as collected_quest_items, get_attribute_points as get_attribute_points, get_attributes_total as get_attributes_total, inventory_list as inventory_list, pending_damage as pending_damage, pending_quest_items as pending_quest_items, quest_attributes as quest_attributes, quest_boss as quest_boss
5
6
  from _typeshed import Incomplete
6
7
  from collections.abc import Callable as Callable
7
8
  from dataclasses import dataclass
8
9
  from enum import StrEnum
9
- from habiticalib import ContentData as ContentData, TaskData as TaskData, UserData as UserData
10
+ from habiticalib import ContentData as ContentData, GroupData as GroupData, TaskData as TaskData, UserData as UserData
10
11
  from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription
11
12
  from homeassistant.core import HomeAssistant as HomeAssistant
12
13
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
@@ -23,6 +24,12 @@ class HabiticaSensorEntityDescription(SensorEntityDescription):
23
24
  attributes_fn: Callable[[UserData, ContentData], dict[str, Any] | None] | None = ...
24
25
  entity_picture: str | None = ...
25
26
 
27
+ @dataclass(kw_only=True, frozen=True)
28
+ class HabiticaPartySensorEntityDescription(SensorEntityDescription):
29
+ value_fn: Callable[[GroupData, ContentData], StateType]
30
+ entity_picture: Callable[[GroupData], str | None] | str | None = ...
31
+ attributes_fn: Callable[[GroupData, ContentData], dict[str, Any] | None] | None = ...
32
+
26
33
  @dataclass(kw_only=True, frozen=True)
27
34
  class HabiticaTaskSensorEntityDescription(SensorEntityDescription):
28
35
  value_fn: Callable[[list[TaskData]], list[TaskData]]
@@ -52,8 +59,16 @@ class HabiticaSensorEntity(StrEnum):
52
59
  QUEST_SCROLLS = 'quest_scrolls'
53
60
  PENDING_DAMAGE = 'pending_damage'
54
61
  PENDING_QUEST_ITEMS = 'pending_quest_items'
62
+ MEMBER_COUNT = 'member_count'
63
+ GROUP_LEADER = 'group_leader'
64
+ QUEST = 'quest'
65
+ BOSS = 'boss'
66
+ BOSS_HP = 'boss_hp'
67
+ BOSS_HP_REMAINING = 'boss_hp_remaining'
68
+ COLLECTED_ITEMS = 'collected_items'
55
69
 
56
70
  SENSOR_DESCRIPTIONS: tuple[HabiticaSensorEntityDescription, ...]
71
+ SENSOR_DESCRIPTIONS_PARTY: tuple[HabiticaPartySensorEntityDescription, ...]
57
72
 
58
73
  async def async_setup_entry(hass: HomeAssistant, config_entry: HabiticaConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
59
74
 
@@ -65,3 +80,12 @@ class HabiticaSensor(HabiticaBase, SensorEntity):
65
80
  def extra_state_attributes(self) -> dict[str, float | None] | None: ...
66
81
  @property
67
82
  def entity_picture(self) -> str | None: ...
83
+
84
+ class HabiticaPartySensor(HabiticaPartyBase, SensorEntity):
85
+ entity_description: HabiticaPartySensorEntityDescription
86
+ @property
87
+ def native_value(self) -> StateType: ...
88
+ @property
89
+ def entity_picture(self) -> str | None: ...
90
+ @property
91
+ def extra_state_attributes(self) -> dict[str, Any] | None: ...
@@ -1,8 +1,8 @@
1
1
  import datetime
2
2
  from _typeshed import Incomplete
3
3
  from dateutil.rrule import rrule
4
- from habiticalib import ContentData as ContentData, TaskData as TaskData, UserData as UserData
5
- from typing import Literal
4
+ from habiticalib import ContentData as ContentData, GroupData as GroupData, QuestBoss as QuestBoss, TaskData as TaskData, UserData as UserData
5
+ from typing import Any, Literal
6
6
 
7
7
  def next_due_date(task: TaskData, today: datetime.datetime) -> datetime.date | None: ...
8
8
 
@@ -16,3 +16,6 @@ def get_attributes_total(user: UserData, content: ContentData, attribute: str) -
16
16
  def inventory_list(user: UserData, content: ContentData, item_type: str) -> dict[str, int]: ...
17
17
  def pending_quest_items(user: UserData, content: ContentData) -> int | None: ...
18
18
  def pending_damage(user: UserData, content: ContentData) -> float | None: ...
19
+ def quest_attributes(party: GroupData, content: ContentData) -> dict[str, Any]: ...
20
+ def quest_boss(party: GroupData, content: ContentData) -> QuestBoss | None: ...
21
+ def collected_quest_items(party: GroupData, content: ContentData) -> dict[str, Any]: ...
@@ -21,18 +21,11 @@ BSH_AMBIENT_LIGHT_COLOR_CUSTOM_COLOR: str
21
21
  BSH_DOOR_STATE_CLOSED: str
22
22
  BSH_DOOR_STATE_LOCKED: str
23
23
  BSH_DOOR_STATE_OPEN: str
24
- SERVICE_OPTION_ACTIVE: str
25
- SERVICE_OPTION_SELECTED: str
26
- SERVICE_PAUSE_PROGRAM: str
27
- SERVICE_RESUME_PROGRAM: str
28
- SERVICE_SELECT_PROGRAM: str
29
24
  SERVICE_SET_PROGRAM_AND_OPTIONS: str
30
25
  SERVICE_SETTING: str
31
- SERVICE_START_PROGRAM: str
32
26
  ATTR_AFFECTS_TO: str
33
27
  ATTR_KEY: str
34
28
  ATTR_PROGRAM: str
35
- ATTR_UNIT: str
36
29
  ATTR_VALUE: str
37
30
  AFFECTS_TO_ACTIVE_PROGRAM: str
38
31
  AFFECTS_TO_SELECTED_PROGRAM: str
@@ -1,19 +1,15 @@
1
- from .const import AFFECTS_TO_ACTIVE_PROGRAM as AFFECTS_TO_ACTIVE_PROGRAM, AFFECTS_TO_SELECTED_PROGRAM as AFFECTS_TO_SELECTED_PROGRAM, ATTR_AFFECTS_TO as ATTR_AFFECTS_TO, ATTR_KEY as ATTR_KEY, ATTR_PROGRAM as ATTR_PROGRAM, ATTR_UNIT as ATTR_UNIT, ATTR_VALUE as ATTR_VALUE, DOMAIN as DOMAIN, PROGRAM_ENUM_OPTIONS as PROGRAM_ENUM_OPTIONS, SERVICE_OPTION_ACTIVE as SERVICE_OPTION_ACTIVE, SERVICE_OPTION_SELECTED as SERVICE_OPTION_SELECTED, SERVICE_PAUSE_PROGRAM as SERVICE_PAUSE_PROGRAM, SERVICE_RESUME_PROGRAM as SERVICE_RESUME_PROGRAM, SERVICE_SELECT_PROGRAM as SERVICE_SELECT_PROGRAM, SERVICE_SETTING as SERVICE_SETTING, SERVICE_SET_PROGRAM_AND_OPTIONS as SERVICE_SET_PROGRAM_AND_OPTIONS, SERVICE_START_PROGRAM as SERVICE_START_PROGRAM, TRANSLATION_KEYS_PROGRAMS_MAP as TRANSLATION_KEYS_PROGRAMS_MAP
1
+ from .const import AFFECTS_TO_ACTIVE_PROGRAM as AFFECTS_TO_ACTIVE_PROGRAM, AFFECTS_TO_SELECTED_PROGRAM as AFFECTS_TO_SELECTED_PROGRAM, ATTR_AFFECTS_TO as ATTR_AFFECTS_TO, ATTR_KEY as ATTR_KEY, ATTR_PROGRAM as ATTR_PROGRAM, ATTR_VALUE as ATTR_VALUE, DOMAIN as DOMAIN, PROGRAM_ENUM_OPTIONS as PROGRAM_ENUM_OPTIONS, SERVICE_SETTING as SERVICE_SETTING, SERVICE_SET_PROGRAM_AND_OPTIONS as SERVICE_SET_PROGRAM_AND_OPTIONS, TRANSLATION_KEYS_PROGRAMS_MAP as TRANSLATION_KEYS_PROGRAMS_MAP
2
2
  from .coordinator import HomeConnectConfigEntry as HomeConnectConfigEntry
3
3
  from .utils import bsh_key_to_translation_key as bsh_key_to_translation_key, get_dict_from_home_connect_error as get_dict_from_home_connect_error
4
4
  from _typeshed import Incomplete
5
5
  from aiohomeconnect.client import Client as HomeConnectClient
6
- from aiohomeconnect.model import CommandKey
7
6
  from homeassistant.const import ATTR_DEVICE_ID as ATTR_DEVICE_ID
8
7
  from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, callback as callback
9
8
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
10
- from homeassistant.helpers.issue_registry import IssueSeverity as IssueSeverity, async_create_issue as async_create_issue
11
9
 
12
10
  CONFIG_SCHEMA: Incomplete
13
11
  PROGRAM_OPTIONS: Incomplete
14
12
  SERVICE_SETTING_SCHEMA: Incomplete
15
- SERVICE_OPTION_SCHEMA: Incomplete
16
- SERVICE_PROGRAM_SCHEMA: Incomplete
17
13
 
18
14
  def _require_program_or_at_least_one_option(data: dict) -> dict: ...
19
15
 
@@ -21,16 +17,7 @@ SERVICE_PROGRAM_AND_OPTIONS_SCHEMA: Incomplete
21
17
  SERVICE_COMMAND_SCHEMA: Incomplete
22
18
 
23
19
  async def _get_client_and_ha_id(hass: HomeAssistant, device_id: str) -> tuple[HomeConnectClient, str]: ...
24
- async def _async_service_program(call: ServiceCall, start: bool) -> None: ...
25
- async def _async_service_set_program_options(call: ServiceCall, active: bool) -> None: ...
26
- async def _async_service_command(call: ServiceCall, command_key: CommandKey) -> None: ...
27
- async def async_service_option_active(call: ServiceCall) -> None: ...
28
- async def async_service_option_selected(call: ServiceCall) -> None: ...
29
20
  async def async_service_setting(call: ServiceCall) -> None: ...
30
- async def async_service_pause_program(call: ServiceCall) -> None: ...
31
- async def async_service_resume_program(call: ServiceCall) -> None: ...
32
- async def async_service_select_program(call: ServiceCall) -> None: ...
33
21
  async def async_service_set_program_and_options(call: ServiceCall) -> None: ...
34
- async def async_service_start_program(call: ServiceCall) -> None: ...
35
22
  @callback
36
23
  def async_setup_services(hass: HomeAssistant) -> None: ...
@@ -9,7 +9,6 @@ _LOGGER: Incomplete
9
9
  FIRMWARE_REFRESH_INTERVAL: Incomplete
10
10
 
11
11
  class FirmwareUpdateCoordinator(DataUpdateCoordinator[FirmwareManifest]):
12
- hass: Incomplete
13
12
  session: Incomplete
14
13
  client: Incomplete
15
14
  def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry, session: ClientSession, url: str) -> None: ...
@@ -1,8 +1,9 @@
1
- from .const import DOMAIN as DOMAIN
1
+ from .const import DOMAIN as DOMAIN, RESULT_CANNOT_CONNECT as RESULT_CANNOT_CONNECT, RESULT_INVALID_AUTH as RESULT_INVALID_AUTH, RESULT_UNKNOWN_ERROR as RESULT_UNKNOWN_ERROR
2
2
  from _typeshed import Incomplete
3
3
  from collections.abc import Mapping
4
- from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
4
+ from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, SOURCE_USER as SOURCE_USER
5
5
  from homeassistant.const import CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME
6
+ from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo as ZeroconfServiceInfo
6
7
  from pyHomee import Homee
7
8
  from typing import Any
8
9
 
@@ -12,9 +13,14 @@ AUTH_SCHEMA: Incomplete
12
13
  class HomeeConfigFlow(ConfigFlow, domain=DOMAIN):
13
14
  VERSION: int
14
15
  homee: Homee
16
+ _host: str
17
+ _name: str
15
18
  _reauth_host: str
16
19
  _reauth_username: str
20
+ async def _connect_homee(self) -> dict[str, str]: ...
17
21
  async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
22
+ async def async_step_zeroconf(self, discovery_info: ZeroconfServiceInfo) -> ConfigFlowResult: ...
23
+ async def async_step_zeroconf_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
18
24
  async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
19
25
  async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
20
26
  async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
@@ -2,6 +2,9 @@ from _typeshed import Incomplete
2
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
+ RESULT_CANNOT_CONNECT: str
6
+ RESULT_INVALID_AUTH: str
7
+ RESULT_UNKNOWN_ERROR: str
5
8
  HOMEE_UNIT_TO_HA_UNIT: Incomplete
6
9
  OPEN_CLOSE_MAP: Incomplete
7
10
  OPEN_CLOSE_MAP_REVERSED: Incomplete
@@ -66,7 +66,7 @@ class HomeAccessory(Accessory):
66
66
  @ha_callback
67
67
  def async_update_state(self, new_state: State) -> None: ...
68
68
  @ha_callback
69
- def async_call_service(self, domain: str, service: str, service_data: dict[str, Any] | None, value: Any | None = None) -> None: ...
69
+ def async_call_service(self, domain: str, service: str, service_data: dict[str, Any], value: Any | None = None) -> None: ...
70
70
  @ha_callback
71
71
  def async_reload(self) -> None: ...
72
72
  @ha_callback
@@ -44,6 +44,8 @@ CONF_LINKED_HUMIDITY_SENSOR: str
44
44
  CONF_LINKED_OBSTRUCTION_SENSOR: str
45
45
  CONF_LINKED_PM25_SENSOR: str
46
46
  CONF_LINKED_TEMPERATURE_SENSOR: str
47
+ CONF_LINKED_VALVE_DURATION: str
48
+ CONF_LINKED_VALVE_END_TIME: str
47
49
  CONF_LOW_BATTERY_THRESHOLD: str
48
50
  CONF_MAX_FPS: str
49
51
  CONF_MAX_HEIGHT: str
@@ -196,10 +198,12 @@ CHAR_ON: str
196
198
  CHAR_OUTLET_IN_USE: str
197
199
  CHAR_POSITION_STATE: str
198
200
  CHAR_PROGRAMMABLE_SWITCH_EVENT: str
201
+ CHAR_REMAINING_DURATION: str
199
202
  CHAR_REMOTE_KEY: str
200
203
  CHAR_ROTATION_DIRECTION: str
201
204
  CHAR_ROTATION_SPEED: str
202
205
  CHAR_SATURATION: str
206
+ CHAR_SET_DURATION: str
203
207
  CHAR_SERIAL_NUMBER: str
204
208
  CHAR_SERVICE_LABEL_INDEX: str
205
209
  CHAR_SERVICE_LABEL_NAMESPACE: str
@@ -1,5 +1,5 @@
1
1
  from .accessories import HomeAccessory as HomeAccessory, HomeDriver as HomeDriver, TYPES as TYPES
2
- from .const import CHAR_ACTIVE as CHAR_ACTIVE, CHAR_CONFIGURED_NAME as CHAR_CONFIGURED_NAME, CHAR_IN_USE as CHAR_IN_USE, CHAR_NAME as CHAR_NAME, CHAR_ON as CHAR_ON, CHAR_OUTLET_IN_USE as CHAR_OUTLET_IN_USE, CHAR_VALVE_TYPE as CHAR_VALVE_TYPE, SERV_OUTLET as SERV_OUTLET, SERV_SWITCH as SERV_SWITCH, SERV_VALVE as SERV_VALVE, TYPE_FAUCET as TYPE_FAUCET, TYPE_SHOWER as TYPE_SHOWER, TYPE_SPRINKLER as TYPE_SPRINKLER, TYPE_VALVE as TYPE_VALVE
2
+ from .const import CHAR_ACTIVE as CHAR_ACTIVE, CHAR_CONFIGURED_NAME as CHAR_CONFIGURED_NAME, CHAR_IN_USE as CHAR_IN_USE, CHAR_NAME as CHAR_NAME, CHAR_ON as CHAR_ON, CHAR_OUTLET_IN_USE as CHAR_OUTLET_IN_USE, CHAR_REMAINING_DURATION as CHAR_REMAINING_DURATION, CHAR_SET_DURATION as CHAR_SET_DURATION, CHAR_VALVE_TYPE as CHAR_VALVE_TYPE, CONF_LINKED_VALVE_DURATION as CONF_LINKED_VALVE_DURATION, CONF_LINKED_VALVE_END_TIME as CONF_LINKED_VALVE_END_TIME, SERV_OUTLET as SERV_OUTLET, SERV_SWITCH as SERV_SWITCH, SERV_VALVE as SERV_VALVE, TYPE_FAUCET as TYPE_FAUCET, TYPE_SHOWER as TYPE_SHOWER, TYPE_SPRINKLER as TYPE_SPRINKLER, TYPE_VALVE as TYPE_VALVE
3
3
  from .util import cleanup_name_for_homekit as cleanup_name_for_homekit
4
4
  from _typeshed import Incomplete
5
5
  from homeassistant.components import button as button, input_button as input_button
@@ -57,13 +57,23 @@ class ValveBase(HomeAccessory):
57
57
  open_states: Incomplete
58
58
  on_service: Incomplete
59
59
  off_service: Incomplete
60
+ chars: Incomplete
61
+ linked_duration_entity: str | None
62
+ linked_end_time_entity: str | None
60
63
  char_active: Incomplete
61
64
  char_in_use: Incomplete
62
65
  char_valve_type: Incomplete
66
+ char_set_duration: Incomplete
67
+ char_remaining_duration: Incomplete
63
68
  def __init__(self, valve_type: str, open_states: set[str], on_service: str, off_service: str, *args: Any, **kwargs: Any) -> None: ...
64
69
  def set_state(self, value: bool) -> None: ...
65
70
  @callback
66
71
  def async_update_state(self, new_state: State) -> None: ...
72
+ def _update_duration_chars(self) -> None: ...
73
+ def set_duration(self, value: int) -> None: ...
74
+ def get_duration(self) -> int: ...
75
+ def get_remaining_duration(self) -> int: ...
76
+ def _get_entity_state(self, entity_id: str | None) -> str | None: ...
67
77
 
68
78
  class ValveSwitch(ValveBase):
69
79
  def __init__(self, hass: HomeAssistant, driver: HomeDriver, name: str, entity_id: str, aid: int, config: dict[str, Any], *args: Any) -> None: ...
@@ -1,8 +1,8 @@
1
1
  import socket
2
- from .const import AUDIO_CODEC_COPY as AUDIO_CODEC_COPY, AUDIO_CODEC_OPUS as AUDIO_CODEC_OPUS, CONF_AUDIO_CODEC as CONF_AUDIO_CODEC, CONF_AUDIO_MAP as CONF_AUDIO_MAP, CONF_AUDIO_PACKET_SIZE as CONF_AUDIO_PACKET_SIZE, CONF_FEATURE as CONF_FEATURE, CONF_FEATURE_LIST as CONF_FEATURE_LIST, CONF_LINKED_BATTERY_CHARGING_SENSOR as CONF_LINKED_BATTERY_CHARGING_SENSOR, CONF_LINKED_BATTERY_SENSOR as CONF_LINKED_BATTERY_SENSOR, CONF_LINKED_DOORBELL_SENSOR as CONF_LINKED_DOORBELL_SENSOR, CONF_LINKED_FILTER_CHANGE_INDICATION as CONF_LINKED_FILTER_CHANGE_INDICATION, CONF_LINKED_FILTER_LIFE_LEVEL as CONF_LINKED_FILTER_LIFE_LEVEL, CONF_LINKED_HUMIDITY_SENSOR as CONF_LINKED_HUMIDITY_SENSOR, CONF_LINKED_MOTION_SENSOR as CONF_LINKED_MOTION_SENSOR, CONF_LINKED_OBSTRUCTION_SENSOR as CONF_LINKED_OBSTRUCTION_SENSOR, CONF_LINKED_PM25_SENSOR as CONF_LINKED_PM25_SENSOR, CONF_LINKED_TEMPERATURE_SENSOR as CONF_LINKED_TEMPERATURE_SENSOR, CONF_LOW_BATTERY_THRESHOLD as CONF_LOW_BATTERY_THRESHOLD, CONF_MAX_FPS as CONF_MAX_FPS, CONF_MAX_HEIGHT as CONF_MAX_HEIGHT, CONF_MAX_WIDTH as CONF_MAX_WIDTH, CONF_STREAM_ADDRESS as CONF_STREAM_ADDRESS, CONF_STREAM_COUNT as CONF_STREAM_COUNT, CONF_STREAM_SOURCE as CONF_STREAM_SOURCE, CONF_SUPPORT_AUDIO as CONF_SUPPORT_AUDIO, CONF_THRESHOLD_CO as CONF_THRESHOLD_CO, CONF_THRESHOLD_CO2 as CONF_THRESHOLD_CO2, CONF_VIDEO_CODEC as CONF_VIDEO_CODEC, CONF_VIDEO_MAP as CONF_VIDEO_MAP, CONF_VIDEO_PACKET_SIZE as CONF_VIDEO_PACKET_SIZE, CONF_VIDEO_PROFILE_NAMES as CONF_VIDEO_PROFILE_NAMES, DEFAULT_AUDIO_CODEC as DEFAULT_AUDIO_CODEC, DEFAULT_AUDIO_MAP as DEFAULT_AUDIO_MAP, DEFAULT_AUDIO_PACKET_SIZE as DEFAULT_AUDIO_PACKET_SIZE, DEFAULT_LOW_BATTERY_THRESHOLD as DEFAULT_LOW_BATTERY_THRESHOLD, DEFAULT_MAX_FPS as DEFAULT_MAX_FPS, DEFAULT_MAX_HEIGHT as DEFAULT_MAX_HEIGHT, DEFAULT_MAX_WIDTH as DEFAULT_MAX_WIDTH, DEFAULT_STREAM_COUNT as DEFAULT_STREAM_COUNT, DEFAULT_SUPPORT_AUDIO as DEFAULT_SUPPORT_AUDIO, DEFAULT_VIDEO_CODEC as DEFAULT_VIDEO_CODEC, DEFAULT_VIDEO_MAP as DEFAULT_VIDEO_MAP, DEFAULT_VIDEO_PACKET_SIZE as DEFAULT_VIDEO_PACKET_SIZE, DEFAULT_VIDEO_PROFILE_NAMES as DEFAULT_VIDEO_PROFILE_NAMES, DOMAIN as DOMAIN, FEATURE_ON_OFF as FEATURE_ON_OFF, FEATURE_PLAY_PAUSE as FEATURE_PLAY_PAUSE, FEATURE_PLAY_STOP as FEATURE_PLAY_STOP, FEATURE_TOGGLE_MUTE as FEATURE_TOGGLE_MUTE, MAX_NAME_LENGTH as MAX_NAME_LENGTH, TYPE_AIR_PURIFIER as TYPE_AIR_PURIFIER, TYPE_FAN as TYPE_FAN, TYPE_FAUCET as TYPE_FAUCET, TYPE_OUTLET as TYPE_OUTLET, TYPE_SHOWER as TYPE_SHOWER, TYPE_SPRINKLER as TYPE_SPRINKLER, TYPE_SWITCH as TYPE_SWITCH, TYPE_VALVE as TYPE_VALVE, VIDEO_CODEC_COPY as VIDEO_CODEC_COPY, VIDEO_CODEC_H264_OMX as VIDEO_CODEC_H264_OMX, VIDEO_CODEC_H264_QSV as VIDEO_CODEC_H264_QSV, VIDEO_CODEC_H264_V4L2M2M as VIDEO_CODEC_H264_V4L2M2M, VIDEO_CODEC_LIBX264 as VIDEO_CODEC_LIBX264
2
+ from .const import AUDIO_CODEC_COPY as AUDIO_CODEC_COPY, AUDIO_CODEC_OPUS as AUDIO_CODEC_OPUS, CONF_AUDIO_CODEC as CONF_AUDIO_CODEC, CONF_AUDIO_MAP as CONF_AUDIO_MAP, CONF_AUDIO_PACKET_SIZE as CONF_AUDIO_PACKET_SIZE, CONF_FEATURE as CONF_FEATURE, CONF_FEATURE_LIST as CONF_FEATURE_LIST, CONF_LINKED_BATTERY_CHARGING_SENSOR as CONF_LINKED_BATTERY_CHARGING_SENSOR, CONF_LINKED_BATTERY_SENSOR as CONF_LINKED_BATTERY_SENSOR, CONF_LINKED_DOORBELL_SENSOR as CONF_LINKED_DOORBELL_SENSOR, CONF_LINKED_FILTER_CHANGE_INDICATION as CONF_LINKED_FILTER_CHANGE_INDICATION, CONF_LINKED_FILTER_LIFE_LEVEL as CONF_LINKED_FILTER_LIFE_LEVEL, CONF_LINKED_HUMIDITY_SENSOR as CONF_LINKED_HUMIDITY_SENSOR, CONF_LINKED_MOTION_SENSOR as CONF_LINKED_MOTION_SENSOR, CONF_LINKED_OBSTRUCTION_SENSOR as CONF_LINKED_OBSTRUCTION_SENSOR, CONF_LINKED_PM25_SENSOR as CONF_LINKED_PM25_SENSOR, CONF_LINKED_TEMPERATURE_SENSOR as CONF_LINKED_TEMPERATURE_SENSOR, CONF_LINKED_VALVE_DURATION as CONF_LINKED_VALVE_DURATION, CONF_LINKED_VALVE_END_TIME as CONF_LINKED_VALVE_END_TIME, CONF_LOW_BATTERY_THRESHOLD as CONF_LOW_BATTERY_THRESHOLD, CONF_MAX_FPS as CONF_MAX_FPS, CONF_MAX_HEIGHT as CONF_MAX_HEIGHT, CONF_MAX_WIDTH as CONF_MAX_WIDTH, CONF_STREAM_ADDRESS as CONF_STREAM_ADDRESS, CONF_STREAM_COUNT as CONF_STREAM_COUNT, CONF_STREAM_SOURCE as CONF_STREAM_SOURCE, CONF_SUPPORT_AUDIO as CONF_SUPPORT_AUDIO, CONF_THRESHOLD_CO as CONF_THRESHOLD_CO, CONF_THRESHOLD_CO2 as CONF_THRESHOLD_CO2, CONF_VIDEO_CODEC as CONF_VIDEO_CODEC, CONF_VIDEO_MAP as CONF_VIDEO_MAP, CONF_VIDEO_PACKET_SIZE as CONF_VIDEO_PACKET_SIZE, CONF_VIDEO_PROFILE_NAMES as CONF_VIDEO_PROFILE_NAMES, DEFAULT_AUDIO_CODEC as DEFAULT_AUDIO_CODEC, DEFAULT_AUDIO_MAP as DEFAULT_AUDIO_MAP, DEFAULT_AUDIO_PACKET_SIZE as DEFAULT_AUDIO_PACKET_SIZE, DEFAULT_LOW_BATTERY_THRESHOLD as DEFAULT_LOW_BATTERY_THRESHOLD, DEFAULT_MAX_FPS as DEFAULT_MAX_FPS, DEFAULT_MAX_HEIGHT as DEFAULT_MAX_HEIGHT, DEFAULT_MAX_WIDTH as DEFAULT_MAX_WIDTH, DEFAULT_STREAM_COUNT as DEFAULT_STREAM_COUNT, DEFAULT_SUPPORT_AUDIO as DEFAULT_SUPPORT_AUDIO, DEFAULT_VIDEO_CODEC as DEFAULT_VIDEO_CODEC, DEFAULT_VIDEO_MAP as DEFAULT_VIDEO_MAP, DEFAULT_VIDEO_PACKET_SIZE as DEFAULT_VIDEO_PACKET_SIZE, DEFAULT_VIDEO_PROFILE_NAMES as DEFAULT_VIDEO_PROFILE_NAMES, DOMAIN as DOMAIN, FEATURE_ON_OFF as FEATURE_ON_OFF, FEATURE_PLAY_PAUSE as FEATURE_PLAY_PAUSE, FEATURE_PLAY_STOP as FEATURE_PLAY_STOP, FEATURE_TOGGLE_MUTE as FEATURE_TOGGLE_MUTE, MAX_NAME_LENGTH as MAX_NAME_LENGTH, TYPE_AIR_PURIFIER as TYPE_AIR_PURIFIER, TYPE_FAN as TYPE_FAN, TYPE_FAUCET as TYPE_FAUCET, TYPE_OUTLET as TYPE_OUTLET, TYPE_SHOWER as TYPE_SHOWER, TYPE_SPRINKLER as TYPE_SPRINKLER, TYPE_SWITCH as TYPE_SWITCH, TYPE_VALVE as TYPE_VALVE, VIDEO_CODEC_COPY as VIDEO_CODEC_COPY, VIDEO_CODEC_H264_OMX as VIDEO_CODEC_H264_OMX, VIDEO_CODEC_H264_QSV as VIDEO_CODEC_H264_QSV, VIDEO_CODEC_H264_V4L2M2M as VIDEO_CODEC_H264_V4L2M2M, VIDEO_CODEC_LIBX264 as VIDEO_CODEC_LIBX264
3
3
  from .models import HomeKitConfigEntry as HomeKitConfigEntry
4
4
  from _typeshed import Incomplete
5
- from homeassistant.components import binary_sensor as binary_sensor, media_player as media_player, persistent_notification as persistent_notification, sensor as sensor
5
+ from homeassistant.components import binary_sensor as binary_sensor, input_number as input_number, media_player as media_player, persistent_notification as persistent_notification, sensor as sensor
6
6
  from homeassistant.components.media_player import MediaPlayerDeviceClass as MediaPlayerDeviceClass, MediaPlayerEntityFeature as MediaPlayerEntityFeature
7
7
  from homeassistant.components.remote import RemoteEntityFeature as RemoteEntityFeature
8
8
  from homeassistant.const import ATTR_CODE as ATTR_CODE, ATTR_DEVICE_CLASS as ATTR_DEVICE_CLASS, ATTR_SUPPORTED_FEATURES as ATTR_SUPPORTED_FEATURES, CONF_NAME as CONF_NAME, CONF_PORT as CONF_PORT, CONF_TYPE as CONF_TYPE, UnitOfTemperature as UnitOfTemperature
@@ -31,6 +31,7 @@ LOCK_SCHEMA: Incomplete
31
31
  MEDIA_PLAYER_SCHEMA: Incomplete
32
32
  SWITCH_TYPE_SCHEMA: Incomplete
33
33
  SENSOR_SCHEMA: Incomplete
34
+ VALVE_SCHEMA: Incomplete
34
35
  HOMEKIT_CHAR_TRANSLATIONS: Incomplete
35
36
 
36
37
  def validate_entity_config(values: dict) -> dict[str, dict]: ...
@@ -1,10 +1,10 @@
1
- from .const import ADMIN_SERVICES as ADMIN_SERVICES, ALL_KEYS as ALL_KEYS, ATTR_CONFIG_ENTRY_ID as ATTR_CONFIG_ENTRY_ID, CONF_MANUFACTURER as CONF_MANUFACTURER, CONF_UNAUTHENTICATED_MODE as CONF_UNAUTHENTICATED_MODE, CONF_UPNP_UDN as CONF_UPNP_UDN, CONNECTION_TIMEOUT as CONNECTION_TIMEOUT, DEFAULT_DEVICE_NAME as DEFAULT_DEVICE_NAME, DEFAULT_MANUFACTURER as DEFAULT_MANUFACTURER, DEFAULT_NOTIFY_SERVICE_NAME as DEFAULT_NOTIFY_SERVICE_NAME, DOMAIN as DOMAIN, KEY_DEVICE_BASIC_INFORMATION as KEY_DEVICE_BASIC_INFORMATION, KEY_DEVICE_INFORMATION as KEY_DEVICE_INFORMATION, KEY_DEVICE_SIGNAL as KEY_DEVICE_SIGNAL, KEY_DIALUP_MOBILE_DATASWITCH as KEY_DIALUP_MOBILE_DATASWITCH, KEY_LAN_HOST_INFO as KEY_LAN_HOST_INFO, KEY_MONITORING_CHECK_NOTIFICATIONS as KEY_MONITORING_CHECK_NOTIFICATIONS, KEY_MONITORING_MONTH_STATISTICS as KEY_MONITORING_MONTH_STATISTICS, KEY_MONITORING_STATUS as KEY_MONITORING_STATUS, KEY_MONITORING_TRAFFIC_STATISTICS as KEY_MONITORING_TRAFFIC_STATISTICS, KEY_NET_CURRENT_PLMN as KEY_NET_CURRENT_PLMN, KEY_NET_NET_MODE as KEY_NET_NET_MODE, KEY_SMS_SMS_COUNT as KEY_SMS_SMS_COUNT, KEY_WLAN_HOST_LIST as KEY_WLAN_HOST_LIST, KEY_WLAN_WIFI_FEATURE_SWITCH as KEY_WLAN_WIFI_FEATURE_SWITCH, KEY_WLAN_WIFI_GUEST_NETWORK_SWITCH as KEY_WLAN_WIFI_GUEST_NETWORK_SWITCH, SERVICE_RESUME_INTEGRATION as SERVICE_RESUME_INTEGRATION, SERVICE_SUSPEND_INTEGRATION as SERVICE_SUSPEND_INTEGRATION, UPDATE_SIGNAL as UPDATE_SIGNAL
1
+ from .const import ADMIN_SERVICES as ADMIN_SERVICES, ALL_KEYS as ALL_KEYS, CONF_MANUFACTURER as CONF_MANUFACTURER, CONF_UNAUTHENTICATED_MODE as CONF_UNAUTHENTICATED_MODE, CONF_UPNP_UDN as CONF_UPNP_UDN, CONNECTION_TIMEOUT as CONNECTION_TIMEOUT, DEFAULT_DEVICE_NAME as DEFAULT_DEVICE_NAME, DEFAULT_MANUFACTURER as DEFAULT_MANUFACTURER, DEFAULT_NOTIFY_SERVICE_NAME as DEFAULT_NOTIFY_SERVICE_NAME, DOMAIN as DOMAIN, KEY_DEVICE_BASIC_INFORMATION as KEY_DEVICE_BASIC_INFORMATION, KEY_DEVICE_INFORMATION as KEY_DEVICE_INFORMATION, KEY_DEVICE_SIGNAL as KEY_DEVICE_SIGNAL, KEY_DIALUP_MOBILE_DATASWITCH as KEY_DIALUP_MOBILE_DATASWITCH, KEY_LAN_HOST_INFO as KEY_LAN_HOST_INFO, KEY_MONITORING_CHECK_NOTIFICATIONS as KEY_MONITORING_CHECK_NOTIFICATIONS, KEY_MONITORING_MONTH_STATISTICS as KEY_MONITORING_MONTH_STATISTICS, KEY_MONITORING_STATUS as KEY_MONITORING_STATUS, KEY_MONITORING_TRAFFIC_STATISTICS as KEY_MONITORING_TRAFFIC_STATISTICS, KEY_NET_CURRENT_PLMN as KEY_NET_CURRENT_PLMN, KEY_NET_NET_MODE as KEY_NET_NET_MODE, KEY_SMS_SMS_COUNT as KEY_SMS_SMS_COUNT, KEY_WLAN_HOST_LIST as KEY_WLAN_HOST_LIST, KEY_WLAN_WIFI_FEATURE_SWITCH as KEY_WLAN_WIFI_FEATURE_SWITCH, KEY_WLAN_WIFI_GUEST_NETWORK_SWITCH as KEY_WLAN_WIFI_GUEST_NETWORK_SWITCH, SERVICE_RESUME_INTEGRATION as SERVICE_RESUME_INTEGRATION, SERVICE_SUSPEND_INTEGRATION as SERVICE_SUSPEND_INTEGRATION, UPDATE_SIGNAL as UPDATE_SIGNAL
2
2
  from .utils import get_device_macs as get_device_macs, non_verifying_requests_session as non_verifying_requests_session
3
3
  from _typeshed import Incomplete
4
4
  from collections.abc import Callable as Callable
5
5
  from dataclasses import dataclass, field
6
6
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
- from homeassistant.const import ATTR_HW_VERSION as ATTR_HW_VERSION, ATTR_MODEL as ATTR_MODEL, ATTR_SW_VERSION as ATTR_SW_VERSION, CONF_MAC as CONF_MAC, CONF_NAME as CONF_NAME, CONF_PASSWORD as CONF_PASSWORD, CONF_RECIPIENT as CONF_RECIPIENT, CONF_URL as CONF_URL, CONF_USERNAME as CONF_USERNAME, CONF_VERIFY_SSL as CONF_VERIFY_SSL, EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP, Platform as Platform
7
+ from homeassistant.const import ATTR_CONFIG_ENTRY_ID as ATTR_CONFIG_ENTRY_ID, ATTR_HW_VERSION as ATTR_HW_VERSION, ATTR_MODEL as ATTR_MODEL, ATTR_SW_VERSION as ATTR_SW_VERSION, CONF_MAC as CONF_MAC, CONF_NAME as CONF_NAME, CONF_PASSWORD as CONF_PASSWORD, CONF_RECIPIENT as CONF_RECIPIENT, CONF_URL as CONF_URL, CONF_USERNAME as CONF_USERNAME, CONF_VERIFY_SSL as CONF_VERIFY_SSL, EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP, Platform as Platform
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall
9
9
  from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
10
10
  from homeassistant.helpers import discovery as discovery
@@ -1,7 +1,6 @@
1
1
  from _typeshed import Incomplete
2
2
 
3
3
  DOMAIN: str
4
- ATTR_CONFIG_ENTRY_ID: str
5
4
  CONF_MANUFACTURER: str
6
5
  CONF_TRACK_WIRED_CLIENTS: str
7
6
  CONF_UNAUTHENTICATED_MODE: str
@@ -1,8 +1,8 @@
1
1
  from . import Router as Router
2
- from .const import ATTR_CONFIG_ENTRY_ID as ATTR_CONFIG_ENTRY_ID, DOMAIN as DOMAIN
2
+ from .const import DOMAIN as DOMAIN
3
3
  from _typeshed import Incomplete
4
4
  from homeassistant.components.notify import ATTR_TARGET as ATTR_TARGET, BaseNotificationService as BaseNotificationService
5
- from homeassistant.const import CONF_RECIPIENT as CONF_RECIPIENT
5
+ from homeassistant.const import ATTR_CONFIG_ENTRY_ID as ATTR_CONFIG_ENTRY_ID, CONF_RECIPIENT as CONF_RECIPIENT
6
6
  from homeassistant.core import HomeAssistant as HomeAssistant
7
7
  from homeassistant.helpers.typing import ConfigType as ConfigType, DiscoveryInfoType as DiscoveryInfoType
8
8
  from typing import Any
@@ -14,11 +14,15 @@ from typing import Any
14
14
  _LOGGER: Incomplete
15
15
  PARALLEL_UPDATES: int
16
16
 
17
+ async def async_reset_cutting_blade_usage_time(session: AutomowerSession, mower_id: str) -> None: ...
18
+ def reset_cutting_blade_usage_time_availability(data: MowerAttributes) -> bool: ...
19
+
17
20
  @dataclass(frozen=True, kw_only=True)
18
21
  class AutomowerButtonEntityDescription(ButtonEntityDescription):
19
22
  available_fn: Callable[[MowerAttributes], bool] = ...
20
23
  exists_fn: Callable[[MowerAttributes], bool] = ...
21
24
  press_fn: Callable[[AutomowerSession, str], Awaitable[Any]]
25
+ poll_after_sending: bool = ...
22
26
 
23
27
  MOWER_BUTTON_TYPES: tuple[AutomowerButtonEntityDescription, ...]
24
28
 
@@ -6,3 +6,4 @@ NAME: str
6
6
  OAUTH2_AUTHORIZE: str
7
7
  OAUTH2_TOKEN: str
8
8
  ERROR_STATES: Incomplete
9
+ ERROR_KEYS: Incomplete
@@ -1,8 +1,10 @@
1
+ import asyncio
1
2
  from .const import DOMAIN as DOMAIN
2
3
  from _typeshed import Incomplete
3
4
  from aioautomower.model import MowerDictionary
4
5
  from aioautomower.session import AutomowerSession as AutomowerSession
5
6
  from collections.abc import Callable as Callable
7
+ from datetime import datetime
6
8
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
9
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
8
10
  from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed
@@ -13,6 +15,7 @@ _LOGGER: Incomplete
13
15
  MAX_WS_RECONNECT_TIME: int
14
16
  SCAN_INTERVAL: Incomplete
15
17
  DEFAULT_RECONNECT_TIME: int
18
+ PING_INTERVAL: int
16
19
  type AutomowerConfigEntry = ConfigEntry[AutomowerDataUpdateCoordinator]
17
20
 
18
21
  class AutomowerDataUpdateCoordinator(DataUpdateCoordinator[MowerDictionary]):
@@ -23,11 +26,16 @@ class AutomowerDataUpdateCoordinator(DataUpdateCoordinator[MowerDictionary]):
23
26
  new_devices_callbacks: list[Callable[[set[str]], None]]
24
27
  new_zones_callbacks: list[Callable[[str, set[str]], None]]
25
28
  new_areas_callbacks: list[Callable[[str, set[int]], None]]
29
+ pong: datetime | None
30
+ websocket_alive: bool
31
+ websocket_callbacks: list[Callable[[bool], None]]
32
+ _watchdog_task: asyncio.Task | None
26
33
  def __init__(self, hass: HomeAssistant, config_entry: AutomowerConfigEntry, api: AutomowerSession) -> None: ...
27
34
  @override
28
35
  @callback
29
36
  def async_update_listeners(self) -> None: ...
30
37
  async def _async_update_data(self) -> MowerDictionary: ...
38
+ update_interval: Incomplete
31
39
  @callback
32
40
  def _on_data_update(self) -> None: ...
33
41
  @callback
@@ -38,6 +46,8 @@ class AutomowerDataUpdateCoordinator(DataUpdateCoordinator[MowerDictionary]):
38
46
  @callback
39
47
  def async_set_updated_data(self, data: MowerDictionary) -> None: ...
40
48
  async def client_listen(self, hass: HomeAssistant, entry: AutomowerConfigEntry, automower_client: AutomowerSession) -> None: ...
49
+ def _should_poll(self) -> bool: ...
50
+ async def _pong_watchdog(self) -> None: ...
41
51
  def _async_add_remove_devices(self) -> None: ...
42
52
  def _async_add_remove_stay_out_zones(self) -> None: ...
43
53
  def _async_add_remove_work_areas(self) -> None: ...
@@ -0,0 +1,35 @@
1
+ from . import AutomowerConfigEntry as AutomowerConfigEntry
2
+ from .const import ERROR_KEYS as ERROR_KEYS
3
+ from .coordinator import AutomowerDataUpdateCoordinator as AutomowerDataUpdateCoordinator
4
+ from .entity import AutomowerBaseEntity as AutomowerBaseEntity
5
+ from _typeshed import Incomplete
6
+ from aioautomower.model import SingleMessageData as SingleMessageData
7
+ from collections.abc import Callable as Callable
8
+ from homeassistant.components.event import EventEntity as EventEntity, EventEntityDescription as EventEntityDescription
9
+ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
10
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
+
12
+ _LOGGER: Incomplete
13
+ PARALLEL_UPDATES: int
14
+ ATTR_SEVERITY: str
15
+ ATTR_LATITUDE: str
16
+ ATTR_LONGITUDE: str
17
+ ATTR_DATE_TIME: str
18
+
19
+ async def async_setup_entry(hass: HomeAssistant, config_entry: AutomowerConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
20
+
21
+ class AutomowerMessageEventEntity(AutomowerBaseEntity, EventEntity):
22
+ entity_description: EventEntityDescription
23
+ _message_cb: Callable[[SingleMessageData], None]
24
+ _attr_translation_key: str
25
+ _attr_event_types = ERROR_KEYS
26
+ _attr_unique_id: Incomplete
27
+ websocket_alive: bool
28
+ def __init__(self, mower_id: str, coordinator: AutomowerDataUpdateCoordinator) -> None: ...
29
+ @property
30
+ def available(self) -> bool: ...
31
+ @callback
32
+ def _handle(self, msg: SingleMessageData) -> None: ...
33
+ async def async_added_to_hass(self) -> None: ...
34
+ async def async_will_remove_from_hass(self) -> None: ...
35
+ def _handle_websocket_update(self, is_alive: bool) -> None: ...
@@ -1,5 +1,5 @@
1
1
  from . import AutomowerConfigEntry as AutomowerConfigEntry
2
- from .const import ERROR_STATES as ERROR_STATES
2
+ from .const import ERROR_KEYS as ERROR_KEYS, ERROR_STATES as ERROR_STATES
3
3
  from .coordinator import AutomowerDataUpdateCoordinator as AutomowerDataUpdateCoordinator
4
4
  from .entity import AutomowerBaseEntity as AutomowerBaseEntity, WorkAreaAvailableEntity as WorkAreaAvailableEntity, _work_area_translation_key as _work_area_translation_key
5
5
  from _typeshed import Incomplete
@@ -17,7 +17,6 @@ from typing import Any
17
17
  _LOGGER: Incomplete
18
18
  PARALLEL_UPDATES: int
19
19
  ATTR_WORK_AREA_ID_ASSIGNMENT: str
20
- ERROR_KEYS: Incomplete
21
20
  ERROR_KEY_LIST: Incomplete
22
21
  INACTIVE_REASONS: list
23
22
  RESTRICTED_REASONS: list
@@ -10,5 +10,4 @@ PLATFORMS: list[Platform]
10
10
  _LOGGER: Incomplete
11
11
 
12
12
  async def async_setup_entry(hass: HomeAssistant, entry: IdasenDeskConfigEntry) -> bool: ...
13
- async def _async_update_listener(hass: HomeAssistant, entry: IdasenDeskConfigEntry) -> None: ...
14
13
  async def async_unload_entry(hass: HomeAssistant, entry: IdasenDeskConfigEntry) -> bool: ...
@@ -1,5 +1,6 @@
1
1
  from .const import CONF_CANDLE_LIGHT_MINUTES as CONF_CANDLE_LIGHT_MINUTES, CONF_DIASPORA as CONF_DIASPORA, CONF_HAVDALAH_OFFSET_MINUTES as CONF_HAVDALAH_OFFSET_MINUTES, DEFAULT_CANDLE_LIGHT as DEFAULT_CANDLE_LIGHT, DEFAULT_DIASPORA as DEFAULT_DIASPORA, DEFAULT_HAVDALAH_OFFSET_MINUTES as DEFAULT_HAVDALAH_OFFSET_MINUTES, DEFAULT_LANGUAGE as DEFAULT_LANGUAGE, DOMAIN as DOMAIN
2
- from .entity import JewishCalendarConfigEntry as JewishCalendarConfigEntry, JewishCalendarData as JewishCalendarData
2
+ from .coordinator import JewishCalendarData as JewishCalendarData, JewishCalendarUpdateCoordinator as JewishCalendarUpdateCoordinator
3
+ from .entity import JewishCalendarConfigEntry as JewishCalendarConfigEntry
3
4
  from .services import async_setup_services as async_setup_services
4
5
  from _typeshed import Incomplete
5
6
  from homeassistant.const import CONF_ELEVATION as CONF_ELEVATION, CONF_LANGUAGE as CONF_LANGUAGE, CONF_LATITUDE as CONF_LATITUDE, CONF_LONGITUDE as CONF_LONGITUDE, CONF_TIME_ZONE as CONF_TIME_ZONE, Platform as Platform
@@ -0,0 +1,41 @@
1
+ import datetime as dt
2
+ from .const import DOMAIN as DOMAIN
3
+ from _typeshed import Incomplete
4
+ from dataclasses import dataclass
5
+ from hdate import HDateInfo, Location as Location, Zmanim
6
+ from hdate.translator import Language as Language
7
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
8
+ from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, HomeAssistant as HomeAssistant, callback as callback
9
+ from homeassistant.helpers import event as event
10
+ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator
11
+
12
+ _LOGGER: Incomplete
13
+ type JewishCalendarConfigEntry = ConfigEntry[JewishCalendarUpdateCoordinator]
14
+
15
+ @dataclass
16
+ class JewishCalendarData:
17
+ language: Language
18
+ diaspora: bool
19
+ location: Location
20
+ candle_lighting_offset: int
21
+ havdalah_offset: int
22
+ dateinfo: HDateInfo | None = ...
23
+ zmanim: Zmanim | None = ...
24
+
25
+ class JewishCalendarUpdateCoordinator(DataUpdateCoordinator[JewishCalendarData]):
26
+ config_entry: JewishCalendarConfigEntry
27
+ event_unsub: CALLBACK_TYPE | None
28
+ data: Incomplete
29
+ _unsub_update: CALLBACK_TYPE | None
30
+ def __init__(self, hass: HomeAssistant, config_entry: JewishCalendarConfigEntry, data: JewishCalendarData) -> None: ...
31
+ async def _async_update_data(self) -> JewishCalendarData: ...
32
+ @callback
33
+ def async_schedule_future_update(self) -> None: ...
34
+ @callback
35
+ def _handle_midnight_update(self, _now: dt.datetime) -> None: ...
36
+ async def async_shutdown(self) -> None: ...
37
+ def make_zmanim(self, date: dt.date) -> Zmanim: ...
38
+ @property
39
+ def zmanim(self) -> Zmanim: ...
40
+ @property
41
+ def dateinfo(self) -> HDateInfo: ...
@@ -1,44 +1,24 @@
1
1
  import abc
2
2
  import datetime as dt
3
3
  from .const import DOMAIN as DOMAIN
4
+ from .coordinator import JewishCalendarConfigEntry as JewishCalendarConfigEntry, JewishCalendarUpdateCoordinator as JewishCalendarUpdateCoordinator
4
5
  from _typeshed import Incomplete
5
6
  from abc import abstractmethod
6
- from dataclasses import dataclass
7
- from hdate import HDateInfo, Location as Location, Zmanim
8
- from hdate.translator import Language as Language
9
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
+ from hdate import Zmanim as Zmanim
10
8
  from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, callback as callback
11
9
  from homeassistant.helpers import event as event
12
10
  from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
13
- from homeassistant.helpers.entity import Entity as Entity, EntityDescription as EntityDescription
11
+ from homeassistant.helpers.entity import EntityDescription as EntityDescription
12
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
14
13
 
15
- _LOGGER: Incomplete
16
- type JewishCalendarConfigEntry = ConfigEntry[JewishCalendarData]
17
-
18
- @dataclass
19
- class JewishCalendarDataResults:
20
- dateinfo: HDateInfo
21
- zmanim: Zmanim
22
-
23
- @dataclass
24
- class JewishCalendarData:
25
- language: Language
26
- diaspora: bool
27
- location: Location
28
- candle_lighting_offset: int
29
- havdalah_offset: int
30
- results: JewishCalendarDataResults | None = ...
31
-
32
- class JewishCalendarEntity(Entity, metaclass=abc.ABCMeta):
14
+ class JewishCalendarEntity(CoordinatorEntity[JewishCalendarUpdateCoordinator], metaclass=abc.ABCMeta):
33
15
  _attr_has_entity_name: bool
34
16
  _attr_should_poll: bool
35
17
  _update_unsub: CALLBACK_TYPE | None
36
18
  entity_description: Incomplete
37
19
  _attr_unique_id: Incomplete
38
20
  _attr_device_info: Incomplete
39
- data: Incomplete
40
21
  def __init__(self, config_entry: JewishCalendarConfigEntry, description: EntityDescription) -> None: ...
41
- def make_zmanim(self, date: dt.date) -> Zmanim: ...
42
22
  async def async_added_to_hass(self) -> None: ...
43
23
  async def async_will_remove_from_hass(self) -> None: ...
44
24
  @abstractmethod
@@ -46,4 +26,3 @@ class JewishCalendarEntity(Entity, metaclass=abc.ABCMeta):
46
26
  def _schedule_update(self) -> None: ...
47
27
  @callback
48
28
  def _update(self, now: dt.datetime | None = None) -> None: ...
49
- def create_results(self, now: dt.datetime | None = None) -> None: ...
@@ -38,7 +38,7 @@ class JewishCalendarBaseSensor(JewishCalendarEntity, SensorEntity):
38
38
  _attr_entity_category: Incomplete
39
39
  entity_description: JewishCalendarBaseSensorDescription
40
40
  def _update_times(self, zmanim: Zmanim) -> list[dt.datetime | None]: ...
41
- def get_dateinfo(self, now: dt.datetime | None = None) -> HDateInfo: ...
41
+ def get_dateinfo(self) -> HDateInfo: ...
42
42
 
43
43
  class JewishCalendarSensor(JewishCalendarBaseSensor):
44
44
  entity_description: JewishCalendarSensorDescription
@@ -4,19 +4,20 @@ from .knx_module import KNXModule as KNXModule
4
4
  from .schema import SceneSchema as SceneSchema
5
5
  from _typeshed import Incomplete
6
6
  from homeassistant import config_entries as config_entries
7
- from homeassistant.components.scene import Scene as Scene
7
+ from homeassistant.components.scene import BaseScene as BaseScene
8
8
  from homeassistant.const import CONF_ENTITY_CATEGORY as CONF_ENTITY_CATEGORY, CONF_NAME as CONF_NAME, Platform as Platform
9
9
  from homeassistant.core import HomeAssistant as HomeAssistant
10
10
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
11
  from homeassistant.helpers.typing import ConfigType as ConfigType
12
12
  from typing import Any
13
- from xknx.devices import Scene as XknxScene
13
+ from xknx.devices import Device as XknxDevice, Scene as XknxScene
14
14
 
15
15
  async def async_setup_entry(hass: HomeAssistant, config_entry: config_entries.ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
16
16
 
17
- class KNXScene(KnxYamlEntity, Scene):
17
+ class KNXScene(KnxYamlEntity, BaseScene):
18
18
  _device: XknxScene
19
19
  _attr_entity_category: Incomplete
20
20
  _attr_unique_id: Incomplete
21
21
  def __init__(self, knx_module: KNXModule, config: ConfigType) -> None: ...
22
- async def async_activate(self, **kwargs: Any) -> None: ...
22
+ async def _async_activate(self, **kwargs: Any) -> None: ...
23
+ def after_update_callback(self, device: XknxDevice) -> None: ...