31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
"""Normalize persisted configuration shapes to runtime mappings."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from homeassistant.const import CONF_ID, CONF_PATH
|
|
|
|
from custom_components.powercalc.const import CONF_PLAYBOOK_ID, CONF_POWER, CONF_STATE
|
|
|
|
|
|
def normalize_states_power(states_power: dict[str, Any] | list[dict[str, Any]]) -> dict[str, Any]:
|
|
"""Normalize state-power config to the runtime mapping shape."""
|
|
if isinstance(states_power, list):
|
|
return {item[CONF_STATE]: item[CONF_POWER] for item in states_power}
|
|
return dict(states_power)
|
|
|
|
|
|
def normalize_playbooks(playbooks: dict[str, str] | list[dict[str, str]]) -> dict[str, str]:
|
|
"""Normalize playbook config to the runtime id-path mapping shape."""
|
|
if isinstance(playbooks, list):
|
|
return {item[CONF_ID]: item[CONF_PATH] for item in playbooks}
|
|
return dict(playbooks)
|
|
|
|
|
|
def normalize_state_trigger(state_trigger: dict[str, str] | list[dict[str, str]]) -> dict[str, str]:
|
|
"""Normalize playbook state-trigger config to the runtime state-playbook mapping shape."""
|
|
if isinstance(state_trigger, list):
|
|
return {item[CONF_STATE]: item[CONF_PLAYBOOK_ID] for item in state_trigger}
|
|
return dict(state_trigger)
|