homeassistant-stubs 2025.1.3__py3-none-any.whl → 2025.2.0__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/mfa_modules/__init__.pyi +2 -4
- homeassistant-stubs/auth/models.pyi +1 -1
- homeassistant-stubs/auth/permissions/__init__.pyi +1 -1
- homeassistant-stubs/auth/providers/__init__.pyi +2 -4
- homeassistant-stubs/backup_restore.pyi +2 -0
- homeassistant-stubs/components/airgradient/button.pyi +4 -1
- homeassistant-stubs/components/airgradient/config_flow.pyi +5 -3
- homeassistant-stubs/components/airgradient/entity.pyi +5 -0
- homeassistant-stubs/components/airgradient/number.pyi +4 -1
- homeassistant-stubs/components/airgradient/select.pyi +4 -1
- homeassistant-stubs/components/airgradient/sensor.pyi +2 -0
- homeassistant-stubs/components/airgradient/switch.pyi +5 -1
- homeassistant-stubs/components/airgradient/update.pyi +2 -1
- homeassistant-stubs/components/airnow/coordinator.pyi +1 -1
- homeassistant-stubs/components/airzone/__init__.pyi +2 -0
- homeassistant-stubs/components/airzone/config_flow.pyi +3 -2
- homeassistant-stubs/components/alarm_control_panel/__init__.pyi +1 -1
- homeassistant-stubs/components/androidtv_remote/config_flow.pyi +2 -2
- homeassistant-stubs/components/api/__init__.pyi +1 -1
- homeassistant-stubs/components/apple_tv/config_flow.pyi +2 -1
- homeassistant-stubs/components/apsystems/coordinator.pyi +1 -0
- homeassistant-stubs/components/aranet/sensor.pyi +1 -1
- homeassistant-stubs/components/arcam_fmj/config_flow.pyi +2 -2
- homeassistant-stubs/components/assist_pipeline/__init__.pyi +2 -2
- homeassistant-stubs/components/assist_pipeline/pipeline.pyi +4 -1
- homeassistant-stubs/components/assist_pipeline/select.pyi +2 -2
- homeassistant-stubs/components/assist_pipeline/websocket_api.pyi +2 -2
- homeassistant-stubs/components/assist_satellite/__init__.pyi +1 -1
- homeassistant-stubs/components/assist_satellite/const.pyi +1 -0
- homeassistant-stubs/components/assist_satellite/entity.pyi +7 -1
- homeassistant-stubs/components/assist_satellite/intent.pyi +13 -0
- homeassistant-stubs/components/assist_satellite/websocket_api.pyi +0 -2
- homeassistant-stubs/components/automation/__init__.pyi +1 -1
- homeassistant-stubs/components/awair/config_flow.pyi +3 -2
- homeassistant-stubs/components/axis/config_flow.pyi +6 -4
- homeassistant-stubs/components/backup/__init__.pyi +8 -3
- homeassistant-stubs/components/backup/agent.pyi +6 -5
- homeassistant-stubs/components/backup/backup.pyi +6 -4
- homeassistant-stubs/components/backup/config.pyi +45 -3
- homeassistant-stubs/components/backup/http.pyi +8 -0
- homeassistant-stubs/components/backup/manager.pyi +42 -22
- homeassistant-stubs/components/backup/models.pyi +18 -3
- homeassistant-stubs/components/backup/store.pyi +7 -2
- homeassistant-stubs/components/backup/util.pyi +94 -0
- homeassistant-stubs/components/backup/websocket.pyi +6 -3
- homeassistant-stubs/components/baf/config_flow.pyi +2 -2
- homeassistant-stubs/components/bang_olufsen/config_flow.pyi +1 -1
- homeassistant-stubs/components/bang_olufsen/const.pyi +6 -0
- homeassistant-stubs/components/bang_olufsen/event.pyi +23 -0
- homeassistant-stubs/components/bang_olufsen/websocket.pyi +3 -2
- homeassistant-stubs/components/binary_sensor/__init__.pyi +1 -1
- homeassistant-stubs/components/blueprint/importer.pyi +0 -1
- homeassistant-stubs/components/blueprint/models.pyi +0 -1
- homeassistant-stubs/components/blueprint/websocket_api.pyi +0 -1
- homeassistant-stubs/components/bluesound/__init__.pyi +2 -0
- homeassistant-stubs/components/bluesound/config_flow.pyi +2 -3
- homeassistant-stubs/components/bluesound/coordinator.pyi +30 -0
- homeassistant-stubs/components/bluesound/media_player.pyi +10 -25
- homeassistant-stubs/components/bluetooth/__init__.pyi +2 -2
- homeassistant-stubs/components/bluetooth/api.pyi +3 -1
- homeassistant-stubs/components/bluetooth/config_flow.pyi +10 -3
- homeassistant-stubs/components/bluetooth/const.pyi +5 -0
- homeassistant-stubs/components/bluetooth/manager.pyi +5 -1
- homeassistant-stubs/components/bluetooth/passive_update_coordinator.pyi +1 -4
- homeassistant-stubs/components/bluetooth/storage.pyi +2 -0
- homeassistant-stubs/components/bluetooth/util.pyi +6 -1
- homeassistant-stubs/components/bluetooth/websocket_api.pyi +46 -0
- homeassistant-stubs/components/bond/config_flow.pyi +2 -2
- homeassistant-stubs/components/braviatv/config_flow.pyi +2 -2
- homeassistant-stubs/components/brother/config_flow.pyi +2 -2
- homeassistant-stubs/components/button/__init__.pyi +1 -1
- homeassistant-stubs/components/cambridge_audio/config_flow.pyi +2 -2
- homeassistant-stubs/components/camera/__init__.pyi +1 -1
- homeassistant-stubs/components/canary/__init__.pyi +7 -7
- homeassistant-stubs/components/canary/alarm_control_panel.pyi +2 -4
- homeassistant-stubs/components/canary/camera.pyi +3 -4
- homeassistant-stubs/components/canary/const.pyi +0 -2
- homeassistant-stubs/components/canary/coordinator.pyi +3 -1
- homeassistant-stubs/components/canary/sensor.pyi +3 -4
- homeassistant-stubs/components/climate/__init__.pyi +2 -2
- homeassistant-stubs/components/climate/const.pyi +1 -0
- homeassistant-stubs/components/climate/intent.pyi +9 -1
- homeassistant-stubs/components/cloud/__init__.pyi +1 -1
- homeassistant-stubs/components/cloud/backup.pyi +3 -9
- homeassistant-stubs/components/cloud/const.pyi +0 -1
- homeassistant-stubs/components/cloud/http_api.pyi +7 -1
- homeassistant-stubs/components/config/core.pyi +1 -1
- homeassistant-stubs/components/cookidoo/__init__.pyi +6 -2
- homeassistant-stubs/components/cookidoo/button.pyi +27 -0
- homeassistant-stubs/components/cookidoo/config_flow.pyi +4 -1
- homeassistant-stubs/components/cookidoo/const.pyi +3 -0
- homeassistant-stubs/components/cookidoo/coordinator.pyi +3 -1
- homeassistant-stubs/components/cookidoo/diagnostics.pyi +10 -0
- homeassistant-stubs/components/cookidoo/helpers.pyi +9 -0
- homeassistant-stubs/components/cookidoo/sensor.pyi +34 -0
- homeassistant-stubs/components/cover/__init__.pyi +1 -1
- homeassistant-stubs/components/crownstone/__init__.pyi +6 -5
- homeassistant-stubs/components/crownstone/config_flow.pyi +6 -4
- homeassistant-stubs/components/crownstone/entry_manager.pyi +6 -6
- homeassistant-stubs/components/crownstone/helpers.pyi +2 -1
- homeassistant-stubs/components/crownstone/light.pyi +3 -4
- homeassistant-stubs/components/date/__init__.pyi +1 -1
- homeassistant-stubs/components/datetime/__init__.pyi +1 -1
- homeassistant-stubs/components/deconz/__init__.pyi +5 -4
- homeassistant-stubs/components/deconz/alarm_control_panel.pyi +2 -2
- homeassistant-stubs/components/deconz/binary_sensor.pyi +2 -2
- homeassistant-stubs/components/deconz/button.pyi +2 -2
- homeassistant-stubs/components/deconz/climate.pyi +2 -2
- homeassistant-stubs/components/deconz/config_flow.pyi +3 -6
- homeassistant-stubs/components/deconz/cover.pyi +2 -2
- homeassistant-stubs/components/deconz/device_trigger.pyi +1 -2
- homeassistant-stubs/components/deconz/diagnostics.pyi +2 -3
- homeassistant-stubs/components/deconz/fan.pyi +2 -2
- homeassistant-stubs/components/deconz/hub/api.pyi +2 -2
- homeassistant-stubs/components/deconz/hub/config.pyi +3 -3
- homeassistant-stubs/components/deconz/hub/hub.pyi +4 -6
- homeassistant-stubs/components/deconz/light.pyi +2 -2
- homeassistant-stubs/components/deconz/lock.pyi +2 -3
- homeassistant-stubs/components/deconz/number.pyi +2 -2
- homeassistant-stubs/components/deconz/scene.pyi +2 -3
- homeassistant-stubs/components/deconz/select.pyi +2 -3
- homeassistant-stubs/components/deconz/sensor.pyi +2 -2
- homeassistant-stubs/components/deconz/services.pyi +2 -1
- homeassistant-stubs/components/deconz/siren.pyi +2 -3
- homeassistant-stubs/components/deconz/switch.pyi +2 -3
- homeassistant-stubs/components/deconz/util.pyi +7 -0
- homeassistant-stubs/components/device_tracker/config_entry.pyi +1 -1
- homeassistant-stubs/components/device_tracker/legacy.pyi +1 -1
- homeassistant-stubs/components/devolo_home_control/config_flow.pyi +2 -2
- homeassistant-stubs/components/devolo_home_network/config_flow.pyi +2 -1
- homeassistant-stubs/components/dhcp/__init__.pyi +6 -7
- homeassistant-stubs/components/discovergy/sensor.pyi +2 -0
- homeassistant-stubs/components/dlna_dmr/config_flow.pyi +7 -6
- homeassistant-stubs/components/dlna_dmr/media_player.pyi +2 -1
- homeassistant-stubs/components/dlna_dms/config_flow.pyi +5 -4
- homeassistant-stubs/components/dlna_dms/dms.pyi +3 -2
- homeassistant-stubs/components/doorbird/config_flow.pyi +2 -2
- homeassistant-stubs/components/doorbird/device.pyi +1 -1
- homeassistant-stubs/components/dormakaba_dkey/__init__.pyi +5 -9
- homeassistant-stubs/components/dormakaba_dkey/binary_sensor.pyi +3 -7
- homeassistant-stubs/components/dormakaba_dkey/coordinator.pyi +15 -0
- homeassistant-stubs/components/dormakaba_dkey/entity.pyi +4 -5
- homeassistant-stubs/components/dormakaba_dkey/lock.pyi +3 -7
- homeassistant-stubs/components/dormakaba_dkey/sensor.pyi +3 -7
- homeassistant-stubs/components/dunehd/__init__.pyi +4 -3
- homeassistant-stubs/components/dunehd/media_player.pyi +2 -2
- homeassistant-stubs/components/duotecno/__init__.pyi +4 -3
- homeassistant-stubs/components/duotecno/binary_sensor.pyi +2 -4
- homeassistant-stubs/components/duotecno/climate.pyi +2 -4
- homeassistant-stubs/components/duotecno/cover.pyi +2 -4
- homeassistant-stubs/components/duotecno/light.pyi +2 -4
- homeassistant-stubs/components/duotecno/switch.pyi +2 -4
- homeassistant-stubs/components/eheimdigital/climate.pyi +40 -0
- homeassistant-stubs/components/eheimdigital/config_flow.pyi +1 -1
- homeassistant-stubs/components/eheimdigital/const.pyi +4 -0
- homeassistant-stubs/components/eheimdigital/coordinator.pyi +2 -3
- homeassistant-stubs/components/eheimdigital/light.pyi +1 -0
- homeassistant-stubs/components/electrasmart/__init__.pyi +6 -4
- homeassistant-stubs/components/electrasmart/climate.pyi +2 -2
- homeassistant-stubs/components/electric_kiwi/__init__.pyi +3 -5
- homeassistant-stubs/components/electric_kiwi/const.pyi +0 -2
- homeassistant-stubs/components/electric_kiwi/coordinator.pyi +10 -2
- homeassistant-stubs/components/electric_kiwi/select.pyi +3 -4
- homeassistant-stubs/components/electric_kiwi/sensor.pyi +3 -4
- homeassistant-stubs/components/elevenlabs/const.pyi +1 -0
- homeassistant-stubs/components/elevenlabs/tts.pyi +1 -1
- homeassistant-stubs/components/elgato/config_flow.pyi +3 -2
- homeassistant-stubs/components/elkm1/binary_sensor.pyi +1 -1
- homeassistant-stubs/components/elkm1/config_flow.pyi +2 -2
- homeassistant-stubs/components/elkm1/sensor.pyi +5 -5
- homeassistant-stubs/components/energenie_power_sockets/__init__.pyi +5 -4
- homeassistant-stubs/components/energenie_power_sockets/switch.pyi +2 -2
- homeassistant-stubs/components/enphase_envoy/config_flow.pyi +5 -5
- homeassistant-stubs/components/enphase_envoy/coordinator.pyi +7 -0
- homeassistant-stubs/components/enphase_envoy/select.pyi +2 -2
- homeassistant-stubs/components/enphase_envoy/sensor.pyi +1 -4
- homeassistant-stubs/components/esphome/__init__.pyi +1 -0
- homeassistant-stubs/components/esphome/bluetooth.pyi +2 -1
- homeassistant-stubs/components/esphome/config_flow.pyi +5 -3
- homeassistant-stubs/components/esphome/dashboard.pyi +2 -1
- homeassistant-stubs/components/esphome/manager.pyi +1 -1
- homeassistant-stubs/components/event/__init__.pyi +2 -2
- homeassistant-stubs/components/evil_genius_labs/__init__.pyi +3 -5
- homeassistant-stubs/components/evil_genius_labs/coordinator.pyi +4 -1
- homeassistant-stubs/components/evil_genius_labs/diagnostics.pyi +2 -4
- homeassistant-stubs/components/evil_genius_labs/light.pyi +2 -4
- homeassistant-stubs/components/fan/__init__.pyi +1 -1
- homeassistant-stubs/components/feedreader/__init__.pyi +3 -5
- homeassistant-stubs/components/feedreader/coordinator.pyi +5 -3
- homeassistant-stubs/components/filter/__init__.pyi +6 -4
- homeassistant-stubs/components/filter/config_flow.pyi +28 -0
- homeassistant-stubs/components/filter/const.pyi +29 -0
- homeassistant-stubs/components/filter/sensor.pyi +3 -24
- homeassistant-stubs/components/flux_led/config_flow.pyi +2 -2
- homeassistant-stubs/components/fritz/__init__.pyi +9 -7
- homeassistant-stubs/components/fritz/binary_sensor.pyi +2 -4
- homeassistant-stubs/components/fritz/button.pyi +3 -4
- homeassistant-stubs/components/fritz/config_flow.pyi +6 -5
- homeassistant-stubs/components/fritz/const.pyi +0 -3
- homeassistant-stubs/components/fritz/coordinator.pyi +12 -10
- homeassistant-stubs/components/fritz/device_tracker.pyi +2 -4
- homeassistant-stubs/components/fritz/diagnostics.pyi +2 -4
- homeassistant-stubs/components/fritz/image.pyi +2 -4
- homeassistant-stubs/components/fritz/sensor.pyi +3 -4
- homeassistant-stubs/components/fritz/services.pyi +5 -8
- homeassistant-stubs/components/fritz/switch.pyi +3 -4
- homeassistant-stubs/components/fritz/update.pyi +2 -4
- homeassistant-stubs/components/fritzbox/config_flow.pyi +2 -2
- homeassistant-stubs/components/fritzbox/coordinator.pyi +1 -1
- homeassistant-stubs/components/fronius/config_flow.pyi +1 -1
- homeassistant-stubs/components/frontend/__init__.pyi +1 -1
- homeassistant-stubs/components/fujitsu_fglair/climate.pyi +2 -8
- homeassistant-stubs/components/fujitsu_fglair/entity.pyi +15 -0
- homeassistant-stubs/components/fujitsu_fglair/sensor.pyi +21 -0
- homeassistant-stubs/components/fully_kiosk/config_flow.pyi +1 -1
- homeassistant-stubs/components/fyta/binary_sensor.pyi +23 -0
- homeassistant-stubs/components/fyta/entity.pyi +2 -2
- homeassistant-stubs/components/fyta/image.pyi +18 -0
- homeassistant-stubs/components/generic_thermostat/climate.pyi +1 -0
- homeassistant-stubs/components/geo_location/__init__.pyi +1 -1
- homeassistant-stubs/components/goalzero/config_flow.pyi +2 -2
- homeassistant-stubs/components/google_drive/__init__.pyi +17 -0
- homeassistant-stubs/components/google_drive/api.pyi +35 -0
- homeassistant-stubs/components/google_drive/application_credentials.pyi +6 -0
- homeassistant-stubs/components/google_drive/backup.pyi +28 -0
- homeassistant-stubs/components/google_drive/config_flow.pyi +24 -0
- homeassistant-stubs/components/google_drive/const.pyi +1 -0
- homeassistant-stubs/components/guardian/config_flow.pyi +4 -3
- homeassistant-stubs/components/habitica/__init__.pyi +16 -0
- homeassistant-stubs/components/habitica/binary_sensor.pyi +33 -0
- homeassistant-stubs/components/habitica/button.pyi +53 -0
- homeassistant-stubs/components/habitica/calendar.pyi +56 -0
- homeassistant-stubs/components/habitica/config_flow.pyi +27 -0
- homeassistant-stubs/components/habitica/const.pyi +44 -0
- homeassistant-stubs/components/habitica/coordinator.pyi +29 -0
- homeassistant-stubs/components/habitica/diagnostics.pyi +7 -0
- homeassistant-stubs/components/habitica/entity.pyi +14 -0
- homeassistant-stubs/components/habitica/image.pyi +26 -0
- homeassistant-stubs/components/habitica/sensor.pyi +81 -0
- homeassistant-stubs/components/habitica/services.pyi +24 -0
- homeassistant-stubs/components/habitica/switch.pyi +32 -0
- homeassistant-stubs/components/habitica/todo.pyi +43 -0
- homeassistant-stubs/components/habitica/types.pyi +10 -0
- homeassistant-stubs/components/habitica/util.pyi +15 -0
- homeassistant-stubs/components/heos/__init__.pyi +15 -0
- homeassistant-stubs/components/heos/config_flow.pyi +32 -0
- homeassistant-stubs/components/heos/const.pyi +5 -0
- homeassistant-stubs/components/heos/coordinator.pyi +44 -0
- homeassistant-stubs/components/heos/diagnostics.pyi +14 -0
- homeassistant-stubs/components/heos/media_player.pyi +95 -0
- homeassistant-stubs/components/heos/services.pyi +16 -0
- homeassistant-stubs/components/holiday/config_flow.pyi +3 -1
- homeassistant-stubs/components/homeassistant_hardware/firmware_config_flow.pyi +1 -3
- homeassistant-stubs/components/homeassistant_hardware/util.pyi +13 -1
- homeassistant-stubs/components/homeassistant_sky_connect/config_flow.pyi +4 -2
- homeassistant-stubs/components/homeassistant_sky_connect/util.pyi +2 -2
- homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +1 -0
- homeassistant-stubs/components/homee/__init__.pyi +14 -0
- homeassistant-stubs/components/homee/config_flow.pyi +14 -0
- homeassistant-stubs/components/homee/const.pyi +9 -0
- homeassistant-stubs/components/homee/cover.pyi +43 -0
- homeassistant-stubs/components/homee/entity.pyi +43 -0
- homeassistant-stubs/components/homee/helpers.pyi +6 -0
- homeassistant-stubs/components/homee/sensor.pyi +49 -0
- homeassistant-stubs/components/homekit/util.pyi +1 -1
- homeassistant-stubs/components/homekit_controller/config_flow.pyi +3 -2
- homeassistant-stubs/components/homewizard/__init__.pyi +5 -0
- homeassistant-stubs/components/homewizard/config_flow.pyi +19 -19
- homeassistant-stubs/components/homewizard/const.pyi +0 -11
- homeassistant-stubs/components/homewizard/coordinator.pyi +6 -12
- homeassistant-stubs/components/homewizard/number.pyi +0 -1
- homeassistant-stubs/components/homewizard/repairs.pyi +17 -0
- homeassistant-stubs/components/homewizard/sensor.pyi +8 -5
- homeassistant-stubs/components/homewizard/switch.pyi +4 -4
- homeassistant-stubs/components/http/ban.pyi +0 -1
- homeassistant-stubs/components/huawei_lte/config_flow.pyi +2 -2
- homeassistant-stubs/components/humidifier/__init__.pyi +1 -1
- homeassistant-stubs/components/husqvarna_automower/__init__.pyi +0 -3
- homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +14 -0
- homeassistant-stubs/components/husqvarna_automower/number.pyi +1 -1
- homeassistant-stubs/components/hydrawise/__init__.pyi +3 -1
- homeassistant-stubs/components/hydrawise/config_flow.pyi +13 -5
- homeassistant-stubs/components/hydrawise/coordinator.pyi +4 -4
- homeassistant-stubs/components/hydrawise/switch.pyi +3 -3
- homeassistant-stubs/components/hyperion/config_flow.pyi +2 -2
- homeassistant-stubs/components/image/__init__.pyi +1 -1
- homeassistant-stubs/components/imgw_pib/__init__.pyi +1 -1
- homeassistant-stubs/components/imgw_pib/sensor.pyi +2 -1
- homeassistant-stubs/components/incomfort/__init__.pyi +18 -0
- homeassistant-stubs/components/incomfort/binary_sensor.pyi +33 -0
- homeassistant-stubs/components/incomfort/climate.pyi +42 -0
- homeassistant-stubs/components/incomfort/config_flow.pyi +37 -0
- homeassistant-stubs/components/incomfort/const.pyi +2 -0
- homeassistant-stubs/components/incomfort/coordinator.pyi +25 -0
- homeassistant-stubs/components/incomfort/diagnostics.pyi +12 -0
- homeassistant-stubs/components/incomfort/entity.pyi +14 -0
- homeassistant-stubs/components/incomfort/errors.pyi +18 -0
- homeassistant-stubs/components/incomfort/sensor.pyi +33 -0
- homeassistant-stubs/components/incomfort/water_heater.pyi +32 -0
- homeassistant-stubs/components/intent/__init__.pyi +1 -1
- homeassistant-stubs/components/intent/timers.pyi +1 -2
- homeassistant-stubs/components/ipp/config_flow.pyi +2 -2
- homeassistant-stubs/components/iron_os/button.pyi +31 -0
- homeassistant-stubs/components/iron_os/coordinator.pyi +4 -1
- homeassistant-stubs/components/iron_os/diagnostics.pyi +6 -0
- homeassistant-stubs/components/iron_os/number.pyi +1 -2
- homeassistant-stubs/components/iron_os/select.pyi +2 -4
- homeassistant-stubs/components/iron_os/switch.pyi +43 -0
- homeassistant-stubs/components/isy994/__init__.pyi +1 -2
- homeassistant-stubs/components/isy994/config_flow.pyi +4 -3
- homeassistant-stubs/components/kaleidescape/config_flow.pyi +2 -2
- homeassistant-stubs/components/knx/binary_sensor.pyi +18 -10
- homeassistant-stubs/components/knx/climate.pyi +10 -2
- homeassistant-stubs/components/knx/const.pyi +2 -0
- homeassistant-stubs/components/knx/entity.pyi +1 -1
- homeassistant-stubs/components/knx/light.pyi +1 -1
- homeassistant-stubs/components/knx/schema.pyi +5 -7
- homeassistant-stubs/components/knx/sensor.pyi +1 -1
- homeassistant-stubs/components/knx/storage/const.pyi +1 -0
- homeassistant-stubs/components/knx/storage/entity_store_schema.pyi +4 -2
- homeassistant-stubs/components/lamarzocco/config_flow.pyi +2 -2
- homeassistant-stubs/components/lametric/config_flow.pyi +2 -2
- homeassistant-stubs/components/lawn_mower/__init__.pyi +1 -1
- homeassistant-stubs/components/lcn/__init__.pyi +2 -2
- homeassistant-stubs/components/lcn/climate.pyi +2 -1
- homeassistant-stubs/components/lcn/const.pyi +1 -0
- homeassistant-stubs/components/lcn/schemas.pyi +1 -1
- homeassistant-stubs/components/lektrico/config_flow.pyi +1 -1
- homeassistant-stubs/components/letpot/__init__.pyi +13 -0
- homeassistant-stubs/components/letpot/config_flow.pyi +19 -0
- homeassistant-stubs/components/letpot/const.pyi +6 -0
- homeassistant-stubs/components/letpot/coordinator.pyi +20 -0
- homeassistant-stubs/components/letpot/entity.pyi +10 -0
- homeassistant-stubs/components/letpot/time.pyi +33 -0
- homeassistant-stubs/components/lifx/config_flow.pyi +3 -3
- homeassistant-stubs/components/lifx/coordinator.pyi +1 -1
- homeassistant-stubs/components/lifx/manager.pyi +16 -1
- homeassistant-stubs/components/light/__init__.pyi +1 -1
- homeassistant-stubs/components/linkplay/config_flow.pyi +2 -2
- homeassistant-stubs/components/litterrobot/__init__.pyi +2 -6
- homeassistant-stubs/components/litterrobot/binary_sensor.pyi +6 -9
- homeassistant-stubs/components/litterrobot/button.pyi +6 -10
- homeassistant-stubs/components/litterrobot/{hub.pyi → coordinator.pyi} +11 -10
- homeassistant-stubs/components/litterrobot/entity.pyi +5 -7
- homeassistant-stubs/components/litterrobot/select.pyi +5 -14
- homeassistant-stubs/components/litterrobot/sensor.pyi +7 -7
- homeassistant-stubs/components/litterrobot/switch.pyi +7 -9
- homeassistant-stubs/components/litterrobot/time.pyi +3 -6
- homeassistant-stubs/components/litterrobot/update.pyi +1 -1
- homeassistant-stubs/components/litterrobot/vacuum.pyi +1 -5
- homeassistant-stubs/components/lock/__init__.pyi +1 -1
- homeassistant-stubs/components/logbook/models.pyi +1 -1
- homeassistant-stubs/components/lookin/config_flow.pyi +2 -2
- homeassistant-stubs/components/lovelace/__init__.pyi +39 -0
- homeassistant-stubs/components/lovelace/cast.pyi +18 -0
- homeassistant-stubs/components/lovelace/const.pyi +33 -0
- homeassistant-stubs/components/lovelace/dashboard.pyi +83 -0
- homeassistant-stubs/components/lovelace/resources.pyi +42 -0
- homeassistant-stubs/components/lovelace/system_health.pyi +9 -0
- homeassistant-stubs/components/lovelace/websocket.pyi +26 -0
- homeassistant-stubs/components/mastodon/config_flow.pyi +2 -3
- homeassistant-stubs/components/mastodon/notify.pyi +1 -3
- homeassistant-stubs/components/matter/config_flow.pyi +1 -1
- homeassistant-stubs/components/matter/cover.pyi +0 -1
- homeassistant-stubs/components/matter/discovery.pyi +2 -2
- homeassistant-stubs/components/matter/entity.pyi +11 -4
- homeassistant-stubs/components/matter/light.pyi +0 -1
- homeassistant-stubs/components/matter/lock.pyi +0 -2
- homeassistant-stubs/components/matter/models.pyi +10 -1
- homeassistant-stubs/components/matter/number.pyi +1 -1
- homeassistant-stubs/components/matter/select.pyi +32 -2
- homeassistant-stubs/components/matter/sensor.pyi +24 -0
- homeassistant-stubs/components/matter/switch.pyi +15 -2
- homeassistant-stubs/components/matter/vacuum.pyi +0 -1
- homeassistant-stubs/components/matter/valve.pyi +0 -2
- homeassistant-stubs/components/mcp/__init__.pyi +16 -0
- homeassistant-stubs/components/mcp/config_flow.pyi +23 -0
- homeassistant-stubs/components/mcp/const.pyi +1 -0
- homeassistant-stubs/components/mcp/coordinator.pyi +40 -0
- homeassistant-stubs/components/mcp/types.pyi +4 -0
- homeassistant-stubs/components/mcp_server/__init__.pyi +13 -0
- homeassistant-stubs/components/mcp_server/config_flow.pyi +14 -0
- homeassistant-stubs/components/mcp_server/const.pyi +4 -0
- homeassistant-stubs/components/mcp_server/http.pyi +31 -0
- homeassistant-stubs/components/mcp_server/llm_api.pyi +15 -0
- homeassistant-stubs/components/mcp_server/server.pyi +13 -0
- homeassistant-stubs/components/mcp_server/session.pyi +20 -0
- homeassistant-stubs/components/mcp_server/types.pyi +4 -0
- homeassistant-stubs/components/media_player/__init__.pyi +1 -1
- homeassistant-stubs/components/media_source/__init__.pyi +1 -1
- homeassistant-stubs/components/media_source/models.pyi +1 -2
- homeassistant-stubs/components/minecraft_server/__init__.pyi +1 -1
- homeassistant-stubs/components/modbus/__init__.pyi +2 -2
- homeassistant-stubs/components/modbus/binary_sensor.pyi +1 -3
- homeassistant-stubs/components/modbus/climate.pyi +4 -3
- homeassistant-stubs/components/modbus/const.pyi +4 -0
- homeassistant-stubs/components/modbus/cover.pyi +1 -2
- homeassistant-stubs/components/modbus/entity.pyi +15 -8
- homeassistant-stubs/components/modbus/light.pyi +0 -1
- homeassistant-stubs/components/modbus/modbus.pyi +4 -0
- homeassistant-stubs/components/modbus/sensor.pyi +1 -2
- homeassistant-stubs/components/modbus/switch.pyi +0 -1
- homeassistant-stubs/components/modem_callerid/config_flow.pyi +2 -1
- homeassistant-stubs/components/motionmount/__init__.pyi +2 -2
- homeassistant-stubs/components/motionmount/config_flow.pyi +16 -6
- homeassistant-stubs/components/motionmount/entity.pyi +3 -2
- homeassistant-stubs/components/motionmount/select.pyi +2 -0
- homeassistant-stubs/components/mqtt/__init__.pyi +11 -34
- homeassistant-stubs/components/mqtt/alarm_control_panel.pyi +1 -1
- homeassistant-stubs/components/mqtt/config_flow.pyi +3 -5
- homeassistant-stubs/components/mqtt/const.pyi +7 -1
- homeassistant-stubs/components/mqtt/diagnostics.pyi +0 -1
- homeassistant-stubs/components/mqtt/light/schema_basic.pyi +2 -1
- homeassistant-stubs/components/mqtt/light/schema_json.pyi +2 -1
- homeassistant-stubs/components/mqtt/light/schema_template.pyi +2 -1
- homeassistant-stubs/components/music_assistant/config_flow.pyi +2 -2
- homeassistant-stubs/components/myuplink/sensor.pyi +1 -1
- homeassistant-stubs/components/nam/config_flow.pyi +2 -2
- homeassistant-stubs/components/nanoleaf/config_flow.pyi +6 -5
- homeassistant-stubs/components/nest/__init__.pyi +3 -4
- homeassistant-stubs/components/nest/api.pyi +2 -2
- homeassistant-stubs/components/nest/climate.pyi +2 -0
- homeassistant-stubs/components/nest/config_flow.pyi +6 -2
- homeassistant-stubs/components/netatmo/button.pyi +25 -0
- homeassistant-stubs/components/netatmo/const.pyi +1 -0
- homeassistant-stubs/components/netatmo/data_handler.pyi +1 -1
- homeassistant-stubs/components/network/system_health.pyi +11 -0
- homeassistant-stubs/components/notify/__init__.pyi +1 -1
- homeassistant-stubs/components/number/__init__.pyi +2 -2
- homeassistant-stubs/components/nut/config_flow.pyi +2 -2
- homeassistant-stubs/components/onboarding/views.pyi +30 -2
- homeassistant-stubs/components/onedrive/__init__.pyi +26 -0
- homeassistant-stubs/components/onedrive/application_credentials.pyi +5 -0
- homeassistant-stubs/components/onedrive/backup.pyi +41 -0
- homeassistant-stubs/components/onedrive/config_flow.pyi +18 -0
- homeassistant-stubs/components/onedrive/const.pyi +10 -0
- homeassistant-stubs/components/onewire/__init__.pyi +4 -4
- homeassistant-stubs/components/onewire/binary_sensor.pyi +8 -4
- homeassistant-stubs/components/onewire/config_flow.pyi +12 -7
- homeassistant-stubs/components/onewire/const.pyi +0 -2
- homeassistant-stubs/components/onewire/diagnostics.pyi +1 -1
- homeassistant-stubs/components/onewire/onewirehub.pyi +22 -14
- homeassistant-stubs/components/onewire/select.pyi +27 -0
- homeassistant-stubs/components/onewire/sensor.pyi +7 -4
- homeassistant-stubs/components/onewire/switch.pyi +8 -4
- homeassistant-stubs/components/onkyo/config_flow.pyi +9 -4
- homeassistant-stubs/components/open_meteo/__init__.pyi +4 -8
- homeassistant-stubs/components/open_meteo/coordinator.pyi +15 -0
- homeassistant-stubs/components/open_meteo/diagnostics.pyi +2 -5
- homeassistant-stubs/components/open_meteo/weather.pyi +3 -3
- homeassistant-stubs/components/openai_conversation/conversation.pyi +6 -6
- homeassistant-stubs/components/overkiz/__init__.pyi +1 -1
- homeassistant-stubs/components/overkiz/climate/__init__.pyi +1 -0
- homeassistant-stubs/components/overkiz/climate/atlantic_pass_apc_zone_control_zone.pyi +1 -1
- homeassistant-stubs/components/overkiz/climate/evo_home_controller.pyi +24 -0
- homeassistant-stubs/components/overkiz/config_flow.pyi +4 -3
- homeassistant-stubs/components/overkiz/const.pyi +1 -0
- homeassistant-stubs/components/overkiz/coordinator.pyi +5 -3
- homeassistant-stubs/components/overseerr/__init__.pyi +37 -0
- homeassistant-stubs/components/overseerr/config_flow.pyi +14 -0
- homeassistant-stubs/components/overseerr/const.pyi +12 -0
- homeassistant-stubs/components/overseerr/coordinator.pyi +18 -0
- homeassistant-stubs/components/overseerr/diagnostics.pyi +6 -0
- homeassistant-stubs/components/overseerr/entity.pyi +11 -0
- homeassistant-stubs/components/overseerr/event.pyi +35 -0
- homeassistant-stubs/components/overseerr/sensor.pyi +27 -0
- homeassistant-stubs/components/overseerr/services.pyi +16 -0
- homeassistant-stubs/components/pandora/__init__.pyi +0 -0
- homeassistant-stubs/components/pandora/media_player.pyi +51 -0
- homeassistant-stubs/components/peblar/config_flow.pyi +3 -3
- homeassistant-stubs/components/person/__init__.pyi +103 -0
- homeassistant-stubs/components/person/const.pyi +1 -0
- homeassistant-stubs/components/person/significant_change.pyi +5 -0
- homeassistant-stubs/components/plugwise/config_flow.pyi +1 -1
- homeassistant-stubs/components/powerfox/sensor.pyi +3 -2
- homeassistant-stubs/components/powerwall/__init__.pyi +8 -3
- homeassistant-stubs/components/powerwall/config_flow.pyi +3 -3
- homeassistant-stubs/components/powerwall/const.pyi +2 -0
- homeassistant-stubs/components/proximity/__init__.pyi +2 -3
- homeassistant-stubs/components/proximity/coordinator.pyi +1 -2
- homeassistant-stubs/components/pure_energie/config_flow.pyi +2 -2
- homeassistant-stubs/components/python_script/__init__.pyi +48 -0
- homeassistant-stubs/components/qbus/__init__.pyi +15 -0
- homeassistant-stubs/components/qbus/config_flow.pyi +26 -0
- homeassistant-stubs/components/qbus/const.pyi +7 -0
- homeassistant-stubs/components/qbus/coordinator.pyi +48 -0
- homeassistant-stubs/components/qbus/entity.pyi +29 -0
- homeassistant-stubs/components/qbus/switch.pyi +21 -0
- homeassistant-stubs/components/qnap_qsw/config_flow.pyi +2 -2
- homeassistant-stubs/components/qnap_qsw/sensor.pyi +1 -4
- homeassistant-stubs/components/rabbitair/config_flow.pyi +2 -1
- homeassistant-stubs/components/rainforest_raven/config_flow.pyi +3 -2
- homeassistant-stubs/components/rainmachine/config_flow.pyi +4 -4
- homeassistant-stubs/components/recorder/auto_repairs/statistics/duplicates.pyi +1 -1
- homeassistant-stubs/components/recorder/const.pyi +0 -2
- homeassistant-stubs/components/recorder/core.pyi +2 -2
- homeassistant-stubs/components/recorder/db_schema.pyi +5 -2
- homeassistant-stubs/components/recorder/migration.pyi +1 -1
- homeassistant-stubs/components/recorder/models/state.pyi +1 -1
- homeassistant-stubs/components/recorder/util.pyi +1 -7
- homeassistant-stubs/components/remote/__init__.pyi +1 -1
- homeassistant-stubs/components/reolink/__init__.pyi +4 -2
- homeassistant-stubs/components/reolink/config_flow.pyi +7 -3
- homeassistant-stubs/components/reolink/const.pyi +1 -0
- homeassistant-stubs/components/reolink/entity.pyi +1 -1
- homeassistant-stubs/components/reolink/host.pyi +9 -2
- homeassistant-stubs/components/reolink/switch.pyi +5 -1
- homeassistant-stubs/components/reolink/util.pyi +6 -5
- homeassistant-stubs/components/repairs/__init__.pyi +1 -1
- homeassistant-stubs/components/ring/__init__.pyi +4 -15
- homeassistant-stubs/components/ring/binary_sensor.pyi +2 -0
- homeassistant-stubs/components/ring/button.pyi +1 -0
- homeassistant-stubs/components/ring/camera.pyi +1 -0
- homeassistant-stubs/components/ring/config_flow.pyi +2 -2
- homeassistant-stubs/components/ring/coordinator.pyi +14 -4
- homeassistant-stubs/components/ring/entity.pyi +1 -2
- homeassistant-stubs/components/ring/event.pyi +2 -0
- homeassistant-stubs/components/ring/light.pyi +1 -0
- homeassistant-stubs/components/ring/number.pyi +2 -0
- homeassistant-stubs/components/ring/sensor.pyi +2 -0
- homeassistant-stubs/components/ring/siren.pyi +1 -0
- homeassistant-stubs/components/ring/switch.pyi +1 -0
- homeassistant-stubs/components/roborock/__init__.pyi +3 -1
- homeassistant-stubs/components/roborock/const.pyi +4 -0
- homeassistant-stubs/components/roborock/coordinator.pyi +10 -6
- homeassistant-stubs/components/roborock/image.pyi +10 -11
- homeassistant-stubs/components/roborock/roborock_storage.pyi +23 -0
- homeassistant-stubs/components/roborock/sensor.pyi +1 -1
- homeassistant-stubs/components/roborock/vacuum.pyi +5 -1
- homeassistant-stubs/components/roku/config_flow.pyi +4 -3
- homeassistant-stubs/components/romy/config_flow.pyi +2 -2
- homeassistant-stubs/components/russound_rio/config_flow.pyi +6 -2
- homeassistant-stubs/components/russound_rio/const.pyi +0 -2
- homeassistant-stubs/components/russound_rio/media_player.pyi +13 -6
- homeassistant-stubs/components/ruuvi_gateway/config_flow.pyi +2 -2
- homeassistant-stubs/components/samsungtv/config_flow.pyi +6 -4
- homeassistant-stubs/components/scrape/sensor.pyi +2 -0
- homeassistant-stubs/components/script/__init__.pyi +1 -1
- homeassistant-stubs/components/select/__init__.pyi +2 -2
- homeassistant-stubs/components/sensibo/__init__.pyi +3 -3
- homeassistant-stubs/components/sensibo/binary_sensor.pyi +1 -0
- homeassistant-stubs/components/sensibo/climate.pyi +13 -7
- homeassistant-stubs/components/sensibo/config_flow.pyi +1 -1
- homeassistant-stubs/components/sensibo/coordinator.pyi +2 -0
- homeassistant-stubs/components/sensibo/entity.pyi +5 -1
- homeassistant-stubs/components/sensibo/select.pyi +6 -1
- homeassistant-stubs/components/sensibo/sensor.pyi +2 -0
- homeassistant-stubs/components/sensor/__init__.pyi +2 -2
- homeassistant-stubs/components/shelly/__init__.pyi +2 -0
- homeassistant-stubs/components/shelly/binary_sensor.pyi +11 -6
- homeassistant-stubs/components/shelly/bluetooth/__init__.pyi +1 -1
- homeassistant-stubs/components/shelly/climate.pyi +25 -2
- homeassistant-stubs/components/shelly/config_flow.pyi +1 -1
- homeassistant-stubs/components/shelly/const.pyi +3 -0
- homeassistant-stubs/components/shelly/coordinator.pyi +3 -2
- homeassistant-stubs/components/shelly/entity.pyi +4 -1
- homeassistant-stubs/components/shelly/number.pyi +21 -13
- homeassistant-stubs/components/shelly/sensor.pyi +12 -7
- homeassistant-stubs/components/shelly/utils.pyi +1 -1
- homeassistant-stubs/components/siren/__init__.pyi +1 -1
- homeassistant-stubs/components/slack/config_flow.pyi +2 -1
- homeassistant-stubs/components/slack/entity.pyi +3 -5
- homeassistant-stubs/components/slack/notify.pyi +4 -2
- homeassistant-stubs/components/slack/sensor.pyi +2 -2
- homeassistant-stubs/components/slack/utils.pyi +6 -0
- homeassistant-stubs/components/smhi/config_flow.pyi +1 -1
- homeassistant-stubs/components/smhi/weather.pyi +3 -3
- homeassistant-stubs/components/smlight/config_flow.pyi +7 -5
- homeassistant-stubs/components/spotify/__init__.pyi +1 -1
- homeassistant-stubs/components/spotify/browse_media.pyi +1 -1
- homeassistant-stubs/components/spotify/coordinator.pyi +2 -0
- homeassistant-stubs/components/squeezebox/config_flow.pyi +2 -2
- homeassistant-stubs/components/ssdp/__init__.pyi +34 -44
- homeassistant-stubs/components/starlink/coordinator.pyi +1 -0
- homeassistant-stubs/components/steamist/config_flow.pyi +2 -2
- homeassistant-stubs/components/stream/__init__.pyi +3 -15
- homeassistant-stubs/components/stream/const.pyi +9 -1
- homeassistant-stubs/components/stream/exceptions.pyi +13 -0
- homeassistant-stubs/components/stream/worker.pyi +4 -5
- homeassistant-stubs/components/stt/__init__.pyi +1 -1
- homeassistant-stubs/components/suez_water/__init__.pyi +4 -0
- homeassistant-stubs/components/switch/__init__.pyi +1 -1
- homeassistant-stubs/components/switchbot_cloud/__init__.pyi +5 -5
- homeassistant-stubs/components/switchbot_cloud/button.pyi +17 -0
- homeassistant-stubs/components/switchbot_cloud/entity.pyi +5 -0
- homeassistant-stubs/components/switchbot_cloud/lock.pyi +2 -3
- homeassistant-stubs/components/switchbot_cloud/sensor.pyi +5 -5
- homeassistant-stubs/components/switchbot_cloud/switch.pyi +3 -6
- homeassistant-stubs/components/switchbot_cloud/vacuum.pyi +1 -2
- homeassistant-stubs/components/switcher_kis/switch.pyi +29 -0
- homeassistant-stubs/components/synology_dsm/__init__.pyi +5 -2
- homeassistant-stubs/components/synology_dsm/backup.pyi +36 -0
- homeassistant-stubs/components/synology_dsm/common.pyi +5 -2
- homeassistant-stubs/components/synology_dsm/config_flow.pyi +11 -4
- homeassistant-stubs/components/synology_dsm/const.pyi +6 -0
- homeassistant-stubs/components/synology_dsm/coordinator.pyi +1 -1
- homeassistant-stubs/components/system_health/__init__.pyi +3 -1
- homeassistant-stubs/components/systemmonitor/__init__.pyi +3 -3
- homeassistant-stubs/components/systemmonitor/config_flow.pyi +0 -4
- homeassistant-stubs/components/systemmonitor/coordinator.pyi +2 -1
- homeassistant-stubs/components/tailwind/config_flow.pyi +3 -3
- homeassistant-stubs/components/technove/binary_sensor.pyi +0 -4
- homeassistant-stubs/components/technove/config_flow.pyi +3 -2
- homeassistant-stubs/components/tedee/coordinator.pyi +1 -1
- homeassistant-stubs/components/text/__init__.pyi +1 -1
- homeassistant-stubs/components/tile/__init__.pyi +4 -15
- homeassistant-stubs/components/tile/binary_sensor.pyi +24 -0
- homeassistant-stubs/components/tile/config_flow.pyi +0 -1
- homeassistant-stubs/components/tile/coordinator.pyi +18 -0
- homeassistant-stubs/components/tile/device_tracker.pyi +6 -20
- homeassistant-stubs/components/tile/diagnostics.pyi +2 -4
- homeassistant-stubs/components/tile/entity.pyi +13 -0
- homeassistant-stubs/components/time/__init__.pyi +1 -1
- homeassistant-stubs/components/todo/__init__.pyi +1 -1
- homeassistant-stubs/components/tolo/config_flow.pyi +2 -2
- homeassistant-stubs/components/tplink/__init__.pyi +3 -6
- homeassistant-stubs/components/tplink/binary_sensor.pyi +1 -0
- homeassistant-stubs/components/tplink/button.pyi +2 -1
- homeassistant-stubs/components/tplink/camera.pyi +9 -9
- homeassistant-stubs/components/tplink/climate.pyi +18 -12
- homeassistant-stubs/components/tplink/config_flow.pyi +3 -2
- homeassistant-stubs/components/tplink/const.pyi +1 -1
- homeassistant-stubs/components/tplink/coordinator.pyi +20 -4
- homeassistant-stubs/components/tplink/deprecate.pyi +5 -3
- homeassistant-stubs/components/tplink/entity.pyi +30 -11
- homeassistant-stubs/components/tplink/fan.pyi +15 -7
- homeassistant-stubs/components/tplink/light.pyi +22 -11
- homeassistant-stubs/components/tplink/number.pyi +1 -0
- homeassistant-stubs/components/tplink/select.pyi +1 -0
- homeassistant-stubs/components/tplink/sensor.pyi +7 -2
- homeassistant-stubs/components/tplink/siren.pyi +22 -7
- homeassistant-stubs/components/tplink/switch.pyi +1 -0
- homeassistant-stubs/components/tplink/vacuum.pyi +43 -0
- homeassistant-stubs/components/tradfri/config_flow.pyi +2 -2
- homeassistant-stubs/components/trafikverket_camera/__init__.pyi +2 -2
- homeassistant-stubs/components/trafikverket_camera/camera.pyi +2 -0
- homeassistant-stubs/components/trafikverket_ferry/__init__.pyi +1 -1
- homeassistant-stubs/components/trafikverket_ferry/coordinator.pyi +1 -1
- homeassistant-stubs/components/trafikverket_ferry/sensor.pyi +1 -0
- homeassistant-stubs/components/trafikverket_train/__init__.pyi +6 -3
- homeassistant-stubs/components/trafikverket_train/config_flow.pyi +10 -4
- homeassistant-stubs/components/trafikverket_train/coordinator.pyi +2 -2
- homeassistant-stubs/components/trafikverket_train/sensor.pyi +1 -0
- homeassistant-stubs/components/trafikverket_weatherstation/__init__.pyi +1 -1
- homeassistant-stubs/components/trafikverket_weatherstation/coordinator.pyi +1 -1
- homeassistant-stubs/components/trafikverket_weatherstation/diagnostics.pyi +5 -0
- homeassistant-stubs/components/trafikverket_weatherstation/sensor.pyi +1 -0
- homeassistant-stubs/components/tts/__init__.pyi +2 -2
- homeassistant-stubs/components/unifi/config_flow.pyi +2 -2
- homeassistant-stubs/components/unifi/device_tracker.pyi +1 -1
- homeassistant-stubs/components/unifi/switch.pyi +1 -0
- homeassistant-stubs/components/unifiprotect/__init__.pyi +1 -1
- homeassistant-stubs/components/unifiprotect/config_flow.pyi +4 -3
- homeassistant-stubs/components/unifiprotect/light.pyi +1 -1
- homeassistant-stubs/components/unifiprotect/views.pyi +8 -0
- homeassistant-stubs/components/upcloud/__init__.pyi +6 -12
- homeassistant-stubs/components/upcloud/binary_sensor.pyi +2 -4
- homeassistant-stubs/components/upcloud/config_flow.pyi +3 -2
- homeassistant-stubs/components/upcloud/const.pyi +0 -1
- homeassistant-stubs/components/upcloud/coordinator.pyi +3 -2
- homeassistant-stubs/components/upcloud/entity.pyi +3 -3
- homeassistant-stubs/components/upcloud/switch.pyi +3 -4
- homeassistant-stubs/components/update/__init__.pyi +2 -2
- homeassistant-stubs/components/usb/__init__.pyi +21 -18
- homeassistant-stubs/components/usb/models.pyi +1 -1
- homeassistant-stubs/components/vacuum/__init__.pyi +1 -1
- homeassistant-stubs/components/velbus/config_flow.pyi +2 -2
- homeassistant-stubs/components/velbus/const.pyi +1 -0
- homeassistant-stubs/components/velbus/diagnostics.pyi +1 -3
- homeassistant-stubs/components/velbus/entity.pyi +4 -0
- homeassistant-stubs/components/velbus/services.pyi +5 -1
- homeassistant-stubs/components/wake_word/__init__.pyi +1 -1
- homeassistant-stubs/components/water_heater/__init__.pyi +7 -3
- homeassistant-stubs/components/weather/__init__.pyi +2 -3
- homeassistant-stubs/components/webhook/__init__.pyi +0 -1
- homeassistant-stubs/components/webostv/__init__.pyi +8 -24
- homeassistant-stubs/components/webostv/config_flow.pyi +14 -13
- homeassistant-stubs/components/webostv/const.pyi +0 -1
- homeassistant-stubs/components/webostv/device_trigger.pyi +1 -2
- homeassistant-stubs/components/webostv/diagnostics.pyi +2 -3
- homeassistant-stubs/components/webostv/helpers.pyi +11 -4
- homeassistant-stubs/components/webostv/media_player.pyi +17 -13
- homeassistant-stubs/components/webostv/notify.pyi +6 -4
- homeassistant-stubs/components/webostv/trigger.pyi +2 -0
- homeassistant-stubs/components/wiz/config_flow.pyi +3 -2
- homeassistant-stubs/components/wled/config_flow.pyi +3 -2
- homeassistant-stubs/components/worldclock/sensor.pyi +2 -7
- homeassistant-stubs/components/zeroconf/__init__.pyi +12 -20
- homeassistant-stubs/components/zwave_js/api.pyi +1 -1
- homeassistant-stubs/components/zwave_js/config_flow.pyi +3 -2
- homeassistant-stubs/config_entries.pyi +7 -9
- homeassistant-stubs/const.pyi +2 -0
- homeassistant-stubs/core.pyi +2 -3
- homeassistant-stubs/core_config.pyi +3 -3
- homeassistant-stubs/data_entry_flow.pyi +1 -2
- homeassistant-stubs/helpers/aiohttp_client.pyi +12 -1
- homeassistant-stubs/helpers/area_registry.pyi +11 -4
- homeassistant-stubs/helpers/collection.pyi +5 -7
- homeassistant-stubs/helpers/config_entry_flow.pyi +3 -3
- homeassistant-stubs/helpers/config_entry_oauth2_flow.pyi +3 -0
- homeassistant-stubs/helpers/data_entry_flow.pyi +1 -2
- homeassistant-stubs/helpers/deprecation.pyi +2 -2
- homeassistant-stubs/helpers/device_registry.pyi +1 -1
- homeassistant-stubs/helpers/entity.pyi +1 -1
- homeassistant-stubs/helpers/entity_component.pyi +2 -4
- homeassistant-stubs/helpers/entity_registry.pyi +2 -2
- homeassistant-stubs/helpers/frame.pyi +1 -1
- homeassistant-stubs/helpers/httpx_client.pyi +2 -1
- homeassistant-stubs/helpers/intent.pyi +4 -2
- homeassistant-stubs/helpers/llm.pyi +23 -8
- homeassistant-stubs/helpers/script.pyi +1 -1
- homeassistant-stubs/helpers/service_info/dhcp.pyi +8 -0
- homeassistant-stubs/helpers/service_info/ssdp.pyi +34 -0
- homeassistant-stubs/helpers/service_info/usb.pyi +11 -0
- homeassistant-stubs/helpers/service_info/zeroconf.pyi +20 -0
- homeassistant-stubs/helpers/singleton.pyi +6 -2
- homeassistant-stubs/helpers/storage.pyi +1 -1
- homeassistant-stubs/helpers/template.pyi +4 -4
- homeassistant-stubs/helpers/update_coordinator.pyi +7 -6
- homeassistant-stubs/loader.pyi +1 -1
- homeassistant-stubs/scripts/benchmark/__init__.pyi +8 -8
- homeassistant-stubs/util/event_type.pyi +1 -2
- homeassistant-stubs/util/ulid.pyi +1 -1
- homeassistant-stubs/util/yaml/__init__.pyi +1 -1
- homeassistant-stubs/util/yaml/loader.pyi +1 -1
- {homeassistant_stubs-2025.1.3.dist-info → homeassistant_stubs-2025.2.0.dist-info}/METADATA +4 -4
- {homeassistant_stubs-2025.1.3.dist-info → homeassistant_stubs-2025.2.0.dist-info}/RECORD +729 -594
- homeassistant-stubs/components/dormakaba_dkey/models.pyi +0 -8
- homeassistant-stubs/components/imgw_pib/binary_sensor.pyi +0 -27
- homeassistant-stubs/components/tplink/models.pyi +0 -10
- {homeassistant_stubs-2025.1.3.dist-info → homeassistant_stubs-2025.2.0.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2025.1.3.dist-info → homeassistant_stubs-2025.2.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,5 +1,10 @@
|
|
1
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, BackupReaderWriterError as BackupReaderWriterError, CreateBackupEvent as CreateBackupEvent, IncorrectPasswordError as IncorrectPasswordError, ManagerBackup as ManagerBackup, NewBackup as NewBackup, WrittenBackup as WrittenBackup
|
3
|
-
from .models import AddonInfo as AddonInfo, AgentBackup as AgentBackup, Folder as Folder
|
2
|
+
from .manager import BackupManager, BackupManagerError as BackupManagerError, BackupPlatformProtocol as BackupPlatformProtocol, BackupReaderWriter as BackupReaderWriter, BackupReaderWriterError as BackupReaderWriterError, CreateBackupEvent as CreateBackupEvent, CreateBackupStage as CreateBackupStage, CreateBackupState as CreateBackupState, IdleEvent as IdleEvent, IncorrectPasswordError as IncorrectPasswordError, ManagerBackup as ManagerBackup, NewBackup as NewBackup, RestoreBackupEvent as RestoreBackupEvent, RestoreBackupStage as RestoreBackupStage, RestoreBackupState as RestoreBackupState, WrittenBackup as WrittenBackup
|
3
|
+
from .models import AddonInfo as AddonInfo, AgentBackup as AgentBackup, BackupNotFound as BackupNotFound, Folder as Folder
|
4
|
+
from .util import suggested_filename as suggested_filename, suggested_filename_from_name_date as suggested_filename_from_name_date
|
5
|
+
from homeassistant.core import HomeAssistant, callback
|
4
6
|
|
5
|
-
__all__ = ['AddonInfo', 'AgentBackup', '
|
7
|
+
__all__ = ['AddonInfo', 'AgentBackup', 'BackupAgent', 'BackupAgentError', 'BackupAgentPlatformProtocol', 'BackupManagerError', 'BackupNotFound', 'BackupPlatformProtocol', 'BackupReaderWriter', 'BackupReaderWriterError', 'CreateBackupEvent', 'CreateBackupStage', 'CreateBackupState', 'Folder', 'IdleEvent', 'IncorrectPasswordError', 'LocalBackupAgent', 'ManagerBackup', 'NewBackup', 'RestoreBackupEvent', 'RestoreBackupStage', 'RestoreBackupState', 'WrittenBackup', 'async_get_manager', 'suggested_filename', 'suggested_filename_from_name_date']
|
8
|
+
|
9
|
+
@callback
|
10
|
+
def async_get_manager(hass: HomeAssistant) -> BackupManager: ...
|
@@ -1,20 +1,19 @@
|
|
1
1
|
import abc
|
2
|
-
from .models import AgentBackup as AgentBackup
|
2
|
+
from .models import AgentBackup as AgentBackup, BackupAgentError as BackupAgentError
|
3
3
|
from collections.abc import AsyncIterator, Callable as Callable, Coroutine
|
4
4
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
5
|
-
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
6
5
|
from pathlib import Path
|
7
|
-
from propcache import cached_property
|
6
|
+
from propcache.api import cached_property
|
8
7
|
from typing import Any, Protocol
|
9
8
|
|
10
|
-
class BackupAgentError(HomeAssistantError): ...
|
11
|
-
|
12
9
|
class BackupAgentUnreachableError(BackupAgentError):
|
10
|
+
error_code: str
|
13
11
|
_message: str
|
14
12
|
|
15
13
|
class BackupAgent(abc.ABC, metaclass=abc.ABCMeta):
|
16
14
|
domain: str
|
17
15
|
name: str
|
16
|
+
unique_id: str
|
18
17
|
@cached_property
|
19
18
|
def agent_id(self) -> str: ...
|
20
19
|
@abc.abstractmethod
|
@@ -31,6 +30,8 @@ class BackupAgent(abc.ABC, metaclass=abc.ABCMeta):
|
|
31
30
|
class LocalBackupAgent(BackupAgent, metaclass=abc.ABCMeta):
|
32
31
|
@abc.abstractmethod
|
33
32
|
def get_backup_path(self, backup_id: str) -> Path: ...
|
33
|
+
@abc.abstractmethod
|
34
|
+
def get_new_backup_path(self, backup: AgentBackup) -> Path: ...
|
34
35
|
|
35
36
|
class BackupAgentPlatformProtocol(Protocol):
|
36
37
|
async def async_get_backup_agents(self, hass: HomeAssistant, **kwargs: Any) -> list[BackupAgent]: ...
|
@@ -1,7 +1,7 @@
|
|
1
1
|
from .agent import BackupAgent as BackupAgent, LocalBackupAgent as LocalBackupAgent
|
2
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
|
3
|
+
from .models import AgentBackup as AgentBackup, BackupNotFound as BackupNotFound
|
4
|
+
from .util import read_backup as read_backup, suggested_filename as suggested_filename
|
5
5
|
from _typeshed import Incomplete
|
6
6
|
from collections.abc import AsyncIterator, Callable as Callable, Coroutine
|
7
7
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
@@ -14,16 +14,18 @@ async def async_get_backup_agents(hass: HomeAssistant, **kwargs: Any) -> list[Ba
|
|
14
14
|
class CoreLocalBackupAgent(LocalBackupAgent):
|
15
15
|
domain = DOMAIN
|
16
16
|
name: str
|
17
|
+
unique_id: str
|
17
18
|
_hass: Incomplete
|
18
19
|
_backup_dir: Incomplete
|
19
|
-
_backups: dict[str, AgentBackup]
|
20
|
+
_backups: dict[str, tuple[AgentBackup, Path]]
|
20
21
|
_loaded_backups: bool
|
21
22
|
def __init__(self, hass: HomeAssistant) -> None: ...
|
22
23
|
async def _load_backups(self) -> None: ...
|
23
|
-
def _read_backups(self) -> dict[str, AgentBackup]: ...
|
24
|
+
def _read_backups(self) -> dict[str, tuple[AgentBackup, Path]]: ...
|
24
25
|
async def async_download_backup(self, backup_id: str, **kwargs: Any) -> AsyncIterator[bytes]: ...
|
25
26
|
async def async_upload_backup(self, *, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], backup: AgentBackup, **kwargs: Any) -> None: ...
|
26
27
|
async def async_list_backups(self, **kwargs: Any) -> list[AgentBackup]: ...
|
27
28
|
async def async_get_backup(self, backup_id: str, **kwargs: Any) -> AgentBackup | None: ...
|
28
29
|
def get_backup_path(self, backup_id: str) -> Path: ...
|
30
|
+
def get_new_backup_path(self, backup: AgentBackup) -> Path: ...
|
29
31
|
async def async_delete_backup(self, backup_id: str, **kwargs: Any) -> None: ...
|
@@ -1,8 +1,8 @@
|
|
1
|
+
import datetime as dt
|
1
2
|
from .const import LOGGER as LOGGER
|
2
3
|
from .manager import BackupManager as BackupManager, ManagerBackup as ManagerBackup
|
3
4
|
from .models import BackupManagerError as BackupManagerError, Folder as Folder
|
4
5
|
from _typeshed import Incomplete
|
5
|
-
from collections.abc import Callable as Callable
|
6
6
|
from cronsim import CronSim
|
7
7
|
from dataclasses import dataclass, field
|
8
8
|
from datetime import datetime
|
@@ -14,9 +14,11 @@ from typing import Self, TypedDict
|
|
14
14
|
|
15
15
|
CRON_PATTERN_DAILY: str
|
16
16
|
CRON_PATTERN_WEEKLY: str
|
17
|
+
DEFAULT_BACKUP_TIME: Incomplete
|
17
18
|
BACKUP_START_TIME_JITTER: Incomplete
|
18
19
|
|
19
20
|
class StoredBackupConfig(TypedDict):
|
21
|
+
agents: dict[str, StoredAgentConfig]
|
20
22
|
create_backup: StoredCreateBackupConfig
|
21
23
|
last_attempted_automatic_backup: str | None
|
22
24
|
last_completed_automatic_backup: str | None
|
@@ -25,6 +27,7 @@ class StoredBackupConfig(TypedDict):
|
|
25
27
|
|
26
28
|
@dataclass(kw_only=True)
|
27
29
|
class BackupConfigData:
|
30
|
+
agents: dict[str, AgentConfig]
|
28
31
|
create_backup: CreateBackupConfig
|
29
32
|
last_attempted_automatic_backup: datetime | None = ...
|
30
33
|
last_completed_automatic_backup: datetime | None = ...
|
@@ -39,7 +42,18 @@ class BackupConfig:
|
|
39
42
|
_manager: Incomplete
|
40
43
|
def __init__(self, hass: HomeAssistant, manager: BackupManager) -> None: ...
|
41
44
|
def load(self, stored_config: StoredBackupConfig) -> None: ...
|
42
|
-
async def update(self, *, create_backup: CreateBackupParametersDict | UndefinedType = ..., retention: RetentionParametersDict | UndefinedType = ..., schedule:
|
45
|
+
async def update(self, *, agents: dict[str, AgentParametersDict] | UndefinedType = ..., create_backup: CreateBackupParametersDict | UndefinedType = ..., retention: RetentionParametersDict | UndefinedType = ..., schedule: ScheduleParametersDict | UndefinedType = ...) -> None: ...
|
46
|
+
|
47
|
+
@dataclass(kw_only=True)
|
48
|
+
class AgentConfig:
|
49
|
+
protected: bool
|
50
|
+
def to_dict(self) -> StoredAgentConfig: ...
|
51
|
+
|
52
|
+
class StoredAgentConfig(TypedDict):
|
53
|
+
protected: bool
|
54
|
+
|
55
|
+
class AgentParametersDict(TypedDict, total=False):
|
56
|
+
protected: bool
|
43
57
|
|
44
58
|
@dataclass(kw_only=True)
|
45
59
|
class RetentionConfig:
|
@@ -61,7 +75,30 @@ class RetentionParametersDict(TypedDict, total=False):
|
|
61
75
|
days: int | None
|
62
76
|
|
63
77
|
class StoredBackupSchedule(TypedDict):
|
78
|
+
days: list[Day]
|
79
|
+
recurrence: ScheduleRecurrence
|
64
80
|
state: ScheduleState
|
81
|
+
time: str | None
|
82
|
+
|
83
|
+
class ScheduleParametersDict(TypedDict, total=False):
|
84
|
+
days: list[Day]
|
85
|
+
recurrence: ScheduleRecurrence
|
86
|
+
state: ScheduleState
|
87
|
+
time: dt.time | None
|
88
|
+
|
89
|
+
class Day(StrEnum):
|
90
|
+
MONDAY = 'mon'
|
91
|
+
TUESDAY = 'tue'
|
92
|
+
WEDNESDAY = 'wed'
|
93
|
+
THURSDAY = 'thu'
|
94
|
+
FRIDAY = 'fri'
|
95
|
+
SATURDAY = 'sat'
|
96
|
+
SUNDAY = 'sun'
|
97
|
+
|
98
|
+
class ScheduleRecurrence(StrEnum):
|
99
|
+
NEVER = 'never'
|
100
|
+
DAILY = 'daily'
|
101
|
+
CUSTOM_DAYS = 'custom_days'
|
65
102
|
|
66
103
|
class ScheduleState(StrEnum):
|
67
104
|
NEVER = 'never'
|
@@ -76,8 +113,13 @@ class ScheduleState(StrEnum):
|
|
76
113
|
|
77
114
|
@dataclass(kw_only=True)
|
78
115
|
class BackupSchedule:
|
116
|
+
days: list[Day] = field(default_factory=list)
|
117
|
+
recurrence: ScheduleRecurrence = ...
|
79
118
|
state: ScheduleState = ...
|
119
|
+
time: dt.time | None = ...
|
80
120
|
cron_event: CronSim | None = field(init=False, default=None)
|
121
|
+
next_automatic_backup: datetime | None = field(init=False, default=None)
|
122
|
+
next_automatic_backup_additional = ...
|
81
123
|
@callback
|
82
124
|
def apply(self, manager: BackupManager) -> None: ...
|
83
125
|
@callback
|
@@ -115,5 +157,5 @@ class CreateBackupParametersDict(TypedDict, total=False):
|
|
115
157
|
name: str | None
|
116
158
|
password: str | None
|
117
159
|
|
118
|
-
|
160
|
+
def _automatic_backups_filter(backups: dict[str, ManagerBackup]) -> dict[str, ManagerBackup]: ...
|
119
161
|
async def delete_backups_exceeding_configured_count(manager: BackupManager) -> None: ...
|
@@ -1,9 +1,14 @@
|
|
1
|
+
from . import util as util
|
2
|
+
from .agent import BackupAgent as BackupAgent
|
1
3
|
from .const import DATA_MANAGER as DATA_MANAGER
|
4
|
+
from .manager import BackupManager as BackupManager
|
5
|
+
from .models import BackupNotFound as BackupNotFound
|
2
6
|
from aiohttp.web import FileResponse, Request as Request, Response, StreamResponse
|
3
7
|
from homeassistant.components.http import HomeAssistantView as HomeAssistantView, KEY_HASS as KEY_HASS, require_admin as require_admin
|
4
8
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
5
9
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
6
10
|
from homeassistant.util import slugify as slugify
|
11
|
+
from multidict import istr
|
7
12
|
|
8
13
|
@callback
|
9
14
|
def async_register_http_views(hass: HomeAssistant) -> None: ...
|
@@ -12,9 +17,12 @@ class DownloadBackupView(HomeAssistantView):
|
|
12
17
|
url: str
|
13
18
|
name: str
|
14
19
|
async def get(self, request: Request, backup_id: str) -> StreamResponse | FileResponse | Response: ...
|
20
|
+
async def _send_backup_no_password(self, request: Request, headers: dict[istr, str], backup_id: str, agent_id: str, agent: BackupAgent, manager: BackupManager) -> StreamResponse | FileResponse | Response: ...
|
21
|
+
async def _send_backup_with_password(self, hass: HomeAssistant, request: Request, headers: dict[istr, str], backup_id: str, agent_id: str, password: str, agent: BackupAgent, manager: BackupManager) -> StreamResponse | FileResponse | Response: ...
|
15
22
|
|
16
23
|
class UploadBackupView(HomeAssistantView):
|
17
24
|
url: str
|
18
25
|
name: str
|
19
26
|
@require_admin
|
20
27
|
async def post(self, request: Request) -> Response: ...
|
28
|
+
async def _post(self, request: Request) -> Response: ...
|
@@ -4,16 +4,15 @@ import asyncio
|
|
4
4
|
from .agent import BackupAgent as BackupAgent, BackupAgentError as BackupAgentError, BackupAgentPlatformProtocol as BackupAgentPlatformProtocol, LocalBackupAgent as LocalBackupAgent
|
5
5
|
from .config import BackupConfig as BackupConfig, delete_backups_exceeding_configured_count as delete_backups_exceeding_configured_count
|
6
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, BackupManagerError as BackupManagerError, Folder as Folder
|
7
|
+
from .models import AgentBackup as AgentBackup, BackupError as BackupError, BackupManagerError as BackupManagerError, BackupReaderWriterError as BackupReaderWriterError, BaseBackup as BaseBackup, Folder as Folder
|
8
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
|
9
|
+
from .util import AsyncIteratorReader as AsyncIteratorReader, DecryptedBackupStreamer as DecryptedBackupStreamer, EncryptedBackupStreamer as EncryptedBackupStreamer, make_backup_dir as make_backup_dir, read_backup as read_backup, validate_password as validate_password, validate_password_stream as validate_password_stream
|
10
10
|
from _typeshed import Incomplete
|
11
11
|
from collections.abc import AsyncIterator, Callable as Callable, Coroutine
|
12
12
|
from dataclasses import dataclass
|
13
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
|
14
|
+
from homeassistant.backup_restore import RESTORE_BACKUP_FILE as RESTORE_BACKUP_FILE, RESTORE_BACKUP_RESULT_FILE as RESTORE_BACKUP_RESULT_FILE, password_to_key as password_to_key
|
15
15
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
16
|
-
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
17
16
|
from homeassistant.helpers import instance_id as instance_id, integration_platform as integration_platform
|
18
17
|
from homeassistant.helpers.json import json_bytes as json_bytes
|
19
18
|
from pathlib import Path
|
@@ -24,8 +23,13 @@ class NewBackup:
|
|
24
23
|
backup_job_id: str
|
25
24
|
|
26
25
|
@dataclass(frozen=True, kw_only=True, slots=True)
|
27
|
-
class
|
28
|
-
|
26
|
+
class AgentBackupStatus:
|
27
|
+
protected: bool
|
28
|
+
size: int
|
29
|
+
|
30
|
+
@dataclass(frozen=True, kw_only=True, slots=True)
|
31
|
+
class ManagerBackup(BaseBackup):
|
32
|
+
agents: dict[str, AgentBackupStatus]
|
29
33
|
failed_agent_ids: list[str]
|
30
34
|
with_automatic_settings: bool | None
|
31
35
|
|
@@ -79,6 +83,7 @@ class RestoreBackupStage(StrEnum):
|
|
79
83
|
|
80
84
|
class RestoreBackupState(StrEnum):
|
81
85
|
COMPLETED = 'completed'
|
86
|
+
CORE_RESTART = 'core_restart'
|
82
87
|
FAILED = 'failed'
|
83
88
|
IN_PROGRESS = 'in_progress'
|
84
89
|
|
@@ -93,18 +98,21 @@ class IdleEvent(ManagerStateEvent):
|
|
93
98
|
@dataclass(frozen=True, kw_only=True, slots=True)
|
94
99
|
class CreateBackupEvent(ManagerStateEvent):
|
95
100
|
manager_state: BackupManagerState = ...
|
101
|
+
reason: str | None
|
96
102
|
stage: CreateBackupStage | None
|
97
103
|
state: CreateBackupState
|
98
104
|
|
99
105
|
@dataclass(frozen=True, kw_only=True, slots=True)
|
100
106
|
class ReceiveBackupEvent(ManagerStateEvent):
|
101
107
|
manager_state: BackupManagerState = ...
|
108
|
+
reason: str | None
|
102
109
|
stage: ReceiveBackupStage | None
|
103
110
|
state: ReceiveBackupState
|
104
111
|
|
105
112
|
@dataclass(frozen=True, kw_only=True, slots=True)
|
106
113
|
class RestoreBackupEvent(ManagerStateEvent):
|
107
114
|
manager_state: BackupManagerState = ...
|
115
|
+
reason: str | None
|
108
116
|
stage: RestoreBackupStage | None
|
109
117
|
state: RestoreBackupState
|
110
118
|
|
@@ -114,14 +122,21 @@ class BackupPlatformProtocol(Protocol):
|
|
114
122
|
|
115
123
|
class BackupReaderWriter(abc.ABC, metaclass=abc.ABCMeta):
|
116
124
|
@abc.abstractmethod
|
117
|
-
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[[
|
125
|
+
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[[CreateBackupEvent], None], password: str | None) -> tuple[NewBackup, asyncio.Task[WrittenBackup]]: ...
|
118
126
|
@abc.abstractmethod
|
119
127
|
async def async_receive_backup(self, *, agent_ids: list[str], stream: AsyncIterator[bytes], suggested_filename: str) -> WrittenBackup: ...
|
120
128
|
@abc.abstractmethod
|
121
|
-
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: ...
|
129
|
+
async def async_restore_backup(self, backup_id: str, *, agent_id: str, on_progress: Callable[[RestoreBackupEvent], None], 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: ...
|
130
|
+
@abc.abstractmethod
|
131
|
+
async def async_resume_restore_progress_after_restart(self, *, on_progress: Callable[[RestoreBackupEvent | IdleEvent], None]) -> None: ...
|
132
|
+
|
133
|
+
class IncorrectPasswordError(BackupReaderWriterError):
|
134
|
+
error_code: str
|
135
|
+
_message: str
|
122
136
|
|
123
|
-
class
|
124
|
-
|
137
|
+
class DecryptOnDowloadNotSupported(BackupManagerError):
|
138
|
+
error_code: str
|
139
|
+
_message: str
|
125
140
|
|
126
141
|
class BackupManager:
|
127
142
|
hass: Incomplete
|
@@ -138,6 +153,7 @@ class BackupManager:
|
|
138
153
|
remove_next_backup_event: Callable[[], None] | None
|
139
154
|
remove_next_delete_event: Callable[[], None] | None
|
140
155
|
last_event: ManagerStateEvent
|
156
|
+
last_non_idle_event: ManagerStateEvent | None
|
141
157
|
_backup_event_subscriptions: list[Callable[[ManagerStateEvent], None]]
|
142
158
|
def __init__(self, hass: HomeAssistant, reader_writer: BackupReaderWriter) -> None: ...
|
143
159
|
async def async_setup(self) -> None: ...
|
@@ -152,18 +168,20 @@ class BackupManager:
|
|
152
168
|
async def async_pre_backup_actions(self) -> None: ...
|
153
169
|
async def async_post_backup_actions(self) -> None: ...
|
154
170
|
async def load_platforms(self) -> None: ...
|
155
|
-
async def _async_upload_backup(self, *, backup: AgentBackup, agent_ids: list[str], open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]]) -> dict[str, Exception]: ...
|
171
|
+
async def _async_upload_backup(self, *, backup: AgentBackup, agent_ids: list[str], open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], password: str | None) -> dict[str, Exception]: ...
|
156
172
|
async def async_get_backups(self) -> tuple[dict[str, ManagerBackup], dict[str, Exception]]: ...
|
157
173
|
async def async_get_backup(self, backup_id: str) -> tuple[ManagerBackup | None, dict[str, Exception]]: ...
|
158
174
|
@staticmethod
|
159
175
|
def is_our_automatic_backup(backup: AgentBackup, our_instance_id: str) -> bool | None: ...
|
160
176
|
async def async_delete_backup(self, backup_id: str) -> dict[str, Exception]: ...
|
161
|
-
async def
|
162
|
-
async def
|
163
|
-
async def
|
164
|
-
async def
|
165
|
-
async def
|
166
|
-
async def
|
177
|
+
async def async_delete_filtered_backups(self, *, include_filter: Callable[[dict[str, ManagerBackup]], dict[str, ManagerBackup]], delete_filter: Callable[[dict[str, ManagerBackup]], dict[str, ManagerBackup]]) -> None: ...
|
178
|
+
async def async_receive_backup(self, *, agent_ids: list[str], contents: aiohttp.BodyPartReader) -> str: ...
|
179
|
+
async def _async_receive_backup(self, *, agent_ids: list[str], contents: aiohttp.BodyPartReader) -> str: ...
|
180
|
+
async def async_create_backup(self, *, agent_ids: list[str], extra_metadata: dict[str, bool | str] | None = None, include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, name: str | None, password: str | None, with_automatic_settings: bool = False) -> NewBackup: ...
|
181
|
+
async def async_create_automatic_backup(self) -> NewBackup: ...
|
182
|
+
async def async_initiate_backup(self, *, agent_ids: list[str], extra_metadata: dict[str, bool | str] | None = None, include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, name: str | None, password: str | None, raise_task_error: bool = False, with_automatic_settings: bool = False) -> NewBackup: ...
|
183
|
+
async def _async_create_backup(self, *, agent_ids: list[str], extra_metadata: dict[str, bool | str] | None, include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, name: str | None, password: str | None, raise_task_error: bool, with_automatic_settings: bool) -> NewBackup: ...
|
184
|
+
async def _async_finish_backup(self, available_agents: list[str], unavailable_agents: list[str], with_automatic_settings: bool, password: str | None) -> None: ...
|
167
185
|
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: ...
|
168
186
|
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: ...
|
169
187
|
@callback
|
@@ -171,7 +189,8 @@ class BackupManager:
|
|
171
189
|
@callback
|
172
190
|
def async_subscribe_events(self, on_event: Callable[[ManagerStateEvent], None]) -> Callable[[], None]: ...
|
173
191
|
def _update_issue_backup_failed(self) -> None: ...
|
174
|
-
def _update_issue_after_agent_upload(self, agent_errors: dict[str, Exception]) -> None: ...
|
192
|
+
def _update_issue_after_agent_upload(self, agent_errors: dict[str, Exception], unavailable_agents: list[str]) -> None: ...
|
193
|
+
async def async_can_decrypt_on_download(self, backup_id: str, *, agent_id: str, password: str | None) -> None: ...
|
175
194
|
|
176
195
|
class KnownBackups:
|
177
196
|
_backups: dict[str, KnownBackup]
|
@@ -179,7 +198,7 @@ class KnownBackups:
|
|
179
198
|
def __init__(self, manager: BackupManager) -> None: ...
|
180
199
|
def load(self, stored_backups: list[StoredKnownBackup]) -> None: ...
|
181
200
|
def to_list(self) -> list[StoredKnownBackup]: ...
|
182
|
-
def add(self, backup: AgentBackup, agent_errors: dict[str, Exception]) -> None: ...
|
201
|
+
def add(self, backup: AgentBackup, agent_errors: dict[str, Exception], unavailable_agents: list[str]) -> None: ...
|
183
202
|
def get(self, backup_id: str) -> KnownBackup | None: ...
|
184
203
|
def remove(self, backup_id: str) -> None: ...
|
185
204
|
|
@@ -198,10 +217,11 @@ class CoreBackupReaderWriter(BackupReaderWriter):
|
|
198
217
|
_hass: Incomplete
|
199
218
|
temp_backup_dir: Incomplete
|
200
219
|
def __init__(self, hass: HomeAssistant) -> None: ...
|
201
|
-
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[[
|
202
|
-
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[[
|
220
|
+
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[[CreateBackupEvent], None], password: str | None) -> tuple[NewBackup, asyncio.Task[WrittenBackup]]: ...
|
221
|
+
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[[CreateBackupEvent], None], password: str | None) -> WrittenBackup: ...
|
203
222
|
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]: ...
|
204
223
|
async def async_receive_backup(self, *, agent_ids: list[str], stream: AsyncIterator[bytes], suggested_filename: str) -> WrittenBackup: ...
|
205
|
-
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: ...
|
224
|
+
async def async_restore_backup(self, backup_id: str, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], *, agent_id: str, on_progress: Callable[[RestoreBackupEvent], None], password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
|
225
|
+
async def async_resume_restore_progress_after_restart(self, *, on_progress: Callable[[RestoreBackupEvent | IdleEvent], None]) -> None: ...
|
206
226
|
|
207
227
|
def _generate_backup_id(date: str, name: str) -> str: ...
|
@@ -16,7 +16,7 @@ class Folder(StrEnum):
|
|
16
16
|
MEDIA = 'media'
|
17
17
|
|
18
18
|
@dataclass(frozen=True, kw_only=True)
|
19
|
-
class
|
19
|
+
class BaseBackup:
|
20
20
|
addons: list[AddonInfo]
|
21
21
|
backup_id: str
|
22
22
|
date: str
|
@@ -26,11 +26,26 @@ class AgentBackup:
|
|
26
26
|
homeassistant_included: bool
|
27
27
|
homeassistant_version: str | None
|
28
28
|
name: str
|
29
|
+
|
30
|
+
@dataclass(frozen=True, kw_only=True)
|
31
|
+
class AgentBackup(BaseBackup):
|
29
32
|
protected: bool
|
30
33
|
size: int
|
31
34
|
def as_dict(self) -> dict: ...
|
32
|
-
def as_frontend_json(self) -> dict: ...
|
33
35
|
@classmethod
|
34
36
|
def from_dict(cls, data: dict[str, Any]) -> Self: ...
|
35
37
|
|
36
|
-
class
|
38
|
+
class BackupError(HomeAssistantError):
|
39
|
+
error_code: str
|
40
|
+
|
41
|
+
class BackupAgentError(BackupError):
|
42
|
+
error_code: str
|
43
|
+
|
44
|
+
class BackupManagerError(BackupError):
|
45
|
+
error_code: str
|
46
|
+
|
47
|
+
class BackupReaderWriterError(BackupError):
|
48
|
+
error_code: str
|
49
|
+
|
50
|
+
class BackupNotFound(BackupAgentError, BackupManagerError):
|
51
|
+
error_code: str
|
@@ -4,20 +4,25 @@ from .manager import BackupManager as BackupManager, StoredKnownBackup as Stored
|
|
4
4
|
from _typeshed import Incomplete
|
5
5
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
6
6
|
from homeassistant.helpers.storage import Store as Store
|
7
|
-
from typing import TypedDict
|
7
|
+
from typing import Any, TypedDict
|
8
8
|
|
9
9
|
STORE_DELAY_SAVE: int
|
10
10
|
STORAGE_KEY = DOMAIN
|
11
11
|
STORAGE_VERSION: int
|
12
|
+
STORAGE_VERSION_MINOR: int
|
12
13
|
|
13
14
|
class StoredBackupData(TypedDict):
|
14
15
|
backups: list[StoredKnownBackup]
|
15
16
|
config: StoredBackupConfig
|
16
17
|
|
18
|
+
class _BackupStore(Store[StoredBackupData]):
|
19
|
+
def __init__(self, hass: HomeAssistant) -> None: ...
|
20
|
+
async def _async_migrate_func(self, old_major_version: int, old_minor_version: int, old_data: dict[str, Any]) -> dict[str, Any]: ...
|
21
|
+
|
17
22
|
class BackupStore:
|
18
23
|
_hass: Incomplete
|
19
24
|
_manager: Incomplete
|
20
|
-
_store:
|
25
|
+
_store: Incomplete
|
21
26
|
def __init__(self, hass: HomeAssistant, manager: BackupManager) -> None: ...
|
22
27
|
async def load(self) -> StoredBackupData | None: ...
|
23
28
|
@callback
|
@@ -1,12 +1,106 @@
|
|
1
1
|
import aiohttp
|
2
|
+
import asyncio
|
3
|
+
import tarfile
|
4
|
+
import threading
|
2
5
|
from .const import BUF_SIZE as BUF_SIZE, LOGGER as LOGGER
|
3
6
|
from .models import AddonInfo as AddonInfo, AgentBackup as AgentBackup, Folder as Folder
|
7
|
+
from _typeshed import Incomplete
|
8
|
+
from collections.abc import AsyncIterator, Callable as Callable, Coroutine
|
9
|
+
from concurrent.futures import Future
|
10
|
+
from dataclasses import dataclass
|
4
11
|
from homeassistant.backup_restore import password_to_key as password_to_key
|
5
12
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
13
|
+
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
6
14
|
from homeassistant.util.json import JsonObjectType as JsonObjectType, json_loads_object as json_loads_object
|
7
15
|
from pathlib import Path
|
16
|
+
from typing import Any, IO, Self
|
17
|
+
|
18
|
+
class DecryptError(HomeAssistantError):
|
19
|
+
_message: str
|
20
|
+
|
21
|
+
class EncryptError(HomeAssistantError):
|
22
|
+
_message: str
|
23
|
+
|
24
|
+
class UnsupportedSecureTarVersion(DecryptError):
|
25
|
+
_message: str
|
26
|
+
|
27
|
+
class IncorrectPassword(DecryptError):
|
28
|
+
_message: str
|
29
|
+
|
30
|
+
class BackupEmpty(DecryptError):
|
31
|
+
_message: str
|
32
|
+
|
33
|
+
class AbortCipher(HomeAssistantError):
|
34
|
+
_message: str
|
8
35
|
|
9
36
|
def make_backup_dir(path: Path) -> None: ...
|
10
37
|
def read_backup(backup_path: Path) -> AgentBackup: ...
|
38
|
+
def suggested_filename_from_name_date(name: str, date_str: str) -> str: ...
|
39
|
+
def suggested_filename(backup: AgentBackup) -> str: ...
|
11
40
|
def validate_password(path: Path, password: str | None) -> bool: ...
|
41
|
+
|
42
|
+
class AsyncIteratorReader:
|
43
|
+
_aborted: bool
|
44
|
+
_hass: Incomplete
|
45
|
+
_stream: Incomplete
|
46
|
+
_buffer: bytes | None
|
47
|
+
_next_future: Future[bytes | None] | None
|
48
|
+
_pos: int
|
49
|
+
def __init__(self, hass: HomeAssistant, stream: AsyncIterator[bytes]) -> None: ...
|
50
|
+
async def _next(self) -> bytes | None: ...
|
51
|
+
def abort(self) -> None: ...
|
52
|
+
def read(self, n: int = -1, /) -> bytes: ...
|
53
|
+
def close(self) -> None: ...
|
54
|
+
|
55
|
+
class AsyncIteratorWriter:
|
56
|
+
_aborted: bool
|
57
|
+
_hass: Incomplete
|
58
|
+
_pos: int
|
59
|
+
_queue: asyncio.Queue[bytes | None]
|
60
|
+
_write_future: Future[bytes | None] | None
|
61
|
+
def __init__(self, hass: HomeAssistant) -> None: ...
|
62
|
+
def __aiter__(self) -> Self: ...
|
63
|
+
async def __anext__(self) -> bytes: ...
|
64
|
+
def abort(self) -> None: ...
|
65
|
+
def tell(self) -> int: ...
|
66
|
+
def write(self, s: bytes, /) -> int: ...
|
67
|
+
|
68
|
+
def validate_password_stream(input_stream: IO[bytes], password: str | None) -> None: ...
|
69
|
+
def decrypt_backup(input_stream: IO[bytes], output_stream: IO[bytes], password: str | None, on_done: Callable[[Exception | None], None], minimum_size: int, nonces: list[bytes]) -> None: ...
|
70
|
+
def _decrypt_backup(input_tar: tarfile.TarFile, output_tar: tarfile.TarFile, password: str | None) -> None: ...
|
71
|
+
def encrypt_backup(input_stream: IO[bytes], output_stream: IO[bytes], password: str | None, on_done: Callable[[Exception | None], None], minimum_size: int, nonces: list[bytes]) -> None: ...
|
72
|
+
def _encrypt_backup(input_tar: tarfile.TarFile, output_tar: tarfile.TarFile, password: str | None, nonces: list[bytes]) -> None: ...
|
73
|
+
|
74
|
+
@dataclass(kw_only=True)
|
75
|
+
class _CipherWorkerStatus:
|
76
|
+
done: asyncio.Event
|
77
|
+
error: Exception | None = ...
|
78
|
+
reader: AsyncIteratorReader
|
79
|
+
thread: threading.Thread
|
80
|
+
writer: AsyncIteratorWriter
|
81
|
+
|
82
|
+
class _CipherBackupStreamer:
|
83
|
+
_cipher_func: Callable[[IO[bytes], IO[bytes], str | None, Callable[[Exception | None], None], int, list[bytes]], None]
|
84
|
+
_workers: list[_CipherWorkerStatus]
|
85
|
+
_backup: Incomplete
|
86
|
+
_hass: Incomplete
|
87
|
+
_open_stream: Incomplete
|
88
|
+
_password: Incomplete
|
89
|
+
_nonces: list[bytes]
|
90
|
+
def __init__(self, hass: HomeAssistant, backup: AgentBackup, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], password: str | None) -> None: ...
|
91
|
+
def size(self) -> int: ...
|
92
|
+
def _num_tar_files(self) -> int: ...
|
93
|
+
async def open_stream(self) -> AsyncIterator[bytes]: ...
|
94
|
+
async def wait(self) -> None: ...
|
95
|
+
|
96
|
+
class DecryptedBackupStreamer(_CipherBackupStreamer):
|
97
|
+
_cipher_func: Incomplete
|
98
|
+
def backup(self) -> AgentBackup: ...
|
99
|
+
|
100
|
+
class EncryptedBackupStreamer(_CipherBackupStreamer):
|
101
|
+
_nonces: Incomplete
|
102
|
+
def __init__(self, hass: HomeAssistant, backup: AgentBackup, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], password: str | None) -> None: ...
|
103
|
+
_cipher_func: Incomplete
|
104
|
+
def backup(self) -> AgentBackup: ...
|
105
|
+
|
12
106
|
async def receive_file(hass: HomeAssistant, contents: aiohttp.BodyPartReader, path: Path) -> None: ...
|
@@ -1,7 +1,7 @@
|
|
1
|
-
from .config import
|
1
|
+
from .config import Day as Day, ScheduleRecurrence as ScheduleRecurrence
|
2
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
|
3
|
+
from .manager import DecryptOnDowloadNotSupported as DecryptOnDowloadNotSupported, IncorrectPasswordError as IncorrectPasswordError, ManagerStateEvent as ManagerStateEvent
|
4
|
+
from .models import BackupNotFound as BackupNotFound, Folder as Folder
|
5
5
|
from homeassistant.components import websocket_api as websocket_api
|
6
6
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
7
7
|
from typing import Any
|
@@ -22,6 +22,9 @@ async def handle_delete(hass: HomeAssistant, connection: websocket_api.ActiveCon
|
|
22
22
|
async def handle_restore(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
23
23
|
@websocket_api.require_admin
|
24
24
|
@websocket_api.async_response
|
25
|
+
async def handle_can_decrypt_on_download(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
26
|
+
@websocket_api.require_admin
|
27
|
+
@websocket_api.async_response
|
25
28
|
async def handle_create(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
26
29
|
@websocket_api.require_admin
|
27
30
|
@websocket_api.async_response
|
@@ -2,9 +2,9 @@ from .const import DOMAIN as DOMAIN, RUN_TIMEOUT as RUN_TIMEOUT
|
|
2
2
|
from .models import BAFDiscovery as BAFDiscovery
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from aiobafi6 import Device
|
5
|
-
from homeassistant.components import zeroconf as zeroconf
|
6
5
|
from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
|
7
6
|
from homeassistant.const import CONF_IP_ADDRESS as CONF_IP_ADDRESS
|
7
|
+
from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo as ZeroconfServiceInfo
|
8
8
|
from typing import Any
|
9
9
|
|
10
10
|
_LOGGER: Incomplete
|
@@ -15,7 +15,7 @@ class BAFFlowHandler(ConfigFlow, domain=DOMAIN):
|
|
15
15
|
VERSION: int
|
16
16
|
discovery: BAFDiscovery | None
|
17
17
|
def __init__(self) -> None: ...
|
18
|
-
async def async_step_zeroconf(self, discovery_info:
|
18
|
+
async def async_step_zeroconf(self, discovery_info: ZeroconfServiceInfo) -> ConfigFlowResult: ...
|
19
19
|
async def async_step_discovery_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
20
20
|
async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
21
21
|
|
@@ -1,10 +1,10 @@
|
|
1
1
|
from .const import ATTR_FRIENDLY_NAME as ATTR_FRIENDLY_NAME, ATTR_ITEM_NUMBER as ATTR_ITEM_NUMBER, ATTR_SERIAL_NUMBER as ATTR_SERIAL_NUMBER, ATTR_TYPE_NUMBER as ATTR_TYPE_NUMBER, COMPATIBLE_MODELS as COMPATIBLE_MODELS, CONF_SERIAL_NUMBER as CONF_SERIAL_NUMBER, DEFAULT_MODEL as DEFAULT_MODEL, DOMAIN as DOMAIN
|
2
2
|
from .util import get_serial_number_from_jid as get_serial_number_from_jid
|
3
3
|
from _typeshed import Incomplete
|
4
|
-
from homeassistant.components.zeroconf import ZeroconfServiceInfo as ZeroconfServiceInfo
|
5
4
|
from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
|
6
5
|
from homeassistant.const import CONF_HOST as CONF_HOST, CONF_MODEL as CONF_MODEL
|
7
6
|
from homeassistant.helpers.selector import SelectSelector as SelectSelector, SelectSelectorConfig as SelectSelectorConfig
|
7
|
+
from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo as ZeroconfServiceInfo
|
8
8
|
from homeassistant.util.ssl import get_default_context as get_default_context
|
9
9
|
from mozart_api.mozart_client import MozartClient
|
10
10
|
from typing import Any, TypedDict
|
@@ -35,6 +35,7 @@ class BangOlufsenModel(StrEnum):
|
|
35
35
|
|
36
36
|
class WebsocketNotification(StrEnum):
|
37
37
|
ACTIVE_LISTENING_MODE = 'active_listening_mode'
|
38
|
+
BUTTON = 'button'
|
38
39
|
PLAYBACK_ERROR = 'playback_error'
|
39
40
|
PLAYBACK_METADATA = 'playback_metadata'
|
40
41
|
PLAYBACK_PROGRESS = 'playback_progress'
|
@@ -64,7 +65,12 @@ ATTR_FRIENDLY_NAME: Final[str]
|
|
64
65
|
BANG_OLUFSEN_ON: Final[str]
|
65
66
|
VALID_MEDIA_TYPES: Final[tuple]
|
66
67
|
FALLBACK_SOURCES: Final[SourceArray]
|
68
|
+
MODEL_SUPPORT_DEVICE_BUTTONS: Final[str]
|
69
|
+
MODEL_SUPPORT_MAP: Incomplete
|
67
70
|
BANG_OLUFSEN_WEBSOCKET_EVENT: Final[str]
|
71
|
+
EVENT_TRANSLATION_MAP: dict[str, str]
|
68
72
|
CONNECTION_STATUS: Final[str]
|
73
|
+
DEVICE_BUTTONS: Final[list[str]]
|
74
|
+
DEVICE_BUTTON_EVENTS: Final[list[str]]
|
69
75
|
BEOLINK_JOIN_SOURCES_TO_UPPER: Incomplete
|
70
76
|
BEOLINK_JOIN_SOURCES: Incomplete
|