Home Assistant Unofficial Reference 2024.12.1
enum_mapper.py
Go to the documentation of this file.
1 """Helper class to convert between Home Assistant and ESPHome enum values."""
2 
3 from typing import overload
4 
5 from aioesphomeapi import APIIntEnum
6 
7 
8 class EsphomeEnumMapper[_EnumT: APIIntEnum, _ValT]:
9  """Helper class to convert between hass and esphome enum values."""
10 
11  def __init__(self, mapping: dict[_EnumT, _ValT]) -> None:
12  """Construct a EsphomeEnumMapper."""
13  # Add none mapping
14  augmented_mapping: dict[_EnumT | None, _ValT | None] = mapping # type: ignore[assignment]
15  augmented_mapping[None] = None
16 
17  self._mapping = augmented_mapping
18  self._inverse: dict[_ValT, _EnumT] = {v: k for k, v in mapping.items()}
19 
20  @overload
21  def from_esphome(self, value: _EnumT) -> _ValT: ...
22 
23  @overload
24  def from_esphome(self, value: _EnumT | None) -> _ValT | None: ...
25 
26  def from_esphome(self, value: _EnumT | None) -> _ValT | None:
27  """Convert from an esphome int representation to a hass string."""
28  return self._mapping[value]
29 
30  def from_hass(self, value: _ValT) -> _EnumT:
31  """Convert from a hass string to a esphome int representation."""
32  return self._inverse[value]
_ValT from_esphome(self, _EnumT value)
Definition: enum_mapper.py:21
None __init__(self, dict[_EnumT, _ValT] mapping)
Definition: enum_mapper.py:11