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
@@ -13,7 +13,6 @@ from homeassistant.const import ATTR_ENTITY_ID as ATTR_ENTITY_ID, ATTR_MODE as A
|
|
13
13
|
from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, Context as Context, CoreState as CoreState, Event as Event, HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, callback as callback, split_entity_id as split_entity_id, valid_entity_id as valid_entity_id
|
14
14
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceNotFound as ServiceNotFound, TemplateError as TemplateError
|
15
15
|
from homeassistant.helpers import condition as condition
|
16
|
-
from homeassistant.helpers.deprecation import DeprecatedConstant as DeprecatedConstant, 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
|
17
16
|
from homeassistant.helpers.entity import ToggleEntity as ToggleEntity
|
18
17
|
from homeassistant.helpers.entity_component import EntityComponent as EntityComponent
|
19
18
|
from homeassistant.helpers.issue_registry import IssueSeverity as IssueSeverity, async_create_issue as async_create_issue, async_delete_issue as async_delete_issue
|
@@ -22,7 +21,7 @@ from homeassistant.helpers.script import ATTR_CUR as ATTR_CUR, ATTR_MAX as ATTR_
|
|
22
21
|
from homeassistant.helpers.script_variables import ScriptVariables as ScriptVariables
|
23
22
|
from homeassistant.helpers.service import ReloadServiceHelper as ReloadServiceHelper, async_register_admin_service as async_register_admin_service
|
24
23
|
from homeassistant.helpers.trace import TraceElement as TraceElement, script_execution_set as script_execution_set, trace_append_element as trace_append_element, trace_get as trace_get, trace_path as trace_path
|
25
|
-
from homeassistant.helpers.trigger import
|
24
|
+
from homeassistant.helpers.trigger import async_initialize_triggers as async_initialize_triggers
|
26
25
|
from homeassistant.helpers.typing import ConfigType as ConfigType
|
27
26
|
from homeassistant.loader import bind_hass as bind_hass
|
28
27
|
from homeassistant.util.dt import parse_datetime as parse_datetime
|
@@ -45,10 +44,6 @@ class IfAction(Protocol):
|
|
45
44
|
config: list[ConfigType]
|
46
45
|
def __call__(self, variables: Mapping[str, Any] | None = None) -> bool: ...
|
47
46
|
|
48
|
-
_DEPRECATED_AutomationActionType: Incomplete
|
49
|
-
_DEPRECATED_AutomationTriggerData: Incomplete
|
50
|
-
_DEPRECATED_AutomationTriggerInfo: Incomplete
|
51
|
-
|
52
47
|
def is_on(hass: HomeAssistant, entity_id: str) -> bool: ...
|
53
48
|
def _automations_with_x(hass: HomeAssistant, referenced_id: str, property_name: str) -> list[str]: ...
|
54
49
|
def _x_in_automation(hass: HomeAssistant, entity_id: str, property_name: str) -> list[str]: ...
|
@@ -169,7 +164,3 @@ async def _async_process_if(hass: HomeAssistant, name: str, config: dict[str, An
|
|
169
164
|
def _trigger_extract_devices(trigger_conf: dict) -> list[str]: ...
|
170
165
|
def _trigger_extract_entities(trigger_conf: dict) -> list[str]: ...
|
171
166
|
def websocket_config(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
172
|
-
|
173
|
-
__getattr__: Incomplete
|
174
|
-
__dir__: Incomplete
|
175
|
-
__all__: Incomplete
|
@@ -1,12 +1,5 @@
|
|
1
|
-
from .
|
2
|
-
from .
|
3
|
-
from .
|
4
|
-
from .websocket import async_register_websocket_handlers as async_register_websocket_handlers
|
5
|
-
from _typeshed import Incomplete
|
6
|
-
from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall
|
7
|
-
from homeassistant.helpers.hassio import is_hassio as is_hassio
|
8
|
-
from homeassistant.helpers.typing import ConfigType as ConfigType
|
1
|
+
from .agent import BackupAgent as BackupAgent, BackupAgentError as BackupAgentError, BackupAgentPlatformProtocol as BackupAgentPlatformProtocol, LocalBackupAgent as LocalBackupAgent
|
2
|
+
from .manager import BackupPlatformProtocol as BackupPlatformProtocol, BackupReaderWriter as BackupReaderWriter, CreateBackupEvent as CreateBackupEvent, ManagerBackup as ManagerBackup, NewBackup as NewBackup, WrittenBackup as WrittenBackup
|
3
|
+
from .models import AddonInfo as AddonInfo, AgentBackup as AgentBackup, Folder as Folder
|
9
4
|
|
10
|
-
|
11
|
-
|
12
|
-
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
|
5
|
+
__all__ = ['AddonInfo', 'AgentBackup', 'ManagerBackup', 'BackupAgent', 'BackupAgentError', 'BackupAgentPlatformProtocol', 'BackupPlatformProtocol', 'BackupReaderWriter', 'CreateBackupEvent', 'Folder', 'LocalBackupAgent', 'NewBackup', 'WrittenBackup']
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import abc
|
2
|
+
from .models import AgentBackup as AgentBackup
|
3
|
+
from collections.abc import AsyncIterator, Callable as Callable, Coroutine
|
4
|
+
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
5
|
+
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
6
|
+
from pathlib import Path
|
7
|
+
from typing import Any, Protocol
|
8
|
+
|
9
|
+
class BackupAgentError(HomeAssistantError): ...
|
10
|
+
|
11
|
+
class BackupAgentUnreachableError(BackupAgentError):
|
12
|
+
_message: str
|
13
|
+
|
14
|
+
class BackupAgent(abc.ABC, metaclass=abc.ABCMeta):
|
15
|
+
domain: str
|
16
|
+
name: str
|
17
|
+
def agent_id(self) -> str: ...
|
18
|
+
@abc.abstractmethod
|
19
|
+
async def async_download_backup(self, backup_id: str, **kwargs: Any) -> AsyncIterator[bytes]: ...
|
20
|
+
@abc.abstractmethod
|
21
|
+
async def async_upload_backup(self, *, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], backup: AgentBackup, **kwargs: Any) -> None: ...
|
22
|
+
@abc.abstractmethod
|
23
|
+
async def async_delete_backup(self, backup_id: str, **kwargs: Any) -> None: ...
|
24
|
+
@abc.abstractmethod
|
25
|
+
async def async_list_backups(self, **kwargs: Any) -> list[AgentBackup]: ...
|
26
|
+
@abc.abstractmethod
|
27
|
+
async def async_get_backup(self, backup_id: str, **kwargs: Any) -> AgentBackup | None: ...
|
28
|
+
|
29
|
+
class LocalBackupAgent(BackupAgent, metaclass=abc.ABCMeta):
|
30
|
+
@abc.abstractmethod
|
31
|
+
def get_backup_path(self, backup_id: str) -> Path: ...
|
32
|
+
|
33
|
+
class BackupAgentPlatformProtocol(Protocol):
|
34
|
+
async def async_get_backup_agents(self, hass: HomeAssistant, **kwargs: Any) -> list[BackupAgent]: ...
|
35
|
+
def async_register_backup_agents_listener(self, hass: HomeAssistant, *, listener: Callable[[], None], **kwargs: Any) -> Callable[[], None]: ...
|
@@ -0,0 +1,29 @@
|
|
1
|
+
from .agent import BackupAgent as BackupAgent, LocalBackupAgent as LocalBackupAgent
|
2
|
+
from .const import DOMAIN as DOMAIN, LOGGER as LOGGER
|
3
|
+
from .models import AgentBackup as AgentBackup
|
4
|
+
from .util import read_backup as read_backup
|
5
|
+
from _typeshed import Incomplete
|
6
|
+
from collections.abc import AsyncIterator, Callable as Callable, Coroutine
|
7
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
8
|
+
from homeassistant.helpers.hassio import is_hassio as is_hassio
|
9
|
+
from pathlib import Path
|
10
|
+
from typing import Any
|
11
|
+
|
12
|
+
async def async_get_backup_agents(hass: HomeAssistant, **kwargs: Any) -> list[BackupAgent]: ...
|
13
|
+
|
14
|
+
class CoreLocalBackupAgent(LocalBackupAgent):
|
15
|
+
domain = DOMAIN
|
16
|
+
name: str
|
17
|
+
_hass: Incomplete
|
18
|
+
_backup_dir: Incomplete
|
19
|
+
_backups: Incomplete
|
20
|
+
_loaded_backups: bool
|
21
|
+
def __init__(self, hass: HomeAssistant) -> None: ...
|
22
|
+
async def _load_backups(self) -> None: ...
|
23
|
+
def _read_backups(self) -> dict[str, AgentBackup]: ...
|
24
|
+
async def async_download_backup(self, backup_id: str, **kwargs: Any) -> AsyncIterator[bytes]: ...
|
25
|
+
async def async_upload_backup(self, *, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], backup: AgentBackup, **kwargs: Any) -> None: ...
|
26
|
+
async def async_list_backups(self, **kwargs: Any) -> list[AgentBackup]: ...
|
27
|
+
async def async_get_backup(self, backup_id: str, **kwargs: Any) -> AgentBackup | None: ...
|
28
|
+
def get_backup_path(self, backup_id: str) -> Path: ...
|
29
|
+
async def async_delete_backup(self, backup_id: str, **kwargs: Any) -> None: ...
|
@@ -0,0 +1,117 @@
|
|
1
|
+
from .const import LOGGER as LOGGER
|
2
|
+
from .manager import BackupManager as BackupManager, ManagerBackup as ManagerBackup
|
3
|
+
from .models import Folder as Folder
|
4
|
+
from _typeshed import Incomplete
|
5
|
+
from collections.abc import Callable as Callable
|
6
|
+
from cronsim import CronSim
|
7
|
+
from dataclasses import dataclass
|
8
|
+
from datetime import datetime
|
9
|
+
from enum import StrEnum
|
10
|
+
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
11
|
+
from homeassistant.helpers.event import async_call_later as async_call_later, async_track_point_in_time as async_track_point_in_time
|
12
|
+
from homeassistant.helpers.typing import UNDEFINED as UNDEFINED, UndefinedType as UndefinedType
|
13
|
+
from typing import Self, TypedDict
|
14
|
+
|
15
|
+
CRON_PATTERN_DAILY: str
|
16
|
+
CRON_PATTERN_WEEKLY: str
|
17
|
+
|
18
|
+
class StoredBackupConfig(TypedDict):
|
19
|
+
create_backup: StoredCreateBackupConfig
|
20
|
+
last_attempted_automatic_backup: str | None
|
21
|
+
last_completed_automatic_backup: str | None
|
22
|
+
retention: StoredRetentionConfig
|
23
|
+
schedule: StoredBackupSchedule
|
24
|
+
|
25
|
+
@dataclass(kw_only=True)
|
26
|
+
class BackupConfigData:
|
27
|
+
create_backup: CreateBackupConfig
|
28
|
+
last_attempted_automatic_backup: datetime | None = ...
|
29
|
+
last_completed_automatic_backup: datetime | None = ...
|
30
|
+
retention: RetentionConfig
|
31
|
+
schedule: BackupSchedule
|
32
|
+
@classmethod
|
33
|
+
def from_dict(cls, data: StoredBackupConfig) -> Self: ...
|
34
|
+
def to_dict(self) -> StoredBackupConfig: ...
|
35
|
+
def __init__(self, *, create_backup, last_attempted_automatic_backup=..., last_completed_automatic_backup=..., retention, schedule) -> None: ...
|
36
|
+
|
37
|
+
class BackupConfig:
|
38
|
+
data: Incomplete
|
39
|
+
_manager: Incomplete
|
40
|
+
def __init__(self, hass: HomeAssistant, manager: BackupManager) -> None: ...
|
41
|
+
def load(self, stored_config: StoredBackupConfig) -> None: ...
|
42
|
+
async def update(self, *, create_backup: CreateBackupParametersDict | UndefinedType = ..., retention: RetentionParametersDict | UndefinedType = ..., schedule: ScheduleState | UndefinedType = ...) -> None: ...
|
43
|
+
|
44
|
+
@dataclass(kw_only=True)
|
45
|
+
class RetentionConfig:
|
46
|
+
copies: int | None = ...
|
47
|
+
days: int | None = ...
|
48
|
+
def apply(self, manager: BackupManager) -> None: ...
|
49
|
+
def to_dict(self) -> StoredRetentionConfig: ...
|
50
|
+
def _schedule_next(self, manager: BackupManager) -> None: ...
|
51
|
+
def _unschedule_next(self, manager: BackupManager) -> None: ...
|
52
|
+
def __init__(self, *, copies=..., days=...) -> None: ...
|
53
|
+
|
54
|
+
class StoredRetentionConfig(TypedDict):
|
55
|
+
copies: int | None
|
56
|
+
days: int | None
|
57
|
+
|
58
|
+
class RetentionParametersDict(TypedDict, total=False):
|
59
|
+
copies: int | None
|
60
|
+
days: int | None
|
61
|
+
|
62
|
+
class StoredBackupSchedule(TypedDict):
|
63
|
+
state: ScheduleState
|
64
|
+
|
65
|
+
class ScheduleState(StrEnum):
|
66
|
+
NEVER = 'never'
|
67
|
+
DAILY = 'daily'
|
68
|
+
MONDAY = 'mon'
|
69
|
+
TUESDAY = 'tue'
|
70
|
+
WEDNESDAY = 'wed'
|
71
|
+
THURSDAY = 'thu'
|
72
|
+
FRIDAY = 'fri'
|
73
|
+
SATURDAY = 'sat'
|
74
|
+
SUNDAY = 'sun'
|
75
|
+
|
76
|
+
@dataclass(kw_only=True)
|
77
|
+
class BackupSchedule:
|
78
|
+
state: ScheduleState = ...
|
79
|
+
cron_event: CronSim | None = ...
|
80
|
+
def apply(self, manager: BackupManager) -> None: ...
|
81
|
+
def _schedule_next(self, cron_pattern: str, manager: BackupManager) -> None: ...
|
82
|
+
def to_dict(self) -> StoredBackupSchedule: ...
|
83
|
+
def _unschedule_next(self, manager: BackupManager) -> None: ...
|
84
|
+
def __init__(self, *, state=...) -> None: ...
|
85
|
+
|
86
|
+
@dataclass(kw_only=True)
|
87
|
+
class CreateBackupConfig:
|
88
|
+
agent_ids: list[str] = ...
|
89
|
+
include_addons: list[str] | None = ...
|
90
|
+
include_all_addons: bool = ...
|
91
|
+
include_database: bool = ...
|
92
|
+
include_folders: list[Folder] | None = ...
|
93
|
+
name: str | None = ...
|
94
|
+
password: str | None = ...
|
95
|
+
def to_dict(self) -> StoredCreateBackupConfig: ...
|
96
|
+
def __init__(self, *, agent_ids=..., include_addons=..., include_all_addons=..., include_database=..., include_folders=..., name=..., password=...) -> None: ...
|
97
|
+
|
98
|
+
class StoredCreateBackupConfig(TypedDict):
|
99
|
+
agent_ids: list[str]
|
100
|
+
include_addons: list[str] | None
|
101
|
+
include_all_addons: bool
|
102
|
+
include_database: bool
|
103
|
+
include_folders: list[Folder] | None
|
104
|
+
name: str | None
|
105
|
+
password: str | None
|
106
|
+
|
107
|
+
class CreateBackupParametersDict(TypedDict, total=False):
|
108
|
+
agent_ids: list[str]
|
109
|
+
include_addons: list[str] | None
|
110
|
+
include_all_addons: bool
|
111
|
+
include_database: bool
|
112
|
+
include_folders: list[Folder] | None
|
113
|
+
name: str | None
|
114
|
+
password: str | None
|
115
|
+
|
116
|
+
async def _delete_filtered_backups(manager: BackupManager, backup_filter: Callable[[dict[str, ManagerBackup]], dict[str, ManagerBackup]]) -> None: ...
|
117
|
+
async def delete_backups_exceeding_configured_count(manager: BackupManager) -> None: ...
|
@@ -2,7 +2,9 @@ from .manager import BackupManager as BackupManager
|
|
2
2
|
from _typeshed import Incomplete
|
3
3
|
from homeassistant.util.hass_dict import HassKey as HassKey
|
4
4
|
|
5
|
+
BUF_SIZE: Incomplete
|
5
6
|
DOMAIN: str
|
6
7
|
DATA_MANAGER: HassKey[BackupManager]
|
7
8
|
LOGGER: Incomplete
|
8
9
|
EXCLUDE_FROM_BACKUP: Incomplete
|
10
|
+
EXCLUDE_DATABASE_FROM_BACKUP: Incomplete
|
@@ -1,7 +1,8 @@
|
|
1
1
|
from .const import DATA_MANAGER as DATA_MANAGER
|
2
|
-
from aiohttp.web import FileResponse, Request as Request, Response
|
2
|
+
from aiohttp.web import FileResponse, Request as Request, Response, StreamResponse
|
3
3
|
from homeassistant.components.http import HomeAssistantView as HomeAssistantView, KEY_HASS as KEY_HASS, require_admin as require_admin
|
4
4
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
5
|
+
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
5
6
|
from homeassistant.util import slugify as slugify
|
6
7
|
|
7
8
|
def async_register_http_views(hass: HomeAssistant) -> None: ...
|
@@ -9,7 +10,7 @@ def async_register_http_views(hass: HomeAssistant) -> None: ...
|
|
9
10
|
class DownloadBackupView(HomeAssistantView):
|
10
11
|
url: str
|
11
12
|
name: str
|
12
|
-
async def get(self, request: Request,
|
13
|
+
async def get(self, request: Request, backup_id: str) -> StreamResponse | FileResponse | Response: ...
|
13
14
|
|
14
15
|
class UploadBackupView(HomeAssistantView):
|
15
16
|
url: str
|
@@ -1,71 +1,211 @@
|
|
1
1
|
import abc
|
2
2
|
import aiohttp
|
3
|
-
|
3
|
+
import asyncio
|
4
|
+
from .agent import BackupAgent as BackupAgent, BackupAgentError as BackupAgentError, BackupAgentPlatformProtocol as BackupAgentPlatformProtocol, LocalBackupAgent as LocalBackupAgent
|
5
|
+
from .config import BackupConfig as BackupConfig, delete_backups_exceeding_configured_count as delete_backups_exceeding_configured_count
|
6
|
+
from .const import BUF_SIZE as BUF_SIZE, DATA_MANAGER as DATA_MANAGER, DOMAIN as DOMAIN, EXCLUDE_DATABASE_FROM_BACKUP as EXCLUDE_DATABASE_FROM_BACKUP, EXCLUDE_FROM_BACKUP as EXCLUDE_FROM_BACKUP, LOGGER as LOGGER
|
7
|
+
from .models import AgentBackup as AgentBackup, Folder as Folder
|
8
|
+
from .store import BackupStore as BackupStore
|
9
|
+
from .util import make_backup_dir as make_backup_dir, read_backup as read_backup, validate_password as validate_password
|
4
10
|
from _typeshed import Incomplete
|
11
|
+
from collections.abc import AsyncIterator, Callable as Callable, Coroutine
|
5
12
|
from dataclasses import dataclass
|
6
|
-
from
|
13
|
+
from enum import StrEnum
|
14
|
+
from homeassistant.backup_restore import RESTORE_BACKUP_FILE as RESTORE_BACKUP_FILE, password_to_key as password_to_key
|
7
15
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
8
16
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
9
|
-
from homeassistant.helpers import integration_platform as integration_platform
|
17
|
+
from homeassistant.helpers import instance_id as instance_id, integration_platform as integration_platform
|
10
18
|
from homeassistant.helpers.json import json_bytes as json_bytes
|
11
|
-
from homeassistant.util.json import json_loads_object as json_loads_object
|
12
19
|
from pathlib import Path
|
13
|
-
from typing import Any, Protocol
|
20
|
+
from typing import Any, Protocol, TypedDict
|
14
21
|
|
15
|
-
|
22
|
+
class IncorrectPasswordError(HomeAssistantError): ...
|
16
23
|
|
17
|
-
@dataclass(slots=True)
|
18
|
-
class
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
@dataclass(frozen=True, kw_only=True, slots=True)
|
25
|
+
class NewBackup:
|
26
|
+
backup_job_id: str
|
27
|
+
def __init__(self, *, backup_job_id) -> None: ...
|
28
|
+
|
29
|
+
@dataclass(frozen=True, kw_only=True, slots=True)
|
30
|
+
class ManagerBackup(AgentBackup):
|
31
|
+
agent_ids: list[str]
|
32
|
+
failed_agent_ids: list[str]
|
33
|
+
with_automatic_settings: bool | None
|
34
|
+
def __init__(self, *, addons, backup_id, date, database_included, extra_metadata, folders, homeassistant_included, homeassistant_version, name, protected, size, agent_ids, failed_agent_ids, with_automatic_settings) -> None: ...
|
35
|
+
|
36
|
+
@dataclass(frozen=True, kw_only=True, slots=True)
|
37
|
+
class WrittenBackup:
|
38
|
+
backup: AgentBackup
|
39
|
+
open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]]
|
40
|
+
release_stream: Callable[[], Coroutine[Any, Any, None]]
|
41
|
+
def __init__(self, *, backup, open_stream, release_stream) -> None: ...
|
42
|
+
|
43
|
+
class BackupManagerState(StrEnum):
|
44
|
+
IDLE = 'idle'
|
45
|
+
CREATE_BACKUP = 'create_backup'
|
46
|
+
RECEIVE_BACKUP = 'receive_backup'
|
47
|
+
RESTORE_BACKUP = 'restore_backup'
|
48
|
+
|
49
|
+
class CreateBackupStage(StrEnum):
|
50
|
+
ADDON_REPOSITORIES = 'addon_repositories'
|
51
|
+
ADDONS = 'addons'
|
52
|
+
AWAIT_ADDON_RESTARTS = 'await_addon_restarts'
|
53
|
+
DOCKER_CONFIG = 'docker_config'
|
54
|
+
FINISHING_FILE = 'finishing_file'
|
55
|
+
FOLDERS = 'folders'
|
56
|
+
HOME_ASSISTANT = 'home_assistant'
|
57
|
+
UPLOAD_TO_AGENTS = 'upload_to_agents'
|
58
|
+
|
59
|
+
class CreateBackupState(StrEnum):
|
60
|
+
COMPLETED = 'completed'
|
61
|
+
FAILED = 'failed'
|
62
|
+
IN_PROGRESS = 'in_progress'
|
63
|
+
|
64
|
+
class ReceiveBackupStage(StrEnum):
|
65
|
+
RECEIVE_FILE = 'receive_file'
|
66
|
+
UPLOAD_TO_AGENTS = 'upload_to_agents'
|
67
|
+
|
68
|
+
class ReceiveBackupState(StrEnum):
|
69
|
+
COMPLETED = 'completed'
|
70
|
+
FAILED = 'failed'
|
71
|
+
IN_PROGRESS = 'in_progress'
|
72
|
+
|
73
|
+
class RestoreBackupStage(StrEnum):
|
74
|
+
ADDON_REPOSITORIES = 'addon_repositories'
|
75
|
+
ADDONS = 'addons'
|
76
|
+
AWAIT_ADDON_RESTARTS = 'await_addon_restarts'
|
77
|
+
AWAIT_HOME_ASSISTANT_RESTART = 'await_home_assistant_restart'
|
78
|
+
CHECK_HOME_ASSISTANT = 'check_home_assistant'
|
79
|
+
DOCKER_CONFIG = 'docker_config'
|
80
|
+
DOWNLOAD_FROM_AGENT = 'download_from_agent'
|
81
|
+
FOLDERS = 'folders'
|
82
|
+
HOME_ASSISTANT = 'home_assistant'
|
83
|
+
REMOVE_DELTA_ADDONS = 'remove_delta_addons'
|
84
|
+
|
85
|
+
class RestoreBackupState(StrEnum):
|
86
|
+
COMPLETED = 'completed'
|
87
|
+
FAILED = 'failed'
|
88
|
+
IN_PROGRESS = 'in_progress'
|
89
|
+
|
90
|
+
@dataclass(frozen=True, kw_only=True, slots=True)
|
91
|
+
class ManagerStateEvent:
|
92
|
+
manager_state: BackupManagerState
|
93
|
+
def __init__(self, *, manager_state) -> None: ...
|
94
|
+
|
95
|
+
@dataclass(frozen=True, kw_only=True, slots=True)
|
96
|
+
class IdleEvent(ManagerStateEvent):
|
97
|
+
manager_state: BackupManagerState = ...
|
98
|
+
def __init__(self, *, manager_state=...) -> None: ...
|
99
|
+
|
100
|
+
@dataclass(frozen=True, kw_only=True, slots=True)
|
101
|
+
class CreateBackupEvent(ManagerStateEvent):
|
102
|
+
manager_state: BackupManagerState = ...
|
103
|
+
stage: CreateBackupStage | None
|
104
|
+
state: CreateBackupState
|
105
|
+
def __init__(self, *, manager_state=..., stage, state) -> None: ...
|
106
|
+
|
107
|
+
@dataclass(frozen=True, kw_only=True, slots=True)
|
108
|
+
class ReceiveBackupEvent(ManagerStateEvent):
|
109
|
+
manager_state: BackupManagerState = ...
|
110
|
+
stage: ReceiveBackupStage | None
|
111
|
+
state: ReceiveBackupState
|
112
|
+
def __init__(self, *, manager_state=..., stage, state) -> None: ...
|
113
|
+
|
114
|
+
@dataclass(frozen=True, kw_only=True, slots=True)
|
115
|
+
class RestoreBackupEvent(ManagerStateEvent):
|
116
|
+
manager_state: BackupManagerState = ...
|
117
|
+
stage: RestoreBackupStage | None
|
118
|
+
state: RestoreBackupState
|
119
|
+
def __init__(self, *, manager_state=..., stage, state) -> None: ...
|
26
120
|
|
27
121
|
class BackupPlatformProtocol(Protocol):
|
28
122
|
async def async_pre_backup(self, hass: HomeAssistant) -> None: ...
|
29
123
|
async def async_post_backup(self, hass: HomeAssistant) -> None: ...
|
30
124
|
|
31
|
-
class
|
32
|
-
hass: Incomplete
|
33
|
-
backing_up: bool
|
34
|
-
backups: Incomplete
|
35
|
-
loaded_platforms: bool
|
36
|
-
platforms: Incomplete
|
37
|
-
def __init__(self, hass: HomeAssistant) -> None: ...
|
38
|
-
def _add_platform(self, hass: HomeAssistant, integration_domain: str, platform: BackupPlatformProtocol) -> None: ...
|
39
|
-
async def async_pre_backup_actions(self, **kwargs: Any) -> None: ...
|
40
|
-
async def async_post_backup_actions(self, **kwargs: Any) -> None: ...
|
41
|
-
async def load_platforms(self) -> None: ...
|
42
|
-
@abc.abstractmethod
|
43
|
-
async def async_restore_backup(self, slug: str, **kwargs: Any) -> None: ...
|
125
|
+
class BackupReaderWriter(abc.ABC, metaclass=abc.ABCMeta):
|
44
126
|
@abc.abstractmethod
|
45
|
-
async def async_create_backup(self,
|
127
|
+
async def async_create_backup(self, *, agent_ids: list[str], backup_name: str, extra_metadata: dict[str, bool | str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, on_progress: Callable[[ManagerStateEvent], None], password: str | None) -> tuple[NewBackup, asyncio.Task[WrittenBackup]]: ...
|
46
128
|
@abc.abstractmethod
|
47
|
-
async def
|
129
|
+
async def async_receive_backup(self, *, agent_ids: list[str], stream: AsyncIterator[bytes], suggested_filename: str) -> WrittenBackup: ...
|
48
130
|
@abc.abstractmethod
|
49
|
-
async def
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
131
|
+
async def async_restore_backup(self, backup_id: str, *, agent_id: str, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
|
132
|
+
|
133
|
+
class BackupManager:
|
134
|
+
hass: Incomplete
|
135
|
+
platforms: Incomplete
|
136
|
+
backup_agent_platforms: Incomplete
|
137
|
+
backup_agents: Incomplete
|
138
|
+
local_backup_agents: Incomplete
|
139
|
+
config: Incomplete
|
140
|
+
_reader_writer: Incomplete
|
141
|
+
known_backups: Incomplete
|
142
|
+
store: Incomplete
|
143
|
+
_backup_task: Incomplete
|
144
|
+
_backup_finish_task: Incomplete
|
145
|
+
remove_next_backup_event: Incomplete
|
146
|
+
remove_next_delete_event: Incomplete
|
147
|
+
last_event: Incomplete
|
148
|
+
_backup_event_subscriptions: Incomplete
|
149
|
+
def __init__(self, hass: HomeAssistant, reader_writer: BackupReaderWriter) -> None: ...
|
150
|
+
async def async_setup(self) -> None: ...
|
151
|
+
@property
|
152
|
+
def state(self) -> BackupManagerState: ...
|
153
|
+
def _add_platform_pre_post_handler(self, integration_domain: str, platform: BackupPlatformProtocol) -> None: ...
|
154
|
+
def _async_add_backup_agent_platform(self, integration_domain: str, platform: BackupAgentPlatformProtocol) -> None: ...
|
155
|
+
async def _async_reload_backup_agents(self, domain: str) -> None: ...
|
156
|
+
async def _add_platform(self, hass: HomeAssistant, integration_domain: str, platform: Any) -> None: ...
|
157
|
+
async def async_pre_backup_actions(self) -> None: ...
|
158
|
+
async def async_post_backup_actions(self) -> None: ...
|
159
|
+
async def load_platforms(self) -> None: ...
|
160
|
+
async def _async_upload_backup(self, *, backup: AgentBackup, agent_ids: list[str], open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]]) -> dict[str, Exception]: ...
|
161
|
+
async def async_get_backups(self) -> tuple[dict[str, ManagerBackup], dict[str, Exception]]: ...
|
162
|
+
async def async_get_backup(self, backup_id: str) -> tuple[ManagerBackup | None, dict[str, Exception]]: ...
|
163
|
+
@staticmethod
|
164
|
+
def is_our_automatic_backup(backup: AgentBackup, our_instance_id: str) -> bool | None: ...
|
165
|
+
async def async_delete_backup(self, backup_id: str) -> dict[str, Exception]: ...
|
166
|
+
async def async_receive_backup(self, *, agent_ids: list[str], contents: aiohttp.BodyPartReader) -> None: ...
|
167
|
+
async def _async_receive_backup(self, *, agent_ids: list[str], contents: aiohttp.BodyPartReader) -> None: ...
|
168
|
+
async def async_create_backup(self, *, agent_ids: list[str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, name: str | None, password: str | None, with_automatic_settings: bool = False) -> NewBackup: ...
|
169
|
+
async def async_initiate_backup(self, *, agent_ids: list[str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, name: str | None, password: str | None, with_automatic_settings: bool = False) -> NewBackup: ...
|
170
|
+
async def _async_create_backup(self, *, agent_ids: list[str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, name: str | None, password: str | None, with_automatic_settings: bool) -> NewBackup: ...
|
171
|
+
async def _async_finish_backup(self, agent_ids: list[str], with_automatic_settings: bool) -> None: ...
|
172
|
+
async def async_restore_backup(self, backup_id: str, *, agent_id: str, password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
|
173
|
+
async def _async_restore_backup(self, backup_id: str, *, agent_id: str, password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
|
174
|
+
def async_on_backup_event(self, event: ManagerStateEvent) -> None: ...
|
175
|
+
def async_subscribe_events(self, on_event: Callable[[ManagerStateEvent], None]) -> Callable[[], None]: ...
|
176
|
+
def _update_issue_backup_failed(self) -> None: ...
|
177
|
+
def _update_issue_after_agent_upload(self, agent_errors: dict[str, Exception]) -> None: ...
|
178
|
+
|
179
|
+
class KnownBackups:
|
180
|
+
_backups: Incomplete
|
181
|
+
_manager: Incomplete
|
182
|
+
def __init__(self, manager: BackupManager) -> None: ...
|
183
|
+
def load(self, stored_backups: list[StoredKnownBackup]) -> None: ...
|
184
|
+
def to_list(self) -> list[StoredKnownBackup]: ...
|
185
|
+
def add(self, backup: AgentBackup, agent_errors: dict[str, Exception]) -> None: ...
|
186
|
+
def get(self, backup_id: str) -> KnownBackup | None: ...
|
187
|
+
def remove(self, backup_id: str) -> None: ...
|
54
188
|
|
55
|
-
|
56
|
-
|
57
|
-
|
189
|
+
@dataclass(kw_only=True)
|
190
|
+
class KnownBackup:
|
191
|
+
backup_id: str
|
192
|
+
failed_agent_ids: list[str]
|
193
|
+
def to_dict(self) -> StoredKnownBackup: ...
|
194
|
+
def __init__(self, *, backup_id, failed_agent_ids) -> None: ...
|
195
|
+
|
196
|
+
class StoredKnownBackup(TypedDict):
|
197
|
+
backup_id: str
|
198
|
+
failed_agent_ids: list[str]
|
199
|
+
|
200
|
+
class CoreBackupReaderWriter(BackupReaderWriter):
|
201
|
+
_local_agent_id: Incomplete
|
202
|
+
_hass: Incomplete
|
203
|
+
temp_backup_dir: Incomplete
|
58
204
|
def __init__(self, hass: HomeAssistant) -> None: ...
|
59
|
-
|
60
|
-
async def
|
61
|
-
def
|
62
|
-
async def
|
63
|
-
async def
|
64
|
-
|
65
|
-
|
66
|
-
backing_up: bool
|
67
|
-
async def async_create_backup(self, **kwargs: Any) -> Backup: ...
|
68
|
-
def _mkdir_and_generate_backup_contents(self, tar_file_path: Path, backup_data: dict[str, Any]) -> int: ...
|
69
|
-
async def async_restore_backup(self, slug: str, **kwargs: Any) -> None: ...
|
70
|
-
|
71
|
-
def _generate_slug(date: str, name: str) -> str: ...
|
205
|
+
async def async_create_backup(self, *, agent_ids: list[str], backup_name: str, extra_metadata: dict[str, bool | str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, on_progress: Callable[[ManagerStateEvent], None], password: str | None) -> tuple[NewBackup, asyncio.Task[WrittenBackup]]: ...
|
206
|
+
async def _async_create_backup(self, *, agent_ids: list[str], backup_id: str, backup_name: str, date_str: str, extra_metadata: dict[str, bool | str], include_database: bool, on_progress: Callable[[ManagerStateEvent], None], password: str | None) -> WrittenBackup: ...
|
207
|
+
def _mkdir_and_generate_backup_contents(self, backup_data: dict[str, Any], database_included: bool, password: str | None, tar_file_path: Path | None) -> tuple[Path, int]: ...
|
208
|
+
async def async_receive_backup(self, *, agent_ids: list[str], stream: AsyncIterator[bytes], suggested_filename: str) -> WrittenBackup: ...
|
209
|
+
async def async_restore_backup(self, backup_id: str, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], *, agent_id: str, password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
|
210
|
+
|
211
|
+
def _generate_backup_id(date: str, name: str) -> str: ...
|
@@ -0,0 +1,35 @@
|
|
1
|
+
from dataclasses import dataclass
|
2
|
+
from enum import StrEnum
|
3
|
+
from typing import Any, Self
|
4
|
+
|
5
|
+
@dataclass(frozen=True, kw_only=True)
|
6
|
+
class AddonInfo:
|
7
|
+
name: str
|
8
|
+
slug: str
|
9
|
+
version: str
|
10
|
+
def __init__(self, *, name, slug, version) -> None: ...
|
11
|
+
|
12
|
+
class Folder(StrEnum):
|
13
|
+
SHARE = 'share'
|
14
|
+
ADDONS = 'addons/local'
|
15
|
+
SSL = 'ssl'
|
16
|
+
MEDIA = 'media'
|
17
|
+
|
18
|
+
@dataclass(frozen=True, kw_only=True)
|
19
|
+
class AgentBackup:
|
20
|
+
addons: list[AddonInfo]
|
21
|
+
backup_id: str
|
22
|
+
date: str
|
23
|
+
database_included: bool
|
24
|
+
extra_metadata: dict[str, bool | str]
|
25
|
+
folders: list[Folder]
|
26
|
+
homeassistant_included: bool
|
27
|
+
homeassistant_version: str | None
|
28
|
+
name: str
|
29
|
+
protected: bool
|
30
|
+
size: int
|
31
|
+
def as_dict(self) -> dict: ...
|
32
|
+
def as_frontend_json(self) -> dict: ...
|
33
|
+
@classmethod
|
34
|
+
def from_dict(cls, data: dict[str, Any]) -> Self: ...
|
35
|
+
def __init__(self, *, addons, backup_id, date, database_included, extra_metadata, folders, homeassistant_included, homeassistant_version, name, protected, size) -> None: ...
|
@@ -0,0 +1,24 @@
|
|
1
|
+
from .config import StoredBackupConfig as StoredBackupConfig
|
2
|
+
from .const import DOMAIN as DOMAIN
|
3
|
+
from .manager import BackupManager as BackupManager, StoredKnownBackup as StoredKnownBackup
|
4
|
+
from _typeshed import Incomplete
|
5
|
+
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
6
|
+
from homeassistant.helpers.storage import Store as Store
|
7
|
+
from typing import TypedDict
|
8
|
+
|
9
|
+
STORE_DELAY_SAVE: int
|
10
|
+
STORAGE_KEY = DOMAIN
|
11
|
+
STORAGE_VERSION: int
|
12
|
+
|
13
|
+
class StoredBackupData(TypedDict):
|
14
|
+
backups: list[StoredKnownBackup]
|
15
|
+
config: StoredBackupConfig
|
16
|
+
|
17
|
+
class BackupStore:
|
18
|
+
_hass: Incomplete
|
19
|
+
_manager: Incomplete
|
20
|
+
_store: Incomplete
|
21
|
+
def __init__(self, hass: HomeAssistant, manager: BackupManager) -> None: ...
|
22
|
+
async def load(self) -> StoredBackupData | None: ...
|
23
|
+
def save(self) -> None: ...
|
24
|
+
def _data_to_save(self) -> StoredBackupData: ...
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import aiohttp
|
2
|
+
from .const import BUF_SIZE as BUF_SIZE, LOGGER as LOGGER
|
3
|
+
from .models import AddonInfo as AddonInfo, AgentBackup as AgentBackup, Folder as Folder
|
4
|
+
from homeassistant.backup_restore import password_to_key as password_to_key
|
5
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
6
|
+
from homeassistant.util.json import JsonObjectType as JsonObjectType, json_loads_object as json_loads_object
|
7
|
+
from pathlib import Path
|
8
|
+
|
9
|
+
def make_backup_dir(path: Path) -> None: ...
|
10
|
+
def read_backup(backup_path: Path) -> AgentBackup: ...
|
11
|
+
def validate_password(path: Path, password: str | None) -> bool: ...
|
12
|
+
async def receive_file(hass: HomeAssistant, contents: aiohttp.BodyPartReader, path: Path) -> None: ...
|
@@ -1,4 +1,7 @@
|
|
1
|
+
from .config import ScheduleState as ScheduleState
|
1
2
|
from .const import DATA_MANAGER as DATA_MANAGER, LOGGER as LOGGER
|
3
|
+
from .manager import IncorrectPasswordError as IncorrectPasswordError, ManagerStateEvent as ManagerStateEvent
|
4
|
+
from .models import Folder as Folder
|
2
5
|
from homeassistant.components import websocket_api as websocket_api
|
3
6
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
4
7
|
from typing import Any
|
@@ -6,8 +9,13 @@ from typing import Any
|
|
6
9
|
def async_register_websocket_handlers(hass: HomeAssistant, with_hassio: bool) -> None: ...
|
7
10
|
async def handle_info(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
8
11
|
async def handle_details(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
9
|
-
async def
|
12
|
+
async def handle_delete(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
10
13
|
async def handle_restore(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
11
14
|
async def handle_create(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
15
|
+
async def handle_create_with_automatic_settings(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
12
16
|
async def handle_backup_start(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
13
17
|
async def handle_backup_end(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
18
|
+
async def backup_agents_info(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
19
|
+
async def handle_config_info(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
20
|
+
async def handle_config_update(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
21
|
+
async def handle_subscribe_events(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
@@ -14,7 +14,6 @@ class BAFAutoComfort(BAFEntity, ClimateEntity):
|
|
14
14
|
_attr_temperature_unit: Incomplete
|
15
15
|
_attr_hvac_modes: Incomplete
|
16
16
|
_attr_translation_key: str
|
17
|
-
_enable_turn_on_off_backwards_compatibility: bool
|
18
17
|
_attr_hvac_mode: Incomplete
|
19
18
|
_attr_hvac_action: Incomplete
|
20
19
|
_attr_target_temperature: Incomplete
|
@@ -12,7 +12,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: BAFConfigEntry, async_ad
|
|
12
12
|
|
13
13
|
class BAFFan(BAFEntity, FanEntity):
|
14
14
|
_attr_supported_features: Incomplete
|
15
|
-
_enable_turn_on_off_backwards_compatibility: bool
|
16
15
|
_attr_preset_modes: Incomplete
|
17
16
|
_attr_speed_count = SPEED_COUNT
|
18
17
|
_attr_name: Incomplete
|