Enable mypy strict compliance
This commit is contained in:
parent
9f0c6ba3db
commit
7b26d3a160
7 changed files with 151 additions and 90 deletions
|
|
@ -1,18 +1,19 @@
|
|||
import logging
|
||||
import math
|
||||
from collections.abc import Callable
|
||||
|
||||
from sense_hat import ACTION_HELD, ACTION_RELEASED, SenseHat
|
||||
from sense_hat import ACTION_HELD, ACTION_RELEASED, InputEvent, SenseHat
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Selector:
|
||||
def __init__(self, send_data):
|
||||
def __init__(self, send_data: Callable[[dict[str, float | str | None]], None]):
|
||||
self.stick = SenseHat().stick
|
||||
self.temperature = None
|
||||
self.mode = None
|
||||
self.switch = None
|
||||
self.preset_modes = []
|
||||
self.preset_modes: list[str] = []
|
||||
self.send_data = send_data
|
||||
self.switch_held = False
|
||||
self.default_data = {"temperature": None, "mode": None, "switch": None}
|
||||
|
|
@ -26,7 +27,7 @@ class Selector:
|
|||
self.stick.direction_left = self.prev_mode
|
||||
|
||||
@property
|
||||
def ha_options(self):
|
||||
def ha_options(self) -> dict[str, dict[str, str]]:
|
||||
return {
|
||||
"temperature": {
|
||||
"p": "sensor",
|
||||
|
|
@ -55,36 +56,42 @@ class Selector:
|
|||
},
|
||||
}
|
||||
|
||||
def increase_temperature(self, event):
|
||||
def increase_temperature(self, event: InputEvent) -> None:
|
||||
if event.action != ACTION_RELEASED and self.temperature is not None:
|
||||
self.callback(temperature=math.floor(self.temperature * 2) / 2 + 0.5)
|
||||
self.callback({"temperature": math.floor(self.temperature * 2) / 2 + 0.5})
|
||||
|
||||
def decrease_temperature(self, event):
|
||||
def decrease_temperature(self, event: InputEvent) -> None:
|
||||
if event.action != ACTION_RELEASED and self.temperature is not None:
|
||||
self.callback(temperature=math.ceil(self.temperature * 2) / 2 - 0.5)
|
||||
self.callback({"temperature": math.ceil(self.temperature * 2) / 2 - 0.5})
|
||||
|
||||
def next_mode(self, event):
|
||||
def next_mode(self, event: InputEvent) -> None:
|
||||
if event.action != ACTION_RELEASED and self.mode is not None:
|
||||
self.callback(
|
||||
mode=self.preset_modes[
|
||||
(self.preset_modes.index(self.mode) + 1) % len(self.preset_modes)
|
||||
]
|
||||
{
|
||||
"mode": self.preset_modes[
|
||||
(self.preset_modes.index(self.mode) + 1)
|
||||
% len(self.preset_modes)
|
||||
]
|
||||
}
|
||||
)
|
||||
|
||||
def prev_mode(self, event):
|
||||
def prev_mode(self, event: InputEvent) -> None:
|
||||
if event.action != ACTION_RELEASED and self.mode is not None:
|
||||
self.callback(
|
||||
mode=self.preset_modes[
|
||||
(self.preset_modes.index(self.mode) - 1) % len(self.preset_modes)
|
||||
]
|
||||
{
|
||||
"mode": self.preset_modes[
|
||||
(self.preset_modes.index(self.mode) - 1)
|
||||
% len(self.preset_modes)
|
||||
]
|
||||
}
|
||||
)
|
||||
|
||||
def toggle(self, event):
|
||||
def toggle(self, event: InputEvent) -> None:
|
||||
if not self.switch_held and event.action == ACTION_HELD:
|
||||
self.switch_held = True
|
||||
self.callback(switch="off" if self.switch else "heat")
|
||||
self.callback({"switch": "off" if self.switch else "heat"})
|
||||
elif self.switch_held and event.action == ACTION_RELEASED:
|
||||
self.switch_held = False
|
||||
|
||||
def callback(self, **kwargs):
|
||||
self.send_data(self.default_data | kwargs)
|
||||
def callback(self, data: dict[str, float | str | None]) -> None:
|
||||
self.send_data(self.default_data | data)
|
||||
|
|
|
|||
Reference in a new issue