"""Purpose-specific conditions for the HA automation editor (2026.7+). Companion to :mod:`.trigger` — condition building blocks like *"A maintenance task is overdue"* for the intent-based automation UI. State-based on the per-task ENUM sensors; see trigger.py for the targeting rationale and the old-core import guard. """ from __future__ import annotations from typing import TYPE_CHECKING from homeassistant.core import HomeAssistant from .const import MaintenanceStatus if TYPE_CHECKING: from homeassistant.helpers.condition import Condition try: # pragma: no cover - exercised only on cores without the framework from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN from homeassistant.components.sensor import SensorDeviceClass from homeassistant.helpers.automation import DomainSpec from homeassistant.helpers.condition import make_entity_state_condition except ImportError: # pragma: no cover - only on cores without the framework CONDITIONS: dict[str, type[Condition]] = {} else: _TASK_SENSOR_SPECS: dict[str, DomainSpec] = { SENSOR_DOMAIN: DomainSpec(device_class=SensorDeviceClass.ENUM), } CONDITIONS = { "task_is_overdue": make_entity_state_condition(_TASK_SENSOR_SPECS, MaintenanceStatus.OVERDUE), "task_is_due_soon": make_entity_state_condition(_TASK_SENSOR_SPECS, MaintenanceStatus.DUE_SOON), "task_is_triggered": make_entity_state_condition(_TASK_SENSOR_SPECS, MaintenanceStatus.TRIGGERED), # "Needs attention" = the two states that demand action now. "task_needs_attention": make_entity_state_condition( _TASK_SENSOR_SPECS, {str(MaintenanceStatus.OVERDUE), str(MaintenanceStatus.TRIGGERED)}, ), } async def async_get_conditions(hass: HomeAssistant) -> dict[str, type[Condition]]: """Return the conditions for maintenance tasks.""" return CONDITIONS