Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 10 additions & 16 deletions homeassistant/components/zwave_js/trigger.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
"""Z-Wave JS trigger dispatcher."""
from __future__ import annotations

from types import ModuleType
from typing import cast

from homeassistant.const import CONF_PLATFORM
from homeassistant.core import CALLBACK_TYPE, HomeAssistant
from homeassistant.helpers.trigger import TriggerActionType, TriggerInfo
from homeassistant.helpers.trigger import (
TriggerActionType,
TriggerInfo,
TriggerProtocol,
)
from homeassistant.helpers.typing import ConfigType

from .triggers import event, value_updated
Expand All @@ -17,7 +20,7 @@
}


def _get_trigger_platform(config: ConfigType) -> ModuleType:
def _get_trigger_platform(config: ConfigType) -> TriggerProtocol:
"""Return trigger platform."""
platform_split = config[CONF_PLATFORM].split(".", maxsplit=1)
if len(platform_split) < 2 or platform_split[1] not in TRIGGERS:
Expand All @@ -31,12 +34,9 @@ async def async_validate_trigger_config(
"""Validate config."""
platform = _get_trigger_platform(config)
if hasattr(platform, "async_validate_trigger_config"):
return cast(
ConfigType,
await getattr(platform, "async_validate_trigger_config")(hass, config),
)
assert hasattr(platform, "TRIGGER_SCHEMA")
return cast(ConfigType, getattr(platform, "TRIGGER_SCHEMA")(config))
return await platform.async_validate_trigger_config(hass, config)

return cast(ConfigType, platform.TRIGGER_SCHEMA(config))


async def async_attach_trigger(
Expand All @@ -47,10 +47,4 @@ async def async_attach_trigger(
) -> CALLBACK_TYPE:
"""Attach trigger of specified platform."""
platform = _get_trigger_platform(config)
assert hasattr(platform, "async_attach_trigger")
return cast(
CALLBACK_TYPE,
await getattr(platform, "async_attach_trigger")(
hass, config, action, trigger_info
),
)
return await platform.async_attach_trigger(hass, config, action, trigger_info)