From 12759b50cc25e5ffbdbf29d2234db07e71b1d6da Mon Sep 17 00:00:00 2001 From: Michael <35783820+mib1185@users.noreply.github.com> Date: Thu, 9 May 2024 00:04:26 +0200 Subject: [PATCH] Store runtime data inside the config entry in Tuya (#116822) --- homeassistant/components/tuya/__init__.py | 17 ++++++++--------- .../components/tuya/alarm_control_panel.py | 9 ++++----- homeassistant/components/tuya/binary_sensor.py | 9 ++++----- homeassistant/components/tuya/button.py | 9 ++++----- homeassistant/components/tuya/camera.py | 9 ++++----- homeassistant/components/tuya/climate.py | 9 ++++----- homeassistant/components/tuya/cover.py | 9 ++++----- homeassistant/components/tuya/diagnostics.py | 11 +++++------ homeassistant/components/tuya/fan.py | 9 ++++----- homeassistant/components/tuya/humidifier.py | 9 ++++----- homeassistant/components/tuya/light.py | 9 ++++----- homeassistant/components/tuya/number.py | 7 +++---- homeassistant/components/tuya/scene.py | 7 +++---- homeassistant/components/tuya/select.py | 9 ++++----- homeassistant/components/tuya/sensor.py | 7 +++---- homeassistant/components/tuya/siren.py | 9 ++++----- homeassistant/components/tuya/switch.py | 9 ++++----- homeassistant/components/tuya/vacuum.py | 9 ++++----- 18 files changed, 74 insertions(+), 92 deletions(-) diff --git a/homeassistant/components/tuya/__init__.py b/homeassistant/components/tuya/__init__.py index ceb8f056c22..2d8c28a33a6 100644 --- a/homeassistant/components/tuya/__init__.py +++ b/homeassistant/components/tuya/__init__.py @@ -35,6 +35,8 @@ from .const import ( # Suppress logs from the library, it logs unneeded on error logging.getLogger("tuya_sharing").setLevel(logging.CRITICAL) +TuyaConfigEntry = ConfigEntry["HomeAssistantTuyaData"] + class HomeAssistantTuyaData(NamedTuple): """Tuya data stored in the Home Assistant data object.""" @@ -43,7 +45,7 @@ class HomeAssistantTuyaData(NamedTuple): listener: SharingDeviceListener -async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_setup_entry(hass: HomeAssistant, entry: TuyaConfigEntry) -> bool: """Async setup hass config entry.""" if CONF_APP_TYPE in entry.data: raise ConfigEntryAuthFailed("Authentication failed. Please re-authenticate.") @@ -73,9 +75,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: raise # Connection is successful, store the manager & listener - hass.data.setdefault(DOMAIN, {})[entry.entry_id] = HomeAssistantTuyaData( - manager=manager, listener=listener - ) + entry.runtime_data = HomeAssistantTuyaData(manager=manager, listener=listener) # Cleanup device registry await cleanup_device_registry(hass, manager) @@ -108,18 +108,17 @@ async def cleanup_device_registry(hass: HomeAssistant, device_manager: Manager) break -async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_unload_entry(hass: HomeAssistant, entry: TuyaConfigEntry) -> bool: """Unloading the Tuya platforms.""" if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): - tuya: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + tuya = entry.runtime_data if tuya.manager.mq is not None: tuya.manager.mq.stop() tuya.manager.remove_device_listener(tuya.listener) - del hass.data[DOMAIN][entry.entry_id] return unload_ok -async def async_remove_entry(hass: HomeAssistant, entry: ConfigEntry) -> None: +async def async_remove_entry(hass: HomeAssistant, entry: TuyaConfigEntry) -> None: """Remove a config entry. This will revoke the credentials from Tuya. @@ -184,7 +183,7 @@ class TokenListener(SharingTokenListener): def __init__( self, hass: HomeAssistant, - entry: ConfigEntry, + entry: TuyaConfigEntry, ) -> None: """Init TokenListener.""" self.hass = hass diff --git a/homeassistant/components/tuya/alarm_control_panel.py b/homeassistant/components/tuya/alarm_control_panel.py index 59075cf00cd..868f6634bc9 100644 --- a/homeassistant/components/tuya/alarm_control_panel.py +++ b/homeassistant/components/tuya/alarm_control_panel.py @@ -11,7 +11,6 @@ from homeassistant.components.alarm_control_panel import ( AlarmControlPanelEntityDescription, AlarmControlPanelEntityFeature, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( STATE_ALARM_ARMED_AWAY, STATE_ALARM_ARMED_HOME, @@ -22,9 +21,9 @@ from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import TuyaEntity -from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode, DPType +from .const import TUYA_DISCOVERY_NEW, DPCode, DPType class Mode(StrEnum): @@ -59,10 +58,10 @@ ALARM: dict[str, tuple[AlarmControlPanelEntityDescription, ...]] = { async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Tuya alarm dynamically through Tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]) -> None: diff --git a/homeassistant/components/tuya/binary_sensor.py b/homeassistant/components/tuya/binary_sensor.py index c9f4734a7df..b992c24d07d 100644 --- a/homeassistant/components/tuya/binary_sensor.py +++ b/homeassistant/components/tuya/binary_sensor.py @@ -11,15 +11,14 @@ from homeassistant.components.binary_sensor import ( BinarySensorEntity, BinarySensorEntityDescription, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import TuyaEntity -from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode +from .const import TUYA_DISCOVERY_NEW, DPCode @dataclass(frozen=True) @@ -338,10 +337,10 @@ BINARY_SENSORS: dict[str, tuple[TuyaBinarySensorEntityDescription, ...]] = { async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Tuya binary sensor dynamically through Tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]) -> None: diff --git a/homeassistant/components/tuya/button.py b/homeassistant/components/tuya/button.py index a170ddb09e9..f62bba928b4 100644 --- a/homeassistant/components/tuya/button.py +++ b/homeassistant/components/tuya/button.py @@ -5,15 +5,14 @@ from __future__ import annotations from tuya_sharing import CustomerDevice, Manager from homeassistant.components.button import ButtonEntity, ButtonEntityDescription -from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import TuyaEntity -from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode +from .const import TUYA_DISCOVERY_NEW, DPCode # All descriptions can be found here. # https://developer.tuya.com/en/docs/iot/standarddescription?id=K9i5ql6waswzq @@ -59,10 +58,10 @@ BUTTONS: dict[str, tuple[ButtonEntityDescription, ...]] = { async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Tuya buttons dynamically through Tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]) -> None: diff --git a/homeassistant/components/tuya/camera.py b/homeassistant/components/tuya/camera.py index 79f8c1b1692..f3913611b07 100644 --- a/homeassistant/components/tuya/camera.py +++ b/homeassistant/components/tuya/camera.py @@ -6,14 +6,13 @@ from tuya_sharing import CustomerDevice, Manager from homeassistant.components import ffmpeg from homeassistant.components.camera import Camera as CameraEntity, CameraEntityFeature -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import TuyaEntity -from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode +from .const import TUYA_DISCOVERY_NEW, DPCode # All descriptions can be found here: # https://developer.tuya.com/en/docs/iot/standarddescription?id=K9i5ql6waswzq @@ -25,10 +24,10 @@ CAMERAS: tuple[str, ...] = ( async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Tuya cameras dynamically through Tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]) -> None: diff --git a/homeassistant/components/tuya/climate.py b/homeassistant/components/tuya/climate.py index 3be80193beb..d47c71532a4 100644 --- a/homeassistant/components/tuya/climate.py +++ b/homeassistant/components/tuya/climate.py @@ -18,15 +18,14 @@ from homeassistant.components.climate import ( ClimateEntityFeature, HVACMode, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfTemperature from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import IntegerTypeData, TuyaEntity -from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode, DPType +from .const import TUYA_DISCOVERY_NEW, DPCode, DPType TUYA_HVAC_TO_HA = { "auto": HVACMode.HEAT_COOL, @@ -82,10 +81,10 @@ CLIMATE_DESCRIPTIONS: dict[str, TuyaClimateEntityDescription] = { async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Tuya climate dynamically through Tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]) -> None: diff --git a/homeassistant/components/tuya/cover.py b/homeassistant/components/tuya/cover.py index 7dc54888ac4..2e81529f974 100644 --- a/homeassistant/components/tuya/cover.py +++ b/homeassistant/components/tuya/cover.py @@ -15,14 +15,13 @@ from homeassistant.components.cover import ( CoverEntityDescription, CoverEntityFeature, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import IntegerTypeData, TuyaEntity -from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode, DPType +from .const import TUYA_DISCOVERY_NEW, DPCode, DPType @dataclass(frozen=True) @@ -143,10 +142,10 @@ COVERS: dict[str, tuple[TuyaCoverEntityDescription, ...]] = { async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Tuya cover dynamically through Tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]) -> None: diff --git a/homeassistant/components/tuya/diagnostics.py b/homeassistant/components/tuya/diagnostics.py index f817261c8fc..9675b215ce2 100644 --- a/homeassistant/components/tuya/diagnostics.py +++ b/homeassistant/components/tuya/diagnostics.py @@ -9,25 +9,24 @@ from typing import Any, cast from tuya_sharing import CustomerDevice from homeassistant.components.diagnostics import REDACTED -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.helpers.device_registry import DeviceEntry from homeassistant.util import dt as dt_util -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .const import DOMAIN, DPCode async def async_get_config_entry_diagnostics( - hass: HomeAssistant, entry: ConfigEntry + hass: HomeAssistant, entry: TuyaConfigEntry ) -> dict[str, Any]: """Return diagnostics for a config entry.""" return _async_get_diagnostics(hass, entry) async def async_get_device_diagnostics( - hass: HomeAssistant, entry: ConfigEntry, device: DeviceEntry + hass: HomeAssistant, entry: TuyaConfigEntry, device: DeviceEntry ) -> dict[str, Any]: """Return diagnostics for a device entry.""" return _async_get_diagnostics(hass, entry, device) @@ -36,11 +35,11 @@ async def async_get_device_diagnostics( @callback def _async_get_diagnostics( hass: HomeAssistant, - entry: ConfigEntry, + entry: TuyaConfigEntry, device: DeviceEntry | None = None, ) -> dict[str, Any]: """Return diagnostics for a config entry.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data mqtt_connected = None if hass_data.manager.mq.client: diff --git a/homeassistant/components/tuya/fan.py b/homeassistant/components/tuya/fan.py index 3925da1d507..d4c19f6b55a 100644 --- a/homeassistant/components/tuya/fan.py +++ b/homeassistant/components/tuya/fan.py @@ -12,7 +12,6 @@ from homeassistant.components.fan import ( FanEntity, FanEntityFeature, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback @@ -21,9 +20,9 @@ from homeassistant.util.percentage import ( percentage_to_ordered_list_item, ) -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import EnumTypeData, IntegerTypeData, TuyaEntity -from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode, DPType +from .const import TUYA_DISCOVERY_NEW, DPCode, DPType TUYA_SUPPORT_TYPE = { "fs", # Fan @@ -35,10 +34,10 @@ TUYA_SUPPORT_TYPE = { async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up tuya fan dynamically through tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]) -> None: diff --git a/homeassistant/components/tuya/humidifier.py b/homeassistant/components/tuya/humidifier.py index 927aaf8a74a..3d16b0dfbbb 100644 --- a/homeassistant/components/tuya/humidifier.py +++ b/homeassistant/components/tuya/humidifier.py @@ -12,14 +12,13 @@ from homeassistant.components.humidifier import ( HumidifierEntityDescription, HumidifierEntityFeature, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import IntegerTypeData, TuyaEntity -from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode, DPType +from .const import TUYA_DISCOVERY_NEW, DPCode, DPType @dataclass(frozen=True) @@ -56,10 +55,10 @@ HUMIDIFIERS: dict[str, TuyaHumidifierEntityDescription] = { async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Tuya (de)humidifier dynamically through Tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]) -> None: diff --git a/homeassistant/components/tuya/light.py b/homeassistant/components/tuya/light.py index d898e837d8e..3533dabf92a 100644 --- a/homeassistant/components/tuya/light.py +++ b/homeassistant/components/tuya/light.py @@ -17,15 +17,14 @@ from homeassistant.components.light import ( LightEntityDescription, filter_supported_color_modes, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import IntegerTypeData, TuyaEntity -from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode, DPType, WorkMode +from .const import TUYA_DISCOVERY_NEW, DPCode, DPType, WorkMode from .util import remap_value @@ -409,10 +408,10 @@ class ColorData: async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up tuya light dynamically through tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]): diff --git a/homeassistant/components/tuya/number.py b/homeassistant/components/tuya/number.py index 2be7deef89f..424450c7fec 100644 --- a/homeassistant/components/tuya/number.py +++ b/homeassistant/components/tuya/number.py @@ -9,13 +9,12 @@ from homeassistant.components.number import ( NumberEntity, NumberEntityDescription, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import PERCENTAGE, EntityCategory, UnitOfTime from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import IntegerTypeData, TuyaEntity from .const import DEVICE_CLASS_UNITS, DOMAIN, TUYA_DISCOVERY_NEW, DPCode, DPType @@ -282,10 +281,10 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = { async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Tuya number dynamically through Tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]) -> None: diff --git a/homeassistant/components/tuya/scene.py b/homeassistant/components/tuya/scene.py index dcc1aae1fba..1465724faac 100644 --- a/homeassistant/components/tuya/scene.py +++ b/homeassistant/components/tuya/scene.py @@ -7,20 +7,19 @@ from typing import Any from tuya_sharing import Manager, SharingScene from homeassistant.components.scene import Scene -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .const import DOMAIN async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Tuya scenes.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data scenes = await hass.async_add_executor_job(hass_data.manager.query_scenes) async_add_entities(TuyaSceneEntity(hass_data.manager, scene) for scene in scenes) diff --git a/homeassistant/components/tuya/select.py b/homeassistant/components/tuya/select.py index 6e128bfdcc4..111b9e40918 100644 --- a/homeassistant/components/tuya/select.py +++ b/homeassistant/components/tuya/select.py @@ -5,15 +5,14 @@ from __future__ import annotations from tuya_sharing import CustomerDevice, Manager from homeassistant.components.select import SelectEntity, SelectEntityDescription -from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import TuyaEntity -from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode, DPType +from .const import TUYA_DISCOVERY_NEW, DPCode, DPType # All descriptions can be found here. Mostly the Enum data types in the # default instructions set of each category end up being a select. @@ -320,10 +319,10 @@ SELECTS["pc"] = SELECTS["kg"] async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Tuya select dynamically through Tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]) -> None: diff --git a/homeassistant/components/tuya/sensor.py b/homeassistant/components/tuya/sensor.py index df11840931d..9382059471d 100644 --- a/homeassistant/components/tuya/sensor.py +++ b/homeassistant/components/tuya/sensor.py @@ -13,7 +13,6 @@ from homeassistant.components.sensor import ( SensorEntityDescription, SensorStateClass, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( PERCENTAGE, EntityCategory, @@ -27,7 +26,7 @@ from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import ElectricityTypeData, EnumTypeData, IntegerTypeData, TuyaEntity from .const import ( DEVICE_CLASS_UNITS, @@ -1075,10 +1074,10 @@ SENSORS["pc"] = SENSORS["kg"] async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Tuya sensor dynamically through Tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]) -> None: diff --git a/homeassistant/components/tuya/siren.py b/homeassistant/components/tuya/siren.py index 04473e44e22..683705c6546 100644 --- a/homeassistant/components/tuya/siren.py +++ b/homeassistant/components/tuya/siren.py @@ -11,14 +11,13 @@ from homeassistant.components.siren import ( SirenEntityDescription, SirenEntityFeature, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import TuyaEntity -from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode +from .const import TUYA_DISCOVERY_NEW, DPCode # All descriptions can be found here: # https://developer.tuya.com/en/docs/iot/standarddescription?id=K9i5ql6waswzq @@ -48,10 +47,10 @@ SIRENS: dict[str, tuple[SirenEntityDescription, ...]] = { async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Tuya siren dynamically through Tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]) -> None: diff --git a/homeassistant/components/tuya/switch.py b/homeassistant/components/tuya/switch.py index 36debaeadde..b33852870a8 100644 --- a/homeassistant/components/tuya/switch.py +++ b/homeassistant/components/tuya/switch.py @@ -11,15 +11,14 @@ from homeassistant.components.switch import ( SwitchEntity, SwitchEntityDescription, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import TuyaEntity -from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode +from .const import TUYA_DISCOVERY_NEW, DPCode # All descriptions can be found here. Mostly the Boolean data types in the # default instruction set of each category end up being a Switch. @@ -660,10 +659,10 @@ SWITCHES["cz"] = SWITCHES["pc"] async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up tuya sensors dynamically through tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]) -> None: diff --git a/homeassistant/components/tuya/vacuum.py b/homeassistant/components/tuya/vacuum.py index 6774aaac8a1..360d6d4f5c3 100644 --- a/homeassistant/components/tuya/vacuum.py +++ b/homeassistant/components/tuya/vacuum.py @@ -13,15 +13,14 @@ from homeassistant.components.vacuum import ( StateVacuumEntity, VacuumEntityFeature, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import STATE_IDLE, STATE_PAUSED from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import HomeAssistantTuyaData +from . import TuyaConfigEntry from .base import EnumTypeData, IntegerTypeData, TuyaEntity -from .const import DOMAIN, TUYA_DISCOVERY_NEW, DPCode, DPType +from .const import TUYA_DISCOVERY_NEW, DPCode, DPType TUYA_MODE_RETURN_HOME = "chargego" TUYA_STATUS_TO_HA = { @@ -52,10 +51,10 @@ TUYA_STATUS_TO_HA = { async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, entry: TuyaConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Tuya vacuum dynamically through Tuya discovery.""" - hass_data: HomeAssistantTuyaData = hass.data[DOMAIN][entry.entry_id] + hass_data = entry.runtime_data @callback def async_discover_device(device_ids: list[str]) -> None: