homeassistant-stubs 2024.12.5__py3-none-any.whl → 2025.1.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.
- homeassistant-stubs/auth/__init__.pyi +1 -1
- homeassistant-stubs/auth/mfa_modules/__init__.pyi +6 -4
- homeassistant-stubs/auth/mfa_modules/notify.pyi +2 -3
- homeassistant-stubs/auth/mfa_modules/totp.pyi +2 -3
- homeassistant-stubs/auth/providers/__init__.pyi +6 -4
- homeassistant-stubs/auth/providers/command_line.pyi +2 -2
- homeassistant-stubs/auth/providers/homeassistant.pyi +2 -2
- homeassistant-stubs/auth/providers/insecure_example.pyi +2 -2
- homeassistant-stubs/auth/providers/trusted_networks.pyi +2 -2
- homeassistant-stubs/backup_restore.pyi +11 -4
- homeassistant-stubs/components/abode/light.pyi +4 -3
- homeassistant-stubs/components/acaia/__init__.pyi +9 -0
- homeassistant-stubs/components/acaia/binary_sensor.pyi +24 -0
- homeassistant-stubs/components/acaia/button.pyi +24 -0
- homeassistant-stubs/components/acaia/config_flow.pyi +18 -0
- homeassistant-stubs/components/acaia/const.pyi +2 -0
- homeassistant-stubs/components/acaia/coordinator.pyi +19 -0
- homeassistant-stubs/components/{stookalert → acaia}/diagnostics.pyi +2 -3
- homeassistant-stubs/components/acaia/entity.pyi +17 -0
- homeassistant-stubs/components/acaia/sensor.pyi +44 -0
- homeassistant-stubs/components/adax/climate.pyi +0 -1
- homeassistant-stubs/components/airtouch5/climate.pyi +0 -1
- homeassistant-stubs/components/airzone/climate.pyi +0 -1
- homeassistant-stubs/components/airzone_cloud/climate.pyi +3 -2
- homeassistant-stubs/components/alarm_control_panel/__init__.pyi +1 -6
- homeassistant-stubs/components/alarm_control_panel/const.pyi +0 -14
- homeassistant-stubs/components/analytics_insights/config_flow.pyi +3 -2
- homeassistant-stubs/components/autarco/__init__.pyi +1 -0
- homeassistant-stubs/components/autarco/config_flow.pyi +4 -0
- homeassistant-stubs/components/autarco/coordinator.pyi +1 -0
- homeassistant-stubs/components/automation/__init__.pyi +1 -10
- homeassistant-stubs/components/backup/__init__.pyi +4 -11
- homeassistant-stubs/components/backup/agent.pyi +35 -0
- homeassistant-stubs/components/backup/backup.pyi +29 -0
- homeassistant-stubs/components/backup/config.pyi +117 -0
- homeassistant-stubs/components/backup/const.pyi +2 -0
- homeassistant-stubs/components/backup/http.pyi +3 -2
- homeassistant-stubs/components/backup/manager.pyi +191 -51
- homeassistant-stubs/components/backup/models.pyi +35 -0
- homeassistant-stubs/components/backup/store.pyi +24 -0
- homeassistant-stubs/components/backup/util.pyi +12 -0
- homeassistant-stubs/components/backup/websocket.pyi +9 -1
- homeassistant-stubs/components/baf/climate.pyi +0 -1
- homeassistant-stubs/components/baf/fan.pyi +0 -1
- homeassistant-stubs/components/baf/light.pyi +4 -5
- homeassistant-stubs/components/bang_olufsen/const.pyi +3 -0
- homeassistant-stubs/components/bang_olufsen/media_player.pyi +2 -2
- homeassistant-stubs/components/binary_sensor/__init__.pyi +0 -33
- homeassistant-stubs/components/bluesound/__init__.pyi +0 -1
- homeassistant-stubs/components/bluesound/media_player.pyi +13 -8
- homeassistant-stubs/components/bluesound/utils.pyi +2 -0
- homeassistant-stubs/components/bmw_connected_drive/__init__.pyi +4 -12
- homeassistant-stubs/components/bmw_connected_drive/binary_sensor.pyi +1 -0
- homeassistant-stubs/components/bmw_connected_drive/button.pyi +1 -0
- homeassistant-stubs/components/bmw_connected_drive/config_flow.pyi +8 -4
- homeassistant-stubs/components/bmw_connected_drive/coordinator.pyi +4 -3
- homeassistant-stubs/components/bmw_connected_drive/device_tracker.pyi +2 -2
- homeassistant-stubs/components/bmw_connected_drive/diagnostics.pyi +1 -0
- homeassistant-stubs/components/bmw_connected_drive/lock.pyi +1 -0
- homeassistant-stubs/components/bmw_connected_drive/notify.pyi +2 -1
- homeassistant-stubs/components/bmw_connected_drive/number.pyi +1 -0
- homeassistant-stubs/components/bmw_connected_drive/select.pyi +1 -0
- homeassistant-stubs/components/bmw_connected_drive/sensor.pyi +1 -0
- homeassistant-stubs/components/bmw_connected_drive/switch.pyi +1 -0
- homeassistant-stubs/components/bryant_evolution/climate.pyi +0 -1
- homeassistant-stubs/components/cambridge_audio/config_flow.pyi +4 -1
- homeassistant-stubs/components/cambridge_audio/media_browser.pyi +8 -0
- homeassistant-stubs/components/cambridge_audio/media_player.pyi +4 -3
- homeassistant-stubs/components/cambridge_audio/select.pyi +2 -2
- homeassistant-stubs/components/cambridge_audio/switch.pyi +2 -2
- homeassistant-stubs/components/camera/__init__.pyi +1 -5
- homeassistant-stubs/components/camera/const.pyi +0 -8
- homeassistant-stubs/components/cert_expiry/config_flow.pyi +0 -1
- homeassistant-stubs/components/cert_expiry/sensor.pyi +2 -10
- homeassistant-stubs/components/climate/__init__.pyi +1 -12
- homeassistant-stubs/components/climate/const.pyi +0 -25
- homeassistant-stubs/components/cloud/backup.pyi +36 -0
- homeassistant-stubs/components/cloud/const.pyi +2 -0
- homeassistant-stubs/components/cloud/http_api.pyi +7 -2
- homeassistant-stubs/components/cookidoo/__init__.pyi +9 -0
- homeassistant-stubs/components/cookidoo/config_flow.pyi +24 -0
- homeassistant-stubs/components/cookidoo/const.pyi +1 -0
- homeassistant-stubs/components/cookidoo/coordinator.pyi +25 -0
- homeassistant-stubs/components/cookidoo/entity.pyi +10 -0
- homeassistant-stubs/components/cookidoo/todo.pyi +32 -0
- homeassistant-stubs/components/cover/__init__.pyi +0 -18
- homeassistant-stubs/components/crownstone/config_flow.pyi +1 -1
- homeassistant-stubs/components/deconz/climate.pyi +0 -1
- homeassistant-stubs/components/deconz/fan.pyi +0 -1
- homeassistant-stubs/components/deconz/light.pyi +7 -5
- homeassistant-stubs/components/demo/climate.pyi +0 -1
- homeassistant-stubs/components/demo/fan.pyi +0 -1
- homeassistant-stubs/components/demo/light.pyi +4 -2
- homeassistant-stubs/components/demo/vacuum.pyi +2 -4
- homeassistant-stubs/components/device_tracker/__init__.pyi +1 -7
- homeassistant-stubs/components/device_tracker/const.pyi +0 -8
- homeassistant-stubs/components/devolo_home_control/__init__.pyi +1 -1
- homeassistant-stubs/components/devolo_home_control/binary_sensor.pyi +3 -2
- homeassistant-stubs/components/devolo_home_control/climate.pyi +0 -1
- homeassistant-stubs/components/devolo_home_control/config_flow.pyi +1 -2
- homeassistant-stubs/components/devolo_home_control/const.pyi +0 -2
- homeassistant-stubs/components/devolo_home_control/sensor.pyi +1 -3
- homeassistant-stubs/components/discovergy/__init__.pyi +2 -2
- homeassistant-stubs/components/duotecno/climate.pyi +0 -1
- homeassistant-stubs/components/easyenergy/__init__.pyi +4 -5
- homeassistant-stubs/components/easyenergy/coordinator.pyi +3 -2
- homeassistant-stubs/components/easyenergy/diagnostics.pyi +2 -5
- homeassistant-stubs/components/easyenergy/sensor.pyi +2 -3
- homeassistant-stubs/components/easyenergy/services.pyi +4 -4
- homeassistant-stubs/components/ecovacs/button.pyi +13 -2
- homeassistant-stubs/components/ecovacs/const.pyi +1 -0
- homeassistant-stubs/components/ecovacs/number.pyi +1 -1
- homeassistant-stubs/components/ecovacs/select.pyi +2 -2
- homeassistant-stubs/components/ecovacs/sensor.pyi +1 -1
- homeassistant-stubs/components/ecovacs/util.pyi +1 -0
- homeassistant-stubs/components/ecovacs/vacuum.pyi +3 -3
- homeassistant-stubs/components/eheimdigital/__init__.pyi +14 -0
- homeassistant-stubs/components/eheimdigital/config_flow.pyi +18 -0
- homeassistant-stubs/components/eheimdigital/const.pyi +8 -0
- homeassistant-stubs/components/eheimdigital/coordinator.pyi +25 -0
- homeassistant-stubs/components/eheimdigital/entity.pyi +20 -0
- homeassistant-stubs/components/eheimdigital/light.pyi +36 -0
- homeassistant-stubs/components/electrasmart/climate.pyi +0 -1
- homeassistant-stubs/components/elevenlabs/__init__.pyi +6 -7
- homeassistant-stubs/components/elevenlabs/config_flow.pyi +4 -3
- homeassistant-stubs/components/elevenlabs/tts.pyi +6 -3
- homeassistant-stubs/components/elgato/__init__.pyi +3 -5
- homeassistant-stubs/components/elgato/button.pyi +4 -3
- homeassistant-stubs/components/elgato/config_flow.pyi +1 -1
- homeassistant-stubs/components/elgato/coordinator.pyi +4 -3
- homeassistant-stubs/components/elgato/diagnostics.pyi +2 -2
- homeassistant-stubs/components/elgato/light.pyi +6 -7
- homeassistant-stubs/components/elgato/sensor.pyi +4 -3
- homeassistant-stubs/components/elgato/switch.pyi +4 -3
- homeassistant-stubs/components/elkm1/climate.pyi +0 -1
- homeassistant-stubs/components/emulated_hue/hue_api.pyi +1 -1
- homeassistant-stubs/components/energyzero/__init__.pyi +4 -5
- homeassistant-stubs/components/energyzero/coordinator.pyi +2 -1
- homeassistant-stubs/components/energyzero/diagnostics.pyi +2 -5
- homeassistant-stubs/components/energyzero/sensor.pyi +2 -3
- homeassistant-stubs/components/energyzero/services.pyi +4 -4
- homeassistant-stubs/components/enigma2/coordinator.pyi +1 -0
- homeassistant-stubs/components/enigma2/media_player.pyi +0 -1
- homeassistant-stubs/components/enphase_envoy/binary_sensor.pyi +2 -0
- homeassistant-stubs/components/enphase_envoy/config_flow.pyi +2 -1
- homeassistant-stubs/components/enphase_envoy/coordinator.pyi +2 -2
- homeassistant-stubs/components/enphase_envoy/number.pyi +2 -0
- homeassistant-stubs/components/enphase_envoy/select.pyi +2 -0
- homeassistant-stubs/components/enphase_envoy/sensor.pyi +35 -1
- homeassistant-stubs/components/enphase_envoy/switch.pyi +2 -0
- homeassistant-stubs/components/esphome/climate.pyi +0 -1
- homeassistant-stubs/components/esphome/fan.pyi +0 -1
- homeassistant-stubs/components/esphome/light.pyi +0 -2
- homeassistant-stubs/components/evohome/climate.pyi +0 -1
- homeassistant-stubs/components/fan/__init__.pyi +0 -15
- homeassistant-stubs/components/feedreader/__init__.pyi +3 -8
- homeassistant-stubs/components/feedreader/config_flow.pyi +1 -6
- homeassistant-stubs/components/flexit_bacnet/climate.pyi +0 -1
- homeassistant-stubs/components/flexit_bacnet/number.pyi +3 -0
- homeassistant-stubs/components/flux_led/light.pyi +4 -5
- homeassistant-stubs/components/fritzbox/climate.pyi +0 -1
- homeassistant-stubs/components/fritzbox/coordinator.pyi +2 -1
- homeassistant-stubs/components/fritzbox/light.pyi +3 -4
- homeassistant-stubs/components/fritzbox_callmonitor/base.pyi +13 -2
- homeassistant-stubs/components/fritzbox_callmonitor/config_flow.pyi +2 -2
- homeassistant-stubs/components/fritzbox_callmonitor/sensor.pyi +4 -4
- homeassistant-stubs/components/fronius/__init__.pyi +1 -1
- homeassistant-stubs/components/fronius/const.pyi +3 -3
- homeassistant-stubs/components/fronius/coordinator.pyi +1 -1
- homeassistant-stubs/components/fronius/sensor.pyi +2 -1
- homeassistant-stubs/components/fujitsu_fglair/climate.pyi +0 -1
- homeassistant-stubs/components/fyta/__init__.pyi +2 -2
- homeassistant-stubs/components/fyta/entity.pyi +2 -2
- homeassistant-stubs/components/generic_thermostat/climate.pyi +1 -4
- homeassistant-stubs/components/generic_thermostat/config_flow.pyi +1 -1
- homeassistant-stubs/components/generic_thermostat/const.pyi +2 -0
- homeassistant-stubs/components/group/fan.pyi +0 -1
- homeassistant-stubs/components/group/registry.pyi +1 -1
- homeassistant-stubs/components/history/__init__.pyi +1 -1
- homeassistant-stubs/components/history/helpers.pyi +1 -2
- homeassistant-stubs/components/history/websocket_api.pyi +1 -1
- homeassistant-stubs/components/holiday/__init__.pyi +2 -1
- homeassistant-stubs/components/holiday/calendar.pyi +4 -3
- homeassistant-stubs/components/holiday/config_flow.pyi +13 -3
- homeassistant-stubs/components/holiday/const.pyi +1 -0
- homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +5 -3
- homeassistant-stubs/components/homekit/doorbell.pyi +23 -0
- homeassistant-stubs/components/homekit/type_cameras.pyi +4 -12
- homeassistant-stubs/components/homekit/type_locks.pyi +3 -2
- homeassistant-stubs/components/homekit/type_switches.pyi +1 -1
- homeassistant-stubs/components/homekit/util.pyi +1 -0
- homeassistant-stubs/components/homewizard/sensor.pyi +1 -1
- homeassistant-stubs/components/humidifier/__init__.pyi +1 -8
- homeassistant-stubs/components/humidifier/const.pyi +0 -9
- homeassistant-stubs/components/husqvarna_automower/__init__.pyi +2 -2
- homeassistant-stubs/components/husqvarna_automower/binary_sensor.pyi +1 -0
- homeassistant-stubs/components/husqvarna_automower/calendar.pyi +1 -0
- homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +4 -4
- homeassistant-stubs/components/husqvarna_automower/device_tracker.pyi +2 -0
- homeassistant-stubs/components/husqvarna_automower/diagnostics.pyi +1 -2
- homeassistant-stubs/components/husqvarna_automower/entity.pyi +4 -3
- homeassistant-stubs/components/husqvarna_automower/sensor.pyi +1 -0
- homeassistant-stubs/components/idasen_desk/__init__.pyi +5 -16
- homeassistant-stubs/components/idasen_desk/button.pyi +7 -12
- homeassistant-stubs/components/idasen_desk/coordinator.pyi +2 -3
- homeassistant-stubs/components/idasen_desk/cover.pyi +8 -17
- homeassistant-stubs/components/idasen_desk/entity.pyi +12 -0
- homeassistant-stubs/components/idasen_desk/sensor.pyi +7 -20
- homeassistant-stubs/components/image_upload/media_source.pyi +14 -0
- homeassistant-stubs/components/imap/config_flow.pyi +3 -2
- homeassistant-stubs/components/imap/coordinator.pyi +5 -5
- homeassistant-stubs/components/imap/sensor.pyi +1 -0
- homeassistant-stubs/components/intent/__init__.pyi +2 -1
- homeassistant-stubs/components/iotty/switch.pyi +8 -6
- homeassistant-stubs/components/iron_os/__init__.pyi +21 -0
- homeassistant-stubs/components/iron_os/binary_sensor.pyi +19 -0
- homeassistant-stubs/components/iron_os/config_flow.pyi +15 -0
- homeassistant-stubs/components/iron_os/const.pyi +7 -0
- homeassistant-stubs/components/iron_os/coordinator.pyi +43 -0
- homeassistant-stubs/components/iron_os/entity.pyi +13 -0
- homeassistant-stubs/components/iron_os/number.pyi +62 -0
- homeassistant-stubs/components/iron_os/select.pyi +49 -0
- homeassistant-stubs/components/iron_os/sensor.pyi +46 -0
- homeassistant-stubs/components/iron_os/update.pyi +29 -0
- homeassistant-stubs/components/isy994/climate.pyi +0 -1
- homeassistant-stubs/components/isy994/fan.pyi +0 -1
- homeassistant-stubs/components/knx/climate.pyi +0 -1
- homeassistant-stubs/components/knx/config_flow.pyi +4 -0
- homeassistant-stubs/components/knx/fan.pyi +0 -1
- homeassistant-stubs/components/knx/services.pyi +5 -5
- homeassistant-stubs/components/lamarzocco/__init__.pyi +4 -5
- homeassistant-stubs/components/lamarzocco/binary_sensor.pyi +9 -3
- homeassistant-stubs/components/lamarzocco/calendar.pyi +1 -0
- homeassistant-stubs/components/lamarzocco/config_flow.pyi +6 -5
- homeassistant-stubs/components/lamarzocco/coordinator.pyi +39 -16
- homeassistant-stubs/components/lamarzocco/entity.pyi +7 -3
- homeassistant-stubs/components/lamarzocco/number.pyi +8 -4
- homeassistant-stubs/components/lamarzocco/select.pyi +8 -4
- homeassistant-stubs/components/lamarzocco/sensor.pyi +10 -3
- homeassistant-stubs/components/lamarzocco/switch.pyi +1 -1
- homeassistant-stubs/components/lametric/notify.pyi +2 -1
- homeassistant-stubs/components/lametric/number.pyi +2 -1
- homeassistant-stubs/components/lametric/services.pyi +2 -1
- homeassistant-stubs/components/lametric/switch.pyi +2 -1
- homeassistant-stubs/components/lcn/__init__.pyi +3 -1
- homeassistant-stubs/components/lcn/climate.pyi +0 -1
- homeassistant-stubs/components/lcn/const.pyi +1 -0
- homeassistant-stubs/components/lcn/helpers.pyi +1 -1
- homeassistant-stubs/components/lcn/services.pyi +7 -4
- homeassistant-stubs/components/lifx/const.pyi +1 -0
- homeassistant-stubs/components/lifx/manager.pyi +2 -2
- homeassistant-stubs/components/lifx/util.pyi +2 -2
- homeassistant-stubs/components/light/__init__.pyi +31 -55
- homeassistant-stubs/components/light/const.pyi +33 -0
- homeassistant-stubs/components/light/device_action.pyi +2 -1
- homeassistant-stubs/components/light/device_condition.pyi +1 -1
- homeassistant-stubs/components/light/device_trigger.pyi +1 -1
- homeassistant-stubs/components/light/intent.pyi +2 -1
- homeassistant-stubs/components/light/reproduce_state.pyi +2 -1
- homeassistant-stubs/components/light/significant_change.pyi +1 -1
- homeassistant-stubs/components/litterrobot/vacuum.pyi +2 -2
- homeassistant-stubs/components/lock/__init__.pyi +1 -2
- homeassistant-stubs/components/lookin/climate.pyi +0 -1
- homeassistant-stubs/components/mastodon/__init__.pyi +2 -2
- homeassistant-stubs/components/mastodon/config_flow.pyi +1 -2
- homeassistant-stubs/components/mastodon/sensor.pyi +2 -0
- homeassistant-stubs/components/matter/climate.pyi +0 -1
- homeassistant-stubs/components/matter/fan.pyi +0 -1
- homeassistant-stubs/components/matter/light.pyi +5 -5
- homeassistant-stubs/components/matter/vacuum.pyi +3 -3
- homeassistant-stubs/components/mealie/__init__.pyi +18 -0
- homeassistant-stubs/components/mealie/calendar.pyi +21 -0
- homeassistant-stubs/components/mealie/config_flow.pyi +20 -0
- homeassistant-stubs/components/mealie/const.pyi +14 -0
- homeassistant-stubs/components/mealie/coordinator.pyi +53 -0
- homeassistant-stubs/components/mealie/diagnostics.pyi +5 -0
- homeassistant-stubs/components/mealie/entity.pyi +11 -0
- homeassistant-stubs/components/mealie/sensor.pyi +29 -0
- homeassistant-stubs/components/mealie/services.pyi +21 -0
- homeassistant-stubs/components/mealie/todo.pyi +36 -0
- homeassistant-stubs/components/mealie/utils.pyi +3 -0
- homeassistant-stubs/components/media_player/__init__.pyi +0 -2
- homeassistant-stubs/components/modbus/climate.pyi +0 -1
- homeassistant-stubs/components/modbus/fan.pyi +0 -1
- homeassistant-stubs/components/modbus/modbus.pyi +3 -3
- homeassistant-stubs/components/mqtt/client.pyi +1 -1
- homeassistant-stubs/components/mqtt/climate.pyi +0 -1
- homeassistant-stubs/components/mqtt/config_flow.pyi +2 -1
- homeassistant-stubs/components/mqtt/fan.pyi +0 -1
- homeassistant-stubs/components/mqtt/light/schema_basic.pyi +5 -5
- homeassistant-stubs/components/mqtt/light/schema_json.pyi +4 -4
- homeassistant-stubs/components/mqtt/light/schema_template.pyi +4 -4
- homeassistant-stubs/components/mqtt/switch.pyi +1 -1
- homeassistant-stubs/components/mqtt/vacuum.pyi +10 -4
- homeassistant-stubs/components/music_assistant/__init__.pyi +4 -0
- homeassistant-stubs/components/music_assistant/actions.pyi +18 -0
- homeassistant-stubs/components/music_assistant/const.pyi +48 -0
- homeassistant-stubs/components/music_assistant/media_player.pyi +9 -16
- homeassistant-stubs/components/music_assistant/schemas.pyi +20 -0
- homeassistant-stubs/components/mysensors/climate.pyi +0 -1
- homeassistant-stubs/components/myuplink/__init__.pyi +5 -2
- homeassistant-stubs/components/myuplink/binary_sensor.pyi +2 -2
- homeassistant-stubs/components/myuplink/config_flow.pyi +4 -1
- homeassistant-stubs/components/myuplink/number.pyi +2 -2
- homeassistant-stubs/components/myuplink/select.pyi +3 -2
- homeassistant-stubs/components/myuplink/switch.pyi +1 -1
- homeassistant-stubs/components/nanoleaf/light.pyi +4 -4
- homeassistant-stubs/components/neato/vacuum.pyi +3 -3
- homeassistant-stubs/components/nest/__init__.pyi +6 -6
- homeassistant-stubs/components/nest/camera.pyi +2 -4
- homeassistant-stubs/components/nest/climate.pyi +2 -5
- homeassistant-stubs/components/nest/const.pyi +0 -2
- homeassistant-stubs/components/nest/device_info.pyi +2 -1
- homeassistant-stubs/components/nest/diagnostics.pyi +4 -8
- homeassistant-stubs/components/nest/event.pyi +2 -4
- homeassistant-stubs/components/nest/sensor.pyi +2 -4
- homeassistant-stubs/components/nest/types.pyi +11 -0
- homeassistant-stubs/components/netatmo/climate.pyi +0 -1
- homeassistant-stubs/components/netatmo/fan.pyi +0 -1
- homeassistant-stubs/components/nordpool/__init__.pyi +6 -0
- homeassistant-stubs/components/nordpool/coordinator.pyi +5 -2
- homeassistant-stubs/components/nordpool/entity.pyi +1 -1
- homeassistant-stubs/components/nordpool/sensor.pyi +10 -6
- homeassistant-stubs/components/nordpool/services.pyi +19 -0
- homeassistant-stubs/components/number/const.pyi +0 -8
- homeassistant-stubs/components/onkyo/config_flow.pyi +2 -0
- homeassistant-stubs/components/onkyo/media_player.pyi +10 -7
- homeassistant-stubs/components/overkiz/__init__.pyi +4 -3
- homeassistant-stubs/components/overkiz/alarm_control_panel.pyi +2 -4
- homeassistant-stubs/components/overkiz/binary_sensor.pyi +3 -4
- homeassistant-stubs/components/overkiz/button.pyi +4 -5
- homeassistant-stubs/components/overkiz/climate/__init__.pyi +3 -4
- homeassistant-stubs/components/overkiz/climate/atlantic_electrical_heater.pyi +0 -1
- homeassistant-stubs/components/overkiz/climate/atlantic_electrical_heater_with_adjustable_temperature_setpoint.pyi +0 -1
- homeassistant-stubs/components/overkiz/climate/atlantic_electrical_towel_dryer.pyi +1 -2
- homeassistant-stubs/components/overkiz/climate/atlantic_heat_recovery_ventilation.pyi +0 -1
- homeassistant-stubs/components/overkiz/climate/atlantic_pass_apc_heat_pump_main_component.pyi +0 -1
- homeassistant-stubs/components/overkiz/climate/atlantic_pass_apc_heating_zone.pyi +0 -1
- homeassistant-stubs/components/overkiz/climate/atlantic_pass_apc_zone_control.pyi +0 -1
- homeassistant-stubs/components/overkiz/climate/hitachi_air_to_air_heat_pump_hlrrwifi.pyi +0 -1
- homeassistant-stubs/components/overkiz/climate/hitachi_air_to_air_heat_pump_ovp.pyi +0 -1
- homeassistant-stubs/components/overkiz/climate/hitachi_air_to_water_heating_zone.pyi +34 -0
- homeassistant-stubs/components/overkiz/climate/somfy_heating_temperature_interface.pyi +0 -1
- homeassistant-stubs/components/overkiz/climate/somfy_thermostat.pyi +0 -1
- homeassistant-stubs/components/overkiz/climate/valve_heating_temperature_interface.pyi +0 -1
- homeassistant-stubs/components/overkiz/cover/__init__.pyi +2 -4
- homeassistant-stubs/components/overkiz/diagnostics.pyi +4 -5
- homeassistant-stubs/components/overkiz/light.pyi +2 -4
- homeassistant-stubs/components/overkiz/lock.pyi +2 -4
- homeassistant-stubs/components/overkiz/number.pyi +3 -4
- homeassistant-stubs/components/overkiz/scene.pyi +2 -4
- homeassistant-stubs/components/overkiz/select.pyi +3 -4
- homeassistant-stubs/components/overkiz/sensor.pyi +2 -3
- homeassistant-stubs/components/overkiz/siren.pyi +2 -4
- homeassistant-stubs/components/overkiz/switch.pyi +2 -4
- homeassistant-stubs/components/overkiz/water_heater/__init__.pyi +2 -4
- homeassistant-stubs/components/peblar/__init__.pyi +11 -0
- homeassistant-stubs/components/peblar/binary_sensor.pyi +25 -0
- homeassistant-stubs/components/peblar/button.pyi +27 -0
- homeassistant-stubs/components/peblar/config_flow.pyi +18 -0
- homeassistant-stubs/components/peblar/const.pyi +7 -0
- homeassistant-stubs/components/peblar/coordinator.pyi +50 -0
- homeassistant-stubs/components/peblar/diagnostics.pyi +5 -0
- homeassistant-stubs/components/peblar/entity.pyi +15 -0
- homeassistant-stubs/components/peblar/helpers.pyi +7 -0
- homeassistant-stubs/components/peblar/number.pyi +33 -0
- homeassistant-stubs/components/peblar/select.pyi +30 -0
- homeassistant-stubs/components/peblar/sensor.pyi +29 -0
- homeassistant-stubs/components/peblar/switch.pyi +32 -0
- homeassistant-stubs/components/peblar/update.pyi +26 -0
- homeassistant-stubs/components/plugwise/binary_sensor.pyi +1 -0
- homeassistant-stubs/components/plugwise/button.pyi +2 -0
- homeassistant-stubs/components/plugwise/climate.pyi +3 -4
- homeassistant-stubs/components/plugwise/config_flow.pyi +7 -1
- homeassistant-stubs/components/plugwise/entity.pyi +0 -1
- homeassistant-stubs/components/plugwise/number.pyi +2 -0
- homeassistant-stubs/components/plugwise/select.pyi +2 -0
- homeassistant-stubs/components/plugwise/sensor.pyi +2 -0
- homeassistant-stubs/components/plugwise/switch.pyi +2 -0
- homeassistant-stubs/components/plugwise/util.pyi +1 -0
- homeassistant-stubs/components/powerfox/__init__.pyi +12 -0
- homeassistant-stubs/components/powerfox/config_flow.pyi +16 -0
- homeassistant-stubs/components/{stookalert → powerfox}/const.pyi +1 -2
- homeassistant-stubs/components/powerfox/coordinator.pyi +14 -0
- homeassistant-stubs/components/powerfox/diagnostics.pyi +5 -0
- homeassistant-stubs/components/powerfox/entity.pyi +11 -0
- homeassistant-stubs/components/powerfox/sensor.pyi +28 -0
- homeassistant-stubs/components/powerwall/sensor.pyi +3 -5
- homeassistant-stubs/components/rabbitair/fan.pyi +0 -1
- homeassistant-stubs/components/recorder/db_schema.pyi +19 -4
- homeassistant-stubs/components/recorder/history/legacy.pyi +4 -4
- homeassistant-stubs/components/recorder/history/modern.pyi +5 -5
- homeassistant-stubs/components/recorder/migration.pyi +29 -19
- homeassistant-stubs/components/recorder/models/state.pyi +3 -0
- homeassistant-stubs/components/recorder/queries.pyi +3 -4
- homeassistant-stubs/components/recorder/statistics.pyi +2 -2
- homeassistant-stubs/components/recorder/table_managers/event_types.pyi +0 -1
- homeassistant-stubs/components/recorder/table_managers/recorder_runs.pyi +1 -12
- homeassistant-stubs/components/recorder/table_managers/states.pyi +7 -0
- homeassistant-stubs/components/remote/__init__.pyi +0 -10
- homeassistant-stubs/components/renault/binary_sensor.pyi +2 -0
- homeassistant-stubs/components/renault/button.pyi +2 -0
- homeassistant-stubs/components/renault/coordinator.pyi +2 -1
- homeassistant-stubs/components/renault/device_tracker.pyi +2 -0
- homeassistant-stubs/components/renault/select.pyi +2 -0
- homeassistant-stubs/components/renault/sensor.pyi +2 -0
- homeassistant-stubs/components/reolink/button.pyi +1 -2
- homeassistant-stubs/components/reolink/camera.pyi +1 -2
- homeassistant-stubs/components/reolink/light.pyi +1 -2
- homeassistant-stubs/components/reolink/number.pyi +1 -2
- homeassistant-stubs/components/reolink/select.pyi +1 -2
- homeassistant-stubs/components/reolink/services.pyi +2 -2
- homeassistant-stubs/components/reolink/siren.pyi +1 -2
- homeassistant-stubs/components/reolink/switch.pyi +1 -2
- homeassistant-stubs/components/reolink/update.pyi +1 -0
- homeassistant-stubs/components/reolink/util.pyi +7 -0
- homeassistant-stubs/components/roborock/vacuum.pyi +2 -2
- homeassistant-stubs/components/roku/__init__.pyi +5 -4
- homeassistant-stubs/components/roku/binary_sensor.pyi +4 -3
- homeassistant-stubs/components/roku/config_flow.pyi +5 -3
- homeassistant-stubs/components/roku/diagnostics.pyi +2 -4
- homeassistant-stubs/components/roku/media_player.pyi +4 -3
- homeassistant-stubs/components/roku/remote.pyi +4 -4
- homeassistant-stubs/components/roku/select.pyi +4 -4
- homeassistant-stubs/components/roku/sensor.pyi +4 -4
- homeassistant-stubs/components/romy/vacuum.pyi +2 -2
- homeassistant-stubs/components/russound_rio/__init__.pyi +14 -0
- homeassistant-stubs/components/russound_rio/config_flow.pyi +14 -0
- homeassistant-stubs/components/russound_rio/const.pyi +7 -0
- homeassistant-stubs/components/russound_rio/diagnostics.pyi +5 -0
- homeassistant-stubs/components/russound_rio/entity.pyi +25 -0
- homeassistant-stubs/components/russound_rio/media_player.pyi +56 -0
- homeassistant-stubs/components/schlage/__init__.pyi +11 -0
- homeassistant-stubs/components/schlage/binary_sensor.pyi +26 -0
- homeassistant-stubs/components/schlage/config_flow.pyi +19 -0
- homeassistant-stubs/components/schlage/const.pyi +6 -0
- homeassistant-stubs/components/schlage/coordinator.pyi +31 -0
- homeassistant-stubs/components/schlage/diagnostics.pyi +5 -0
- homeassistant-stubs/components/schlage/entity.pyi +19 -0
- homeassistant-stubs/components/schlage/lock.pyi +21 -0
- homeassistant-stubs/components/schlage/select.pyi +20 -0
- homeassistant-stubs/components/schlage/sensor.pyi +19 -0
- homeassistant-stubs/components/schlage/switch.pyi +32 -0
- homeassistant-stubs/components/sensibo/climate.pyi +2 -3
- homeassistant-stubs/components/sensibo/coordinator.pyi +1 -1
- homeassistant-stubs/components/sensor/const.pyi +0 -7
- homeassistant-stubs/components/senz/climate.pyi +0 -1
- homeassistant-stubs/components/shelly/climate.pyi +0 -2
- homeassistant-stubs/components/siren/__init__.pyi +1 -6
- homeassistant-stubs/components/siren/const.pyi +0 -11
- homeassistant-stubs/components/snooz/fan.pyi +0 -1
- homeassistant-stubs/components/solarlog/config_flow.pyi +2 -5
- homeassistant-stubs/components/solarlog/const.pyi +0 -1
- homeassistant-stubs/components/solarlog/coordinator.pyi +0 -1
- homeassistant-stubs/components/starlink/coordinator.pyi +4 -2
- homeassistant-stubs/components/starlink/sensor.pyi +1 -1
- homeassistant-stubs/components/statistics/sensor.pyi +43 -40
- homeassistant-stubs/components/stream/__init__.pyi +13 -0
- homeassistant-stubs/components/suez_water/__init__.pyi +3 -5
- homeassistant-stubs/components/suez_water/coordinator.pyi +7 -9
- homeassistant-stubs/components/suez_water/sensor.pyi +5 -6
- homeassistant-stubs/components/sun/__init__.pyi +2 -0
- homeassistant-stubs/components/sun/entity.pyi +1 -2
- homeassistant-stubs/components/switch/__init__.pyi +0 -7
- homeassistant-stubs/components/switch_as_x/fan.pyi +0 -1
- homeassistant-stubs/components/switchbee/climate.pyi +0 -1
- homeassistant-stubs/components/switchbot_cloud/climate.pyi +0 -1
- homeassistant-stubs/components/switchbot_cloud/sensor.pyi +12 -3
- homeassistant-stubs/components/switchbot_cloud/switch.pyi +4 -0
- homeassistant-stubs/components/switchbot_cloud/vacuum.pyi +3 -3
- homeassistant-stubs/components/switcher_kis/climate.pyi +1 -2
- homeassistant-stubs/components/switcher_kis/cover.pyi +0 -4
- homeassistant-stubs/components/switcher_kis/entity.pyi +6 -0
- homeassistant-stubs/components/switcher_kis/light.pyi +0 -4
- homeassistant-stubs/components/switcher_kis/switch.pyi +0 -2
- homeassistant-stubs/components/tailwind/__init__.pyi +2 -4
- homeassistant-stubs/components/tailwind/binary_sensor.pyi +1 -1
- homeassistant-stubs/components/tailwind/button.pyi +1 -1
- homeassistant-stubs/components/tailwind/coordinator.pyi +2 -1
- homeassistant-stubs/components/tailwind/cover.pyi +1 -1
- homeassistant-stubs/components/tailwind/diagnostics.pyi +1 -1
- homeassistant-stubs/components/tailwind/number.pyi +1 -1
- homeassistant-stubs/components/tedee/__init__.pyi +2 -3
- homeassistant-stubs/components/tedee/binary_sensor.pyi +2 -0
- homeassistant-stubs/components/tedee/sensor.pyi +2 -0
- homeassistant-stubs/components/tibber/services.pyi +1 -1
- homeassistant-stubs/components/tolo/climate.pyi +0 -1
- homeassistant-stubs/components/tolo/fan.pyi +0 -1
- homeassistant-stubs/components/tplink/__init__.pyi +1 -1
- homeassistant-stubs/components/tplink/binary_sensor.pyi +2 -2
- homeassistant-stubs/components/tplink/button.pyi +2 -2
- homeassistant-stubs/components/tplink/camera.pyi +49 -0
- homeassistant-stubs/components/tplink/climate.pyi +1 -2
- homeassistant-stubs/components/tplink/config_flow.pyi +11 -5
- homeassistant-stubs/components/tplink/const.pyi +2 -0
- homeassistant-stubs/components/tplink/entity.pyi +9 -2
- homeassistant-stubs/components/tplink/fan.pyi +1 -2
- homeassistant-stubs/components/tplink/light.pyi +2 -2
- homeassistant-stubs/components/tplink/models.pyi +4 -1
- homeassistant-stubs/components/tplink/number.pyi +2 -2
- homeassistant-stubs/components/tplink/select.pyi +2 -2
- homeassistant-stubs/components/tplink/sensor.pyi +2 -2
- homeassistant-stubs/components/tplink/siren.pyi +1 -1
- homeassistant-stubs/components/tplink/switch.pyi +2 -2
- homeassistant-stubs/components/tractive/sensor.pyi +1 -1
- homeassistant-stubs/components/tradfri/fan.pyi +0 -1
- homeassistant-stubs/components/tradfri/light.pyi +4 -4
- homeassistant-stubs/components/transmission/__init__.pyi +1 -1
- homeassistant-stubs/components/transmission/const.pyi +1 -0
- homeassistant-stubs/components/twentemilieu/__init__.pyi +3 -11
- homeassistant-stubs/components/twentemilieu/calendar.pyi +1 -1
- homeassistant-stubs/components/twentemilieu/coordinator.pyi +14 -0
- homeassistant-stubs/components/twentemilieu/diagnostics.pyi +2 -2
- homeassistant-stubs/components/twentemilieu/entity.pyi +2 -3
- homeassistant-stubs/components/twentemilieu/sensor.pyi +3 -3
- homeassistant-stubs/components/unifi/sensor.pyi +1 -1
- homeassistant-stubs/components/unifiprotect/const.pyi +6 -0
- homeassistant-stubs/components/unifiprotect/event.pyi +5 -3
- homeassistant-stubs/components/unifiprotect/services.pyi +16 -9
- homeassistant-stubs/components/update/__init__.pyi +0 -2
- homeassistant-stubs/components/vacuum/__init__.pyi +16 -7
- homeassistant-stubs/components/vacuum/const.pyi +18 -5
- homeassistant-stubs/components/vacuum/device_condition.pyi +1 -1
- homeassistant-stubs/components/vacuum/device_trigger.pyi +1 -1
- homeassistant-stubs/components/vacuum/reproduce_state.pyi +2 -2
- homeassistant-stubs/components/vallox/fan.pyi +0 -1
- homeassistant-stubs/components/velbus/__init__.pyi +22 -9
- homeassistant-stubs/components/velbus/binary_sensor.pyi +4 -3
- homeassistant-stubs/components/velbus/button.pyi +4 -3
- homeassistant-stubs/components/velbus/climate.pyi +4 -3
- homeassistant-stubs/components/velbus/cover.pyi +4 -3
- homeassistant-stubs/components/velbus/diagnostics.pyi +3 -4
- homeassistant-stubs/components/velbus/light.pyi +4 -3
- homeassistant-stubs/components/velbus/select.pyi +4 -3
- homeassistant-stubs/components/velbus/sensor.pyi +4 -3
- homeassistant-stubs/components/velbus/services.pyi +7 -0
- homeassistant-stubs/components/velbus/switch.pyi +4 -3
- homeassistant-stubs/components/water_heater/__init__.pyi +7 -12
- homeassistant-stubs/components/wemo/fan.pyi +0 -1
- homeassistant-stubs/components/wemo/light.pyi +4 -2
- homeassistant-stubs/components/wiz/light.pyi +4 -5
- homeassistant-stubs/components/yale_smart_alarm/__init__.pyi +4 -4
- homeassistant-stubs/components/yale_smart_alarm/alarm_control_panel.pyi +0 -1
- homeassistant-stubs/components/yale_smart_alarm/config_flow.pyi +3 -2
- homeassistant-stubs/components/yale_smart_alarm/coordinator.pyi +3 -3
- homeassistant-stubs/components/yale_smart_alarm/entity.pyi +1 -1
- homeassistant-stubs/components/yale_smart_alarm/lock.pyi +1 -1
- homeassistant-stubs/components/zwave_js/api.pyi +2 -0
- homeassistant-stubs/components/zwave_js/climate.pyi +0 -1
- homeassistant-stubs/components/zwave_js/fan.pyi +0 -1
- homeassistant-stubs/components/zwave_js/light.pyi +7 -9
- homeassistant-stubs/const.pyi +2 -151
- homeassistant-stubs/core.pyi +3 -6
- homeassistant-stubs/core_config.pyi +2 -1
- homeassistant-stubs/data_entry_flow.pyi +0 -13
- homeassistant-stubs/exceptions.pyi +6 -0
- homeassistant-stubs/helpers/device_registry.pyi +1 -9
- homeassistant-stubs/helpers/entity.pyi +1 -2
- homeassistant-stubs/helpers/event.pyi +3 -4
- homeassistant-stubs/helpers/service.pyi +1 -1
- homeassistant-stubs/helpers/service_info/mqtt.pyi +1 -1
- homeassistant-stubs/helpers/template.pyi +1 -1
- homeassistant-stubs/util/dt.pyi +1 -0
- {homeassistant_stubs-2024.12.5.dist-info → homeassistant_stubs-2025.1.0b0.dist-info}/METADATA +2 -2
- {homeassistant_stubs-2024.12.5.dist-info → homeassistant_stubs-2025.1.0b0.dist-info}/RECORD +567 -474
- homeassistant-stubs/components/bluesound/services.pyi +0 -21
- homeassistant-stubs/components/stookalert/__init__.pyi +0 -10
- homeassistant-stubs/components/stookalert/binary_sensor.pyi +0 -24
- homeassistant-stubs/components/stookalert/config_flow.pyi +0 -7
- homeassistant-stubs/components/tailwind/typing.pyi +0 -4
- {homeassistant_stubs-2024.12.5.dist-info → homeassistant_stubs-2025.1.0b0.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2024.12.5.dist-info → homeassistant_stubs-2025.1.0b0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,12 @@
|
|
1
|
+
from .coordinator import PowerfoxDataUpdateCoordinator as PowerfoxDataUpdateCoordinator
|
2
|
+
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
3
|
+
from homeassistant.const import CONF_EMAIL as CONF_EMAIL, CONF_PASSWORD as CONF_PASSWORD, Platform as Platform
|
4
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
5
|
+
from homeassistant.exceptions import ConfigEntryNotReady as ConfigEntryNotReady
|
6
|
+
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
7
|
+
|
8
|
+
PLATFORMS: list[Platform]
|
9
|
+
type PowerfoxConfigEntry = ConfigEntry[list[PowerfoxDataUpdateCoordinator]]
|
10
|
+
|
11
|
+
async def async_setup_entry(hass: HomeAssistant, entry: PowerfoxConfigEntry) -> bool: ...
|
12
|
+
async def async_unload_entry(hass: HomeAssistant, entry: PowerfoxConfigEntry) -> bool: ...
|
@@ -0,0 +1,16 @@
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
2
|
+
from _typeshed import Incomplete
|
3
|
+
from collections.abc import Mapping
|
4
|
+
from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
|
5
|
+
from homeassistant.const import CONF_EMAIL as CONF_EMAIL, CONF_PASSWORD as CONF_PASSWORD
|
6
|
+
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
7
|
+
from typing import Any
|
8
|
+
|
9
|
+
STEP_USER_DATA_SCHEMA: Incomplete
|
10
|
+
STEP_REAUTH_SCHEMA: Incomplete
|
11
|
+
|
12
|
+
class PowerfoxConfigFlow(ConfigFlow, domain=DOMAIN):
|
13
|
+
async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
14
|
+
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
|
15
|
+
async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
16
|
+
async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
@@ -0,0 +1,14 @@
|
|
1
|
+
from .const import DOMAIN as DOMAIN, LOGGER as LOGGER, SCAN_INTERVAL as SCAN_INTERVAL
|
2
|
+
from _typeshed import Incomplete
|
3
|
+
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
4
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
5
|
+
from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed
|
6
|
+
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
|
7
|
+
from powerfox import Device as Device, Powerfox as Powerfox, Poweropti
|
8
|
+
|
9
|
+
class PowerfoxDataUpdateCoordinator(DataUpdateCoordinator[Poweropti]):
|
10
|
+
config_entry: ConfigEntry
|
11
|
+
client: Incomplete
|
12
|
+
device: Incomplete
|
13
|
+
def __init__(self, hass: HomeAssistant, client: Powerfox, device: Device) -> None: ...
|
14
|
+
async def _async_update_data(self) -> Poweropti: ...
|
@@ -0,0 +1,5 @@
|
|
1
|
+
from . import PowerfoxConfigEntry as PowerfoxConfigEntry, PowerfoxDataUpdateCoordinator as PowerfoxDataUpdateCoordinator
|
2
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
3
|
+
from typing import Any
|
4
|
+
|
5
|
+
async def async_get_config_entry_diagnostics(hass: HomeAssistant, entry: PowerfoxConfigEntry) -> dict[str, Any]: ...
|
@@ -0,0 +1,11 @@
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
2
|
+
from .coordinator import PowerfoxDataUpdateCoordinator as PowerfoxDataUpdateCoordinator
|
3
|
+
from _typeshed import Incomplete
|
4
|
+
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
5
|
+
from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
|
6
|
+
from powerfox import Device as Device
|
7
|
+
|
8
|
+
class PowerfoxEntity(CoordinatorEntity[PowerfoxDataUpdateCoordinator]):
|
9
|
+
_attr_has_entity_name: bool
|
10
|
+
_attr_device_info: Incomplete
|
11
|
+
def __init__(self, coordinator: PowerfoxDataUpdateCoordinator, device: Device) -> None: ...
|
@@ -0,0 +1,28 @@
|
|
1
|
+
from . import PowerfoxConfigEntry as PowerfoxConfigEntry
|
2
|
+
from .coordinator import PowerfoxDataUpdateCoordinator as PowerfoxDataUpdateCoordinator
|
3
|
+
from .entity import PowerfoxEntity as PowerfoxEntity
|
4
|
+
from _typeshed import Incomplete
|
5
|
+
from collections.abc import Callable as Callable
|
6
|
+
from dataclasses import dataclass
|
7
|
+
from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
|
8
|
+
from homeassistant.const import UnitOfEnergy as UnitOfEnergy, UnitOfPower as UnitOfPower, UnitOfVolume as UnitOfVolume
|
9
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
10
|
+
from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
|
11
|
+
from powerfox import Device as Device, PowerMeter, WaterMeter
|
12
|
+
|
13
|
+
@dataclass(frozen=True, kw_only=True)
|
14
|
+
class PowerfoxSensorEntityDescription[T: (PowerMeter, WaterMeter)](SensorEntityDescription):
|
15
|
+
value_fn: Callable[[T], float | int | None]
|
16
|
+
def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., last_reset=..., native_unit_of_measurement=..., options=..., state_class=..., suggested_display_precision=..., suggested_unit_of_measurement=..., value_fn) -> None: ...
|
17
|
+
|
18
|
+
SENSORS_POWER: tuple[PowerfoxSensorEntityDescription[PowerMeter], ...]
|
19
|
+
SENSORS_WATER: tuple[PowerfoxSensorEntityDescription[WaterMeter], ...]
|
20
|
+
|
21
|
+
async def async_setup_entry(hass: HomeAssistant, entry: PowerfoxConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
|
22
|
+
|
23
|
+
class PowerfoxSensorEntity(PowerfoxEntity, SensorEntity):
|
24
|
+
entity_description: PowerfoxSensorEntityDescription
|
25
|
+
_attr_unique_id: Incomplete
|
26
|
+
def __init__(self, coordinator: PowerfoxDataUpdateCoordinator, device: Device, description: PowerfoxSensorEntityDescription) -> None: ...
|
27
|
+
@property
|
28
|
+
def native_value(self) -> float | int | None: ...
|
@@ -10,15 +10,13 @@ from homeassistant.core import HomeAssistant as HomeAssistant
|
|
10
10
|
from homeassistant.helpers.entity import Entity as Entity
|
11
11
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
|
12
12
|
from tesla_powerwall import MeterResponse, MeterType as MeterType
|
13
|
-
from typing import Generic, TypeVar
|
14
13
|
|
15
14
|
_METER_DIRECTION_EXPORT: str
|
16
15
|
_METER_DIRECTION_IMPORT: str
|
17
|
-
|
18
|
-
_ValueT = TypeVar('_ValueT', bound=float | int | str | None)
|
16
|
+
type _ValueType = float | int | str | None
|
19
17
|
|
20
18
|
@dataclass(frozen=True, kw_only=True)
|
21
|
-
class PowerwallSensorEntityDescription
|
19
|
+
class PowerwallSensorEntityDescription[_ValueParamT, _ValueT: _ValueType](SensorEntityDescription):
|
22
20
|
value_fn: Callable[[_ValueParamT], _ValueT]
|
23
21
|
def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., last_reset=..., native_unit_of_measurement=..., options=..., state_class=..., suggested_display_precision=..., suggested_unit_of_measurement=..., value_fn) -> None: ...
|
24
22
|
|
@@ -88,7 +86,7 @@ class PowerWallImportSensor(PowerWallEnergyDirectionSensor):
|
|
88
86
|
@property
|
89
87
|
def native_value(self) -> float | None: ...
|
90
88
|
|
91
|
-
class PowerWallBatterySensor(BatteryEntity, SensorEntity
|
89
|
+
class PowerWallBatterySensor[_ValueT: _ValueType](BatteryEntity, SensorEntity):
|
92
90
|
entity_description: PowerwallSensorEntityDescription[BatteryResponse, _ValueT]
|
93
91
|
_attr_translation_key: Incomplete
|
94
92
|
_attr_unique_id: Incomplete
|
@@ -19,7 +19,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_e
|
|
19
19
|
|
20
20
|
class RabbitAirFanEntity(RabbitAirBaseEntity, FanEntity):
|
21
21
|
_attr_supported_features: Incomplete
|
22
|
-
_enable_turn_on_off_backwards_compatibility: bool
|
23
22
|
_attr_preset_modes: Incomplete
|
24
23
|
_attr_speed_count: Incomplete
|
25
24
|
def __init__(self, coordinator: RabbitAirDataUpdateCoordinator, entry: ConfigEntry) -> None: ...
|
@@ -13,7 +13,7 @@ from sqlalchemy.dialects import sqlite
|
|
13
13
|
from sqlalchemy.engine.interfaces import Dialect as Dialect
|
14
14
|
from sqlalchemy.orm import DeclarativeBase, Mapped as Mapped
|
15
15
|
from sqlalchemy.types import TypeDecorator as TypeDecorator
|
16
|
-
from typing import Any, Self
|
16
|
+
from typing import Any, Final, Self
|
17
17
|
|
18
18
|
class Base(DeclarativeBase): ...
|
19
19
|
class LegacyBase(DeclarativeBase): ...
|
@@ -44,7 +44,8 @@ METADATA_ID_LAST_UPDATED_INDEX_TS: str
|
|
44
44
|
EVENTS_CONTEXT_ID_BIN_INDEX: str
|
45
45
|
STATES_CONTEXT_ID_BIN_INDEX: str
|
46
46
|
LEGACY_STATES_EVENT_ID_INDEX: str
|
47
|
-
|
47
|
+
LEGACY_STATES_ENTITY_ID_LAST_UPDATED_TS_INDEX: str
|
48
|
+
LEGACY_MAX_LENGTH_EVENT_CONTEXT_ID: Final[int]
|
48
49
|
CONTEXT_ID_BIN_MAX_LENGTH: int
|
49
50
|
MYSQL_COLLATE: str
|
50
51
|
MYSQL_DEFAULT_CHARSET: str
|
@@ -110,6 +111,12 @@ class Events(Base):
|
|
110
111
|
def from_event(event: Event) -> Events: ...
|
111
112
|
def to_native(self, validate_entity_id: bool = True) -> Event | None: ...
|
112
113
|
|
114
|
+
class LegacyEvents(LegacyBase):
|
115
|
+
__table_args__: Incomplete
|
116
|
+
__tablename__ = TABLE_EVENTS
|
117
|
+
event_id: Mapped[int]
|
118
|
+
context_id: Mapped[str | None]
|
119
|
+
|
113
120
|
class EventData(Base):
|
114
121
|
__table_args__: Incomplete
|
115
122
|
__tablename__ = TABLE_EVENT_DATA
|
@@ -163,6 +170,14 @@ class States(Base):
|
|
163
170
|
def from_event(event: Event[EventStateChangedData]) -> States: ...
|
164
171
|
def to_native(self, validate_entity_id: bool = True) -> State | None: ...
|
165
172
|
|
173
|
+
class LegacyStates(LegacyBase):
|
174
|
+
__table_args__: Incomplete
|
175
|
+
__tablename__ = TABLE_STATES
|
176
|
+
state_id: Mapped[int]
|
177
|
+
entity_id: Mapped[str | None]
|
178
|
+
last_updated_ts: Mapped[float | None]
|
179
|
+
context_id: Mapped[str | None]
|
180
|
+
|
166
181
|
class StateAttributes(Base):
|
167
182
|
__table_args__: Incomplete
|
168
183
|
__tablename__ = TABLE_STATE_ATTRIBUTES
|
@@ -199,9 +214,9 @@ class StatisticsBase:
|
|
199
214
|
sum: Mapped[float | None]
|
200
215
|
duration: timedelta
|
201
216
|
@classmethod
|
202
|
-
def from_stats(cls, metadata_id: int, stats: StatisticData) -> Self: ...
|
217
|
+
def from_stats(cls, metadata_id: int, stats: StatisticData, now_timestamp: float | None = None) -> Self: ...
|
203
218
|
@classmethod
|
204
|
-
def from_stats_ts(cls, metadata_id: int, stats: StatisticDataTimestamp) -> Self: ...
|
219
|
+
def from_stats_ts(cls, metadata_id: int, stats: StatisticDataTimestamp, now_timestamp: float | None = None) -> Self: ...
|
205
220
|
|
206
221
|
class Statistics(Base, StatisticsBase):
|
207
222
|
duration: Incomplete
|
@@ -1,6 +1,6 @@
|
|
1
|
-
from ..db_schema import
|
1
|
+
from ..db_schema import StateAttributes as StateAttributes, States as States
|
2
2
|
from ..filters import Filters as Filters
|
3
|
-
from ..models import
|
3
|
+
from ..models import process_timestamp_to_utc_isoformat as process_timestamp_to_utc_isoformat
|
4
4
|
from ..models.legacy import LegacyLazyState as LegacyLazyState, legacy_row_to_compressed_state as legacy_row_to_compressed_state
|
5
5
|
from ..util import execute_stmt_lambda_element as execute_stmt_lambda_element, session_scope as session_scope
|
6
6
|
from .const import LAST_CHANGED_KEY as LAST_CHANGED_KEY, NEED_ATTRIBUTE_DOMAINS as NEED_ATTRIBUTE_DOMAINS, SIGNIFICANT_DOMAINS as SIGNIFICANT_DOMAINS, SIGNIFICANT_DOMAINS_ENTITY_ID_LIKE as SIGNIFICANT_DOMAINS_ENTITY_ID_LIKE, STATE_KEY as STATE_KEY
|
@@ -42,7 +42,7 @@ def _state_changed_during_period_stmt(start_time: datetime, end_time: datetime |
|
|
42
42
|
def state_changes_during_period(hass: HomeAssistant, start_time: datetime, end_time: datetime | None = None, entity_id: str | None = None, no_attributes: bool = False, descending: bool = False, limit: int | None = None, include_start_time_state: bool = True) -> dict[str, list[State]]: ...
|
43
43
|
def _get_last_state_changes_stmt(number_of_states: int, entity_id: str) -> StatementLambdaElement: ...
|
44
44
|
def get_last_state_changes(hass: HomeAssistant, number_of_states: int, entity_id: str) -> dict[str, list[State]]: ...
|
45
|
-
def _get_states_for_entities_stmt(
|
46
|
-
def _get_rows_with_session(hass: HomeAssistant, session: Session, utc_point_in_time: datetime, entity_ids: list[str],
|
45
|
+
def _get_states_for_entities_stmt(run_start_ts: float, utc_point_in_time: datetime, entity_ids: list[str], no_attributes: bool) -> StatementLambdaElement: ...
|
46
|
+
def _get_rows_with_session(hass: HomeAssistant, session: Session, utc_point_in_time: datetime, entity_ids: list[str], *, no_attributes: bool = False) -> Iterable[Row]: ...
|
47
47
|
def _get_single_entity_states_stmt(utc_point_in_time: datetime, entity_id: str, no_attributes: bool = False) -> StatementLambdaElement: ...
|
48
48
|
def _sorted_states_to_dict(hass: HomeAssistant, session: Session, states: Iterable[Row], start_time: datetime, entity_ids: list[str], include_start_time_state: bool = True, minimal_response: bool = False, no_attributes: bool = False, compressed_state_format: bool = False) -> dict[str, list[State | dict[str, Any]]]: ...
|
@@ -1,7 +1,7 @@
|
|
1
1
|
from ..const import LAST_REPORTED_SCHEMA_VERSION as LAST_REPORTED_SCHEMA_VERSION
|
2
|
-
from ..db_schema import SHARED_ATTR_OR_LEGACY_ATTRIBUTES as SHARED_ATTR_OR_LEGACY_ATTRIBUTES, StateAttributes as StateAttributes, States as States
|
2
|
+
from ..db_schema import SHARED_ATTR_OR_LEGACY_ATTRIBUTES as SHARED_ATTR_OR_LEGACY_ATTRIBUTES, StateAttributes as StateAttributes, States as States, StatesMeta as StatesMeta
|
3
3
|
from ..filters import Filters as Filters
|
4
|
-
from ..models import LazyState as LazyState, datetime_to_timestamp_or_none as datetime_to_timestamp_or_none, extract_metadata_ids as extract_metadata_ids,
|
4
|
+
from ..models import LazyState as LazyState, datetime_to_timestamp_or_none as datetime_to_timestamp_or_none, extract_metadata_ids as extract_metadata_ids, row_to_compressed_state as row_to_compressed_state
|
5
5
|
from ..util import execute_stmt_lambda_element as execute_stmt_lambda_element, session_scope as session_scope
|
6
6
|
from .const import LAST_CHANGED_KEY as LAST_CHANGED_KEY, NEED_ATTRIBUTE_DOMAINS as NEED_ATTRIBUTE_DOMAINS, SIGNIFICANT_DOMAINS as SIGNIFICANT_DOMAINS, STATE_KEY as STATE_KEY
|
7
7
|
from _typeshed import Incomplete
|
@@ -29,8 +29,8 @@ def state_changes_during_period(hass: HomeAssistant, start_time: datetime, end_t
|
|
29
29
|
def _get_last_state_changes_single_stmt(metadata_id: int) -> Select: ...
|
30
30
|
def _get_last_state_changes_multiple_stmt(number_of_states: int, metadata_id: int, include_last_reported: bool) -> Select: ...
|
31
31
|
def get_last_state_changes(hass: HomeAssistant, number_of_states: int, entity_id: str) -> dict[str, list[State]]: ...
|
32
|
-
def _get_start_time_state_for_entities_stmt(
|
33
|
-
def
|
34
|
-
def _get_start_time_state_stmt(
|
32
|
+
def _get_start_time_state_for_entities_stmt(epoch_time: float, metadata_ids: list[int], no_attributes: bool, include_last_changed: bool) -> Select: ...
|
33
|
+
def _get_oldest_possible_ts(hass: HomeAssistant, utc_point_in_time: datetime) -> float | None: ...
|
34
|
+
def _get_start_time_state_stmt(epoch_time: float, single_metadata_id: int | None, metadata_ids: list[int], no_attributes: bool, include_last_changed: bool) -> Select: ...
|
35
35
|
def _get_single_entity_start_time_stmt(epoch_time: float, metadata_id: int, no_attributes: bool, include_last_changed: bool, include_last_reported: bool) -> Select: ...
|
36
36
|
def _sorted_states_to_dict(states: Iterable[Row], start_time_ts: float | None, entity_ids: list[str], entity_id_to_metadata_id: dict[str, int | None], minimal_response: bool = False, compressed_state_format: bool = False, descending: bool = False, no_attributes: bool = False) -> dict[str, list[State | dict[str, Any]]]: ...
|
@@ -2,7 +2,7 @@ import abc
|
|
2
2
|
from . import Recorder as Recorder
|
3
3
|
from .auto_repairs.statistics.duplicates import delete_statistics_duplicates as delete_statistics_duplicates, delete_statistics_meta_duplicates as delete_statistics_meta_duplicates
|
4
4
|
from .const import CONTEXT_ID_AS_BINARY_SCHEMA_VERSION as CONTEXT_ID_AS_BINARY_SCHEMA_VERSION, EVENT_TYPE_IDS_SCHEMA_VERSION as EVENT_TYPE_IDS_SCHEMA_VERSION, LEGACY_STATES_EVENT_ID_INDEX_SCHEMA_VERSION as LEGACY_STATES_EVENT_ID_INDEX_SCHEMA_VERSION, STATES_META_SCHEMA_VERSION as STATES_META_SCHEMA_VERSION, SupportedDialect as SupportedDialect
|
5
|
-
from .db_schema import BIG_INTEGER_SQL as BIG_INTEGER_SQL, Base as Base, CONTEXT_ID_BIN_MAX_LENGTH as CONTEXT_ID_BIN_MAX_LENGTH, DOUBLE_PRECISION_TYPE_SQL as DOUBLE_PRECISION_TYPE_SQL, EventTypes as EventTypes, Events as Events,
|
5
|
+
from .db_schema import BIG_INTEGER_SQL as BIG_INTEGER_SQL, Base as Base, CONTEXT_ID_BIN_MAX_LENGTH as CONTEXT_ID_BIN_MAX_LENGTH, DOUBLE_PRECISION_TYPE_SQL as DOUBLE_PRECISION_TYPE_SQL, EventTypes as EventTypes, Events as Events, LEGACY_STATES_ENTITY_ID_LAST_UPDATED_TS_INDEX as LEGACY_STATES_ENTITY_ID_LAST_UPDATED_TS_INDEX, LEGACY_STATES_EVENT_ID_INDEX as LEGACY_STATES_EVENT_ID_INDEX, LegacyBase as LegacyBase, MYSQL_COLLATE as MYSQL_COLLATE, MYSQL_DEFAULT_CHARSET as MYSQL_DEFAULT_CHARSET, MigrationChanges as MigrationChanges, SCHEMA_VERSION as SCHEMA_VERSION, STATISTICS_TABLES as STATISTICS_TABLES, SchemaChanges as SchemaChanges, States as States, StatesMeta as StatesMeta, Statistics as Statistics, StatisticsMeta as StatisticsMeta, StatisticsRuns as StatisticsRuns, StatisticsShortTerm as StatisticsShortTerm, TABLE_STATES as TABLE_STATES
|
6
6
|
from .models import process_timestamp as process_timestamp
|
7
7
|
from .models.time import datetime_to_timestamp_or_none as datetime_to_timestamp_or_none
|
8
8
|
from .queries import batch_cleanup_entity_ids as batch_cleanup_entity_ids, delete_duplicate_short_term_statistics_row as delete_duplicate_short_term_statistics_row, delete_duplicate_statistics_row as delete_duplicate_statistics_row, find_entity_ids_to_migrate as find_entity_ids_to_migrate, find_event_type_to_migrate as find_event_type_to_migrate, find_events_context_ids_to_migrate as find_events_context_ids_to_migrate, find_states_context_ids_to_migrate as find_states_context_ids_to_migrate, find_unmigrated_short_term_statistics_rows as find_unmigrated_short_term_statistics_rows, find_unmigrated_statistics_rows as find_unmigrated_statistics_rows, get_migration_changes as get_migration_changes, has_entity_ids_to_migrate as has_entity_ids_to_migrate, has_event_type_to_migrate as has_event_type_to_migrate, has_events_context_ids_to_migrate as has_events_context_ids_to_migrate, has_states_context_ids_to_migrate as has_states_context_ids_to_migrate, has_used_states_entity_ids as has_used_states_entity_ids, has_used_states_event_ids as has_used_states_event_ids, migrate_single_short_term_statistics_row_to_timestamp as migrate_single_short_term_statistics_row_to_timestamp, migrate_single_statistics_row_to_timestamp as migrate_single_statistics_row_to_timestamp
|
@@ -17,6 +17,7 @@ from homeassistant.core import HomeAssistant as HomeAssistant
|
|
17
17
|
from homeassistant.util.enum import try_parse_enum as try_parse_enum
|
18
18
|
from homeassistant.util.ulid import ulid_at_time as ulid_at_time, ulid_to_bytes as ulid_to_bytes
|
19
19
|
from sqlalchemy.engine import CursorResult as CursorResult, Engine as Engine
|
20
|
+
from sqlalchemy.orm import DeclarativeBase as DeclarativeBase
|
20
21
|
from sqlalchemy.orm.session import Session as Session
|
21
22
|
from sqlalchemy.schema import AddConstraint
|
22
23
|
from sqlalchemy.sql.lambdas import StatementLambdaElement as StatementLambdaElement
|
@@ -42,18 +43,22 @@ _POSTGRESQL_COLUMN_TYPES: Incomplete
|
|
42
43
|
_SQLITE_COLUMN_TYPES: Incomplete
|
43
44
|
_COLUMN_TYPES_FOR_DIALECT: dict[SupportedDialect | None, _ColumnTypesForDialect]
|
44
45
|
|
46
|
+
def _unindexable_legacy_column(instance: Recorder, base: type[DeclarativeBase], err: Exception) -> bool: ...
|
45
47
|
def raise_if_exception_missing_str(ex: Exception, match_substrs: Iterable[str]) -> None: ...
|
46
|
-
def
|
47
|
-
def
|
48
|
+
def _get_initial_schema_version(session: Session) -> int | None: ...
|
49
|
+
def get_initial_schema_version(session_maker: Callable[[], Session]) -> int | None: ...
|
50
|
+
def _get_current_schema_version(session: Session) -> int | None: ...
|
51
|
+
def get_current_schema_version(session_maker: Callable[[], Session]) -> int | None: ...
|
48
52
|
|
49
53
|
@dataclass(frozen=True, kw_only=True)
|
50
54
|
class SchemaValidationStatus:
|
51
55
|
current_version: int
|
56
|
+
initial_version: int
|
52
57
|
migration_needed: bool
|
53
58
|
non_live_data_migration_needed: bool
|
54
59
|
schema_errors: set[str]
|
55
60
|
start_version: int
|
56
|
-
def __init__(self, *, current_version, migration_needed, non_live_data_migration_needed, schema_errors, start_version) -> None: ...
|
61
|
+
def __init__(self, *, current_version, initial_version, migration_needed, non_live_data_migration_needed, schema_errors, start_version) -> None: ...
|
57
62
|
|
58
63
|
def _schema_is_current(current_version: int) -> bool: ...
|
59
64
|
def validate_db_schema(hass: HomeAssistant, instance: Recorder, session_maker: Callable[[], Session]) -> SchemaValidationStatus | None: ...
|
@@ -64,10 +69,10 @@ def _migrate_schema(instance: Recorder, hass: HomeAssistant, engine: Engine, ses
|
|
64
69
|
def migrate_schema_non_live(instance: Recorder, hass: HomeAssistant, engine: Engine, session_maker: Callable[[], Session], schema_status: SchemaValidationStatus) -> SchemaValidationStatus: ...
|
65
70
|
def migrate_schema_live(instance: Recorder, hass: HomeAssistant, engine: Engine, session_maker: Callable[[], Session], schema_status: SchemaValidationStatus) -> SchemaValidationStatus: ...
|
66
71
|
def _get_migration_changes(session: Session) -> dict[str, int]: ...
|
67
|
-
def non_live_data_migration_needed(instance: Recorder, session_maker: Callable[[], Session],
|
72
|
+
def non_live_data_migration_needed(instance: Recorder, session_maker: Callable[[], Session], *, initial_schema_version: int, start_schema_version: int) -> bool: ...
|
68
73
|
def migrate_data_non_live(instance: Recorder, session_maker: Callable[[], Session], schema_status: SchemaValidationStatus) -> None: ...
|
69
74
|
def migrate_data_live(instance: Recorder, session_maker: Callable[[], Session], schema_status: SchemaValidationStatus) -> None: ...
|
70
|
-
def _create_index(session_maker: Callable[[], Session], table_name: str, index_name: str) -> None: ...
|
75
|
+
def _create_index(instance: Recorder, session_maker: Callable[[], Session], table_name: str, index_name: str, *, base: type[DeclarativeBase] = ...) -> None: ...
|
71
76
|
def _execute_or_collect_error(session_maker: Callable[[], Session], query: str, errors: list[str]) -> bool: ...
|
72
77
|
def _drop_index(session_maker: Callable[[], Session], table_name: str, index_name: str, quiet: bool | None = None) -> None: ...
|
73
78
|
def _add_columns(session_maker: Callable[[], Session], table_name: str, columns_def: list[str]) -> None: ...
|
@@ -269,13 +274,15 @@ class DataMigrationStatus:
|
|
269
274
|
def __init__(self, *, needs_migrate, migration_done) -> None: ...
|
270
275
|
|
271
276
|
class BaseMigration(ABC, metaclass=abc.ABCMeta):
|
272
|
-
index_to_drop: tuple[str, str] | None
|
277
|
+
index_to_drop: tuple[str, str, type[DeclarativeBase]] | None
|
273
278
|
required_schema_version: int
|
279
|
+
max_initial_schema_version: int
|
274
280
|
migration_version: int
|
275
281
|
migration_id: str
|
276
|
-
|
282
|
+
initial_schema_version: Incomplete
|
283
|
+
start_schema_version: Incomplete
|
277
284
|
migration_changes: Incomplete
|
278
|
-
def __init__(self,
|
285
|
+
def __init__(self, *, initial_schema_version: int, start_schema_version: int, migration_changes: dict[str, int]) -> None: ...
|
279
286
|
@abstractmethod
|
280
287
|
def migrate_data(self, instance: Recorder) -> bool: ...
|
281
288
|
def _migrate_data(self, instance: Recorder) -> bool: ...
|
@@ -285,10 +292,12 @@ class BaseMigration(ABC, metaclass=abc.ABCMeta):
|
|
285
292
|
@abstractmethod
|
286
293
|
def needs_migrate_impl(self, instance: Recorder, session: Session) -> DataMigrationStatus: ...
|
287
294
|
def needs_migrate(self, instance: Recorder, session: Session) -> bool: ...
|
295
|
+
def _has_needed_index(self, session: Session) -> bool | None: ...
|
288
296
|
|
289
297
|
class BaseOffLineMigration(BaseMigration, metaclass=abc.ABCMeta):
|
290
298
|
def migrate_all(self, instance: Recorder, session_maker: Callable[[], Session]) -> None: ...
|
291
299
|
def migrate_data(self, instance: Recorder) -> bool: ...
|
300
|
+
def _ensure_index_exists(self, instance: Recorder) -> None: ...
|
292
301
|
|
293
302
|
class BaseRunTimeMigration(BaseMigration, metaclass=abc.ABCMeta):
|
294
303
|
task = MigrationTask
|
@@ -302,6 +311,7 @@ class BaseMigrationWithQuery(BaseMigration, metaclass=abc.ABCMeta):
|
|
302
311
|
|
303
312
|
class StatesContextIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
|
304
313
|
required_schema_version = CONTEXT_ID_AS_BINARY_SCHEMA_VERSION
|
314
|
+
max_initial_schema_version: Incomplete
|
305
315
|
migration_id: str
|
306
316
|
migration_version: int
|
307
317
|
index_to_drop: Incomplete
|
@@ -310,30 +320,30 @@ class StatesContextIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
|
|
310
320
|
|
311
321
|
class EventsContextIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
|
312
322
|
required_schema_version = CONTEXT_ID_AS_BINARY_SCHEMA_VERSION
|
323
|
+
max_initial_schema_version: Incomplete
|
313
324
|
migration_id: str
|
314
325
|
migration_version: int
|
315
326
|
index_to_drop: Incomplete
|
316
327
|
def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
|
317
328
|
def needs_migrate_query(self) -> StatementLambdaElement: ...
|
318
329
|
|
319
|
-
class EventTypeIDMigration(BaseMigrationWithQuery,
|
330
|
+
class EventTypeIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
|
320
331
|
required_schema_version = EVENT_TYPE_IDS_SCHEMA_VERSION
|
332
|
+
max_initial_schema_version: Incomplete
|
321
333
|
migration_id: str
|
322
|
-
task = CommitBeforeMigrationTask
|
323
334
|
def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
|
324
|
-
def migration_done(self, instance: Recorder, session: Session) -> None: ...
|
325
335
|
def needs_migrate_query(self) -> StatementLambdaElement: ...
|
326
336
|
|
327
|
-
class EntityIDMigration(BaseMigrationWithQuery,
|
337
|
+
class EntityIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
|
328
338
|
required_schema_version = STATES_META_SCHEMA_VERSION
|
339
|
+
max_initial_schema_version: Incomplete
|
329
340
|
migration_id: str
|
330
|
-
task = CommitBeforeMigrationTask
|
331
341
|
def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
|
332
|
-
def migration_done(self, instance: Recorder, session: Session) -> None: ...
|
333
342
|
def needs_migrate_query(self) -> StatementLambdaElement: ...
|
334
343
|
|
335
344
|
class EventIDPostMigration(BaseRunTimeMigration):
|
336
345
|
migration_id: str
|
346
|
+
max_initial_schema_version: Incomplete
|
337
347
|
task = MigrationTask
|
338
348
|
migration_version: int
|
339
349
|
def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
|
@@ -341,15 +351,15 @@ class EventIDPostMigration(BaseRunTimeMigration):
|
|
341
351
|
def _legacy_event_id_foreign_key_exists(instance: Recorder) -> bool: ...
|
342
352
|
def needs_migrate_impl(self, instance: Recorder, session: Session) -> DataMigrationStatus: ...
|
343
353
|
|
344
|
-
class EntityIDPostMigration(BaseMigrationWithQuery,
|
354
|
+
class EntityIDPostMigration(BaseMigrationWithQuery, BaseOffLineMigration):
|
345
355
|
migration_id: str
|
346
|
-
|
356
|
+
max_initial_schema_version: Incomplete
|
347
357
|
index_to_drop: Incomplete
|
348
358
|
def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
|
349
359
|
def needs_migrate_query(self) -> StatementLambdaElement: ...
|
350
360
|
|
351
|
-
NON_LIVE_DATA_MIGRATORS:
|
352
|
-
LIVE_DATA_MIGRATORS:
|
361
|
+
NON_LIVE_DATA_MIGRATORS: tuple[type[BaseOffLineMigration], ...]
|
362
|
+
LIVE_DATA_MIGRATORS: tuple[type[BaseRunTimeMigration], ...]
|
353
363
|
|
354
364
|
def _mark_migration_done(session: Session, migration: type[BaseMigration]) -> None: ...
|
355
365
|
def rebuild_sqlite_table(session_maker: Callable[[], Session], engine: Engine, table: type[Base]) -> bool: ...
|
@@ -26,6 +26,9 @@ class LazyState(State):
|
|
26
26
|
def _last_reported_ts(self) -> float | None: ...
|
27
27
|
def last_reported(self) -> datetime: ...
|
28
28
|
def last_updated(self) -> datetime: ...
|
29
|
+
def last_updated_timestamp(self) -> float: ...
|
30
|
+
def last_changed_timestamp(self) -> float: ...
|
31
|
+
def last_reported_timestamp(self) -> float: ...
|
29
32
|
def as_dict(self) -> dict[str, Any]: ...
|
30
33
|
|
31
34
|
def row_to_compressed_state(row: Row, attr_cache: dict[str, dict[str, Any]], start_time_ts: float | None, entity_id: str, state: str, last_updated_ts: float | None, no_attributes: bool) -> dict[str, Any]: ...
|
@@ -10,12 +10,10 @@ def get_shared_event_datas(hashes: list[int]) -> StatementLambdaElement: ...
|
|
10
10
|
def find_event_type_ids(event_types: Iterable[str]) -> StatementLambdaElement: ...
|
11
11
|
def find_all_states_metadata_ids() -> StatementLambdaElement: ...
|
12
12
|
def find_states_metadata_ids(entity_ids: Iterable[str]) -> StatementLambdaElement: ...
|
13
|
-
def _state_attrs_exist(attr: int | None) -> Select: ...
|
14
13
|
def attributes_ids_exist_in_states_with_fast_in_distinct(attributes_ids: Iterable[int]) -> StatementLambdaElement: ...
|
15
|
-
def attributes_ids_exist_in_states(
|
14
|
+
def attributes_ids_exist_in_states(attributes_ids: Iterable[int]) -> StatementLambdaElement: ...
|
16
15
|
def data_ids_exist_in_events_with_fast_in_distinct(data_ids: Iterable[int]) -> StatementLambdaElement: ...
|
17
|
-
def
|
18
|
-
def data_ids_exist_in_events(id1: int, id2: int | None, id3: int | None, id4: int | None, id5: int | None, id6: int | None, id7: int | None, id8: int | None, id9: int | None, id10: int | None, id11: int | None, id12: int | None, id13: int | None, id14: int | None, id15: int | None, id16: int | None, id17: int | None, id18: int | None, id19: int | None, id20: int | None, id21: int | None, id22: int | None, id23: int | None, id24: int | None, id25: int | None, id26: int | None, id27: int | None, id28: int | None, id29: int | None, id30: int | None, id31: int | None, id32: int | None, id33: int | None, id34: int | None, id35: int | None, id36: int | None, id37: int | None, id38: int | None, id39: int | None, id40: int | None, id41: int | None, id42: int | None, id43: int | None, id44: int | None, id45: int | None, id46: int | None, id47: int | None, id48: int | None, id49: int | None, id50: int | None, id51: int | None, id52: int | None, id53: int | None, id54: int | None, id55: int | None, id56: int | None, id57: int | None, id58: int | None, id59: int | None, id60: int | None, id61: int | None, id62: int | None, id63: int | None, id64: int | None, id65: int | None, id66: int | None, id67: int | None, id68: int | None, id69: int | None, id70: int | None, id71: int | None, id72: int | None, id73: int | None, id74: int | None, id75: int | None, id76: int | None, id77: int | None, id78: int | None, id79: int | None, id80: int | None, id81: int | None, id82: int | None, id83: int | None, id84: int | None, id85: int | None, id86: int | None, id87: int | None, id88: int | None, id89: int | None, id90: int | None, id91: int | None, id92: int | None, id93: int | None, id94: int | None, id95: int | None, id96: int | None, id97: int | None, id98: int | None, id99: int | None, id100: int | None) -> StatementLambdaElement: ...
|
16
|
+
def data_ids_exist_in_events(data_ids: Iterable[int]) -> StatementLambdaElement: ...
|
19
17
|
def disconnect_states_rows(state_ids: Iterable[int]) -> StatementLambdaElement: ...
|
20
18
|
def delete_states_rows(state_ids: Iterable[int]) -> StatementLambdaElement: ...
|
21
19
|
def delete_event_data_rows(data_ids: Iterable[int]) -> StatementLambdaElement: ...
|
@@ -26,6 +24,7 @@ def delete_event_rows(event_ids: Iterable[int]) -> StatementLambdaElement: ...
|
|
26
24
|
def delete_recorder_runs_rows(purge_before: datetime, current_run_id: int) -> StatementLambdaElement: ...
|
27
25
|
def find_events_to_purge(purge_before: float, max_bind_vars: int) -> StatementLambdaElement: ...
|
28
26
|
def find_states_to_purge(purge_before: float, max_bind_vars: int) -> StatementLambdaElement: ...
|
27
|
+
def find_oldest_state() -> StatementLambdaElement: ...
|
29
28
|
def find_short_term_statistics_to_purge(purge_before: datetime, max_bind_vars: int) -> StatementLambdaElement: ...
|
30
29
|
def find_statistics_runs_to_purge(purge_before: datetime, max_bind_vars: int) -> StatementLambdaElement: ...
|
31
30
|
def find_latest_statistics_runs_run_id() -> StatementLambdaElement: ...
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import dataclasses
|
2
2
|
from . import Recorder as Recorder
|
3
3
|
from .const import DOMAIN as DOMAIN, EVENT_RECORDER_5MIN_STATISTICS_GENERATED as EVENT_RECORDER_5MIN_STATISTICS_GENERATED, EVENT_RECORDER_HOURLY_STATISTICS_GENERATED as EVENT_RECORDER_HOURLY_STATISTICS_GENERATED, INTEGRATION_PLATFORM_COMPILE_STATISTICS as INTEGRATION_PLATFORM_COMPILE_STATISTICS, INTEGRATION_PLATFORM_LIST_STATISTIC_IDS as INTEGRATION_PLATFORM_LIST_STATISTIC_IDS, INTEGRATION_PLATFORM_UPDATE_STATISTICS_ISSUES as INTEGRATION_PLATFORM_UPDATE_STATISTICS_ISSUES, INTEGRATION_PLATFORM_VALIDATE_STATISTICS as INTEGRATION_PLATFORM_VALIDATE_STATISTICS, SupportedDialect as SupportedDialect
|
4
|
-
from .db_schema import STATISTICS_TABLES as STATISTICS_TABLES, Statistics as Statistics, StatisticsBase as StatisticsBase, StatisticsRuns as StatisticsRuns, StatisticsShortTerm as StatisticsShortTerm
|
4
|
+
from .db_schema import STATISTICS_TABLES as STATISTICS_TABLES, Statistics as Statistics, StatisticsBase as StatisticsBase, StatisticsMeta as StatisticsMeta, StatisticsRuns as StatisticsRuns, StatisticsShortTerm as StatisticsShortTerm
|
5
5
|
from .models import StatisticData as StatisticData, StatisticDataTimestamp as StatisticDataTimestamp, StatisticMetaData as StatisticMetaData, StatisticResult as StatisticResult, datetime_to_timestamp_or_none as datetime_to_timestamp_or_none, process_timestamp as process_timestamp
|
6
6
|
from .util import execute as execute, execute_stmt_lambda_element as execute_stmt_lambda_element, filter_unique_constraint_integrity_error as filter_unique_constraint_integrity_error, get_instance as get_instance, retryable_database_job as retryable_database_job, session_scope as session_scope
|
7
7
|
from _typeshed import Incomplete
|
@@ -87,7 +87,7 @@ def compile_statistics(instance: Recorder, start: datetime, fire_events: bool) -
|
|
87
87
|
def _get_first_id_stmt(start: datetime) -> StatementLambdaElement: ...
|
88
88
|
def _compile_statistics(instance: Recorder, session: Session, start: datetime, fire_events: bool) -> set[str]: ...
|
89
89
|
def _adjust_sum_statistics(session: Session, table: type[StatisticsBase], metadata_id: int, start_time: datetime, adj: float) -> None: ...
|
90
|
-
def _insert_statistics(session: Session, table: type[StatisticsBase], metadata_id: int, statistic: StatisticData) -> StatisticsBase | None: ...
|
90
|
+
def _insert_statistics(session: Session, table: type[StatisticsBase], metadata_id: int, statistic: StatisticData, now_timestamp: float) -> StatisticsBase | None: ...
|
91
91
|
def _update_statistics(session: Session, table: type[StatisticsBase], stat_id: int, statistic: StatisticData) -> None: ...
|
92
92
|
def get_metadata_with_session(instance: Recorder, session: Session, *, statistic_ids: set[str] | None = None, statistic_type: Literal['mean', 'sum'] | None = None, statistic_source: str | None = None) -> dict[str, tuple[int, StatisticMetaData]]: ...
|
93
93
|
def get_metadata(hass: HomeAssistant, *, statistic_ids: set[str] | None = None, statistic_type: Literal['mean', 'sum'] | None = None, statistic_source: str | None = None) -> dict[str, tuple[int, StatisticMetaData]]: ...
|
@@ -15,7 +15,6 @@ from typing import Any
|
|
15
15
|
CACHE_SIZE: int
|
16
16
|
|
17
17
|
class EventTypeManager(BaseLRUTableManager[EventTypes]):
|
18
|
-
active: bool
|
19
18
|
_non_existent_event_types: Incomplete
|
20
19
|
def __init__(self, recorder: Recorder) -> None: ...
|
21
20
|
def load(self, events: list[Event], session: Session) -> None: ...
|
@@ -1,22 +1,12 @@
|
|
1
1
|
from ..db_schema import RecorderRuns as RecorderRuns
|
2
|
-
from ..models import process_timestamp as process_timestamp
|
3
2
|
from _typeshed import Incomplete
|
4
|
-
from dataclasses import dataclass
|
5
3
|
from datetime import datetime
|
6
4
|
from sqlalchemy.orm.session import Session as Session
|
7
5
|
|
8
|
-
def _find_recorder_run_for_start_time(run_history: _RecorderRunsHistory, start: datetime) -> RecorderRuns | None: ...
|
9
|
-
|
10
|
-
@dataclass(frozen=True)
|
11
|
-
class _RecorderRunsHistory:
|
12
|
-
run_timestamps: list[int]
|
13
|
-
runs_by_timestamp: dict[int, RecorderRuns]
|
14
|
-
def __init__(self, run_timestamps, runs_by_timestamp) -> None: ...
|
15
|
-
|
16
6
|
class RecorderRunsManager:
|
17
7
|
_recording_start: Incomplete
|
18
8
|
_current_run_info: Incomplete
|
19
|
-
|
9
|
+
_first_run: Incomplete
|
20
10
|
def __init__(self) -> None: ...
|
21
11
|
@property
|
22
12
|
def recording_start(self) -> datetime: ...
|
@@ -26,7 +16,6 @@ class RecorderRunsManager:
|
|
26
16
|
def current(self) -> RecorderRuns: ...
|
27
17
|
@property
|
28
18
|
def active(self) -> bool: ...
|
29
|
-
def get(self, start: datetime) -> RecorderRuns | None: ...
|
30
19
|
def start(self, session: Session) -> None: ...
|
31
20
|
def reset(self) -> None: ...
|
32
21
|
def end(self, session: Session) -> None: ...
|
@@ -1,11 +1,17 @@
|
|
1
1
|
from ..db_schema import States as States
|
2
|
+
from ..queries import find_oldest_state as find_oldest_state
|
3
|
+
from ..util import execute_stmt_lambda_element as execute_stmt_lambda_element
|
2
4
|
from _typeshed import Incomplete
|
5
|
+
from sqlalchemy.orm.session import Session as Session
|
3
6
|
|
4
7
|
class StatesManager:
|
5
8
|
_pending: Incomplete
|
6
9
|
_last_committed_id: Incomplete
|
7
10
|
_last_reported: Incomplete
|
11
|
+
_oldest_ts: Incomplete
|
8
12
|
def __init__(self) -> None: ...
|
13
|
+
@property
|
14
|
+
def oldest_ts(self) -> float | None: ...
|
9
15
|
def pop_pending(self, entity_id: str) -> States | None: ...
|
10
16
|
def pop_committed(self, entity_id: str) -> int | None: ...
|
11
17
|
def add_pending(self, entity_id: str, state: States) -> None: ...
|
@@ -13,5 +19,6 @@ class StatesManager:
|
|
13
19
|
def get_pending_last_reported_timestamp(self) -> dict[int, float]: ...
|
14
20
|
def post_commit_pending(self) -> None: ...
|
15
21
|
def reset(self) -> None: ...
|
22
|
+
def load_from_db(self, session: Session) -> None: ...
|
16
23
|
def evict_purged_state_ids(self, purged_state_ids: set[int]) -> None: ...
|
17
24
|
def evict_purged_entity_ids(self, purged_entity_ids: set[str]) -> None: ...
|
@@ -4,7 +4,6 @@ from enum import IntFlag
|
|
4
4
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
5
5
|
from homeassistant.const import ATTR_COMMAND as ATTR_COMMAND, SERVICE_TOGGLE as SERVICE_TOGGLE, SERVICE_TURN_OFF as SERVICE_TURN_OFF, SERVICE_TURN_ON as SERVICE_TURN_ON, STATE_ON as STATE_ON
|
6
6
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
7
|
-
from homeassistant.helpers.deprecation import DeprecatedConstantEnum as DeprecatedConstantEnum, all_with_deprecated_constants as all_with_deprecated_constants, check_if_deprecated_constant as check_if_deprecated_constant, dir_with_deprecated_constants as dir_with_deprecated_constants
|
8
7
|
from homeassistant.helpers.entity import ToggleEntity as ToggleEntity, ToggleEntityDescription as ToggleEntityDescription
|
9
8
|
from homeassistant.helpers.entity_component import EntityComponent as EntityComponent
|
10
9
|
from homeassistant.helpers.typing import ConfigType as ConfigType
|
@@ -43,9 +42,6 @@ class RemoteEntityFeature(IntFlag):
|
|
43
42
|
DELETE_COMMAND = 2
|
44
43
|
ACTIVITY = 4
|
45
44
|
|
46
|
-
_DEPRECATED_SUPPORT_LEARN_COMMAND: Incomplete
|
47
|
-
_DEPRECATED_SUPPORT_DELETE_COMMAND: Incomplete
|
48
|
-
_DEPRECATED_SUPPORT_ACTIVITY: Incomplete
|
49
45
|
REMOTE_SERVICE_ACTIVITY_SCHEMA: Incomplete
|
50
46
|
|
51
47
|
def is_on(hass: HomeAssistant, entity_id: str) -> bool: ...
|
@@ -65,8 +61,6 @@ class RemoteEntity(ToggleEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_)
|
|
65
61
|
_attr_current_activity: str | None
|
66
62
|
_attr_supported_features: RemoteEntityFeature
|
67
63
|
def supported_features(self) -> RemoteEntityFeature: ...
|
68
|
-
@property
|
69
|
-
def supported_features_compat(self) -> RemoteEntityFeature: ...
|
70
64
|
def current_activity(self) -> str | None: ...
|
71
65
|
def activity_list(self) -> list[str] | None: ...
|
72
66
|
@property
|
@@ -77,7 +71,3 @@ class RemoteEntity(ToggleEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_)
|
|
77
71
|
async def async_learn_command(self, **kwargs: Any) -> None: ...
|
78
72
|
def delete_command(self, **kwargs: Any) -> None: ...
|
79
73
|
async def async_delete_command(self, **kwargs: Any) -> None: ...
|
80
|
-
|
81
|
-
__getattr__: Incomplete
|
82
|
-
__dir__: Incomplete
|
83
|
-
__all__: Incomplete
|
@@ -7,6 +7,8 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEnti
|
|
7
7
|
from homeassistant.helpers.typing import StateType as StateType
|
8
8
|
from renault_api.kamereon.models import KamereonVehicleBatteryStatusData
|
9
9
|
|
10
|
+
PARALLEL_UPDATES: int
|
11
|
+
|
10
12
|
@dataclass(frozen=True, kw_only=True)
|
11
13
|
class RenaultBinarySensorEntityDescription(BinarySensorEntityDescription, RenaultDataEntityDescription):
|
12
14
|
on_key: str
|
@@ -7,6 +7,8 @@ from homeassistant.core import HomeAssistant as HomeAssistant
|
|
7
7
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
|
8
8
|
from typing import Any
|
9
9
|
|
10
|
+
PARALLEL_UPDATES: int
|
11
|
+
|
10
12
|
@dataclass(frozen=True, kw_only=True)
|
11
13
|
class RenaultButtonEntityDescription(ButtonEntityDescription):
|
12
14
|
async_press: Callable[[RenaultButtonEntity], Coroutine[Any, Any, Any]]
|
@@ -7,10 +7,11 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as Da
|
|
7
7
|
from renault_api.kamereon.models import KamereonVehicleDataAttributes
|
8
8
|
from typing import TypeVar
|
9
9
|
|
10
|
-
T = TypeVar('T', bound=KamereonVehicleDataAttributes
|
10
|
+
T = TypeVar('T', bound=KamereonVehicleDataAttributes)
|
11
11
|
_PARALLEL_SEMAPHORE: Incomplete
|
12
12
|
|
13
13
|
class RenaultDataUpdateCoordinator(DataUpdateCoordinator[T]):
|
14
|
+
update_method: Callable[[], Awaitable[T]]
|
14
15
|
access_denied: bool
|
15
16
|
not_supported: bool
|
16
17
|
_has_already_worked: bool
|
@@ -6,6 +6,8 @@ from homeassistant.core import HomeAssistant as HomeAssistant
|
|
6
6
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
|
7
7
|
from renault_api.kamereon.models import KamereonVehicleLocationData
|
8
8
|
|
9
|
+
PARALLEL_UPDATES: int
|
10
|
+
|
9
11
|
@dataclass(frozen=True, kw_only=True)
|
10
12
|
class RenaultTrackerEntityDescription(TrackerEntityDescription, RenaultDataEntityDescription):
|
11
13
|
def __init__(self, coordinator, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=...) -> None: ...
|
@@ -7,6 +7,8 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEnti
|
|
7
7
|
from homeassistant.helpers.typing import StateType as StateType
|
8
8
|
from renault_api.kamereon.models import KamereonVehicleBatteryStatusData
|
9
9
|
|
10
|
+
PARALLEL_UPDATES: int
|
11
|
+
|
10
12
|
@dataclass(frozen=True, kw_only=True)
|
11
13
|
class RenaultSelectEntityDescription(SelectEntityDescription, RenaultDataEntityDescription):
|
12
14
|
data_key: str
|