1 """Button entity platform for Tailwind."""
3 from __future__
import annotations
5 from collections.abc
import Awaitable, Callable
6 from dataclasses
import dataclass
9 from gotailwind
import Tailwind, TailwindError
14 ButtonEntityDescription,
21 from .const
import DOMAIN
22 from .entity
import TailwindEntity
23 from .typing
import TailwindConfigEntry
26 @dataclass(frozen=True, kw_only=True)
28 """Class describing Tailwind button entities."""
30 press_fn: Callable[[Tailwind], Awaitable[Any]]
36 device_class=ButtonDeviceClass.IDENTIFY,
37 entity_category=EntityCategory.CONFIG,
38 press_fn=
lambda tailwind: tailwind.identify(),
45 entry: TailwindConfigEntry,
46 async_add_entities: AddEntitiesCallback,
48 """Set up Tailwind button based on a config entry."""
54 for description
in DESCRIPTIONS
59 """Representation of a Tailwind button entity."""
61 entity_description: TailwindButtonEntityDescription
64 """Trigger button press on the Tailwind device."""
67 except TailwindError
as exc:
70 translation_domain=DOMAIN,
71 translation_key=
"communication_error",