ソースを参照

add return type hints; ignore mypy warnings

Fabian Peter Hammerle 2 年 前
コミット
47454fd837
1 ファイル変更29 行追加25 行削除
  1. 29 25
      vibrating_alarm_m5stickc.py

+ 29 - 25
vibrating_alarm_m5stickc.py

@@ -19,7 +19,7 @@ _SCREEN_WIDTH, _SCREEN_HEIGHT = lcd.winsize()
 
 class App:
     # pylint: disable=too-few-public-methods
-    def __init__(self):
+    def __init__(self) -> None:
         self._rtc = None
         self._clock_text_box = None
         self._menu_position = 0
@@ -28,60 +28,64 @@ class App:
         self._alarm_hour_text_box = None
         self._alarm_minute_text_box = None
 
-    def _load_alarm_time(self):
+    def _load_alarm_time(self) -> None:
         with open(_ALARM_TIME_PATH, "r") as alarm_time_file:
             alarm_time = json.load(alarm_time_file)
         self._alarm_hour = alarm_time["hour"]
         self._alarm_minute = alarm_time["minute"]
 
-    def _save_alarm_time(self):
+    def _save_alarm_time(self) -> None:
         with open(_ALARM_TIME_PATH, "w") as alarm_time_file:
             json.dump(
                 {"hour": self._alarm_hour, "minute": self._alarm_minute},
                 alarm_time_file,
             )
 
-    def _update_menu(self, event_arg: None):
+    def _update_menu(self, event_arg: None) -> None:
         # pylint: disable=unused-argument; callback
-        self._alarm_hour_text_box.setColor(
+        self._alarm_hour_text_box.setColor(  # type: ignore
             lcd.GREEN
             if self._menu_position == 1
             else (lcd.RED if self._menu_position == 2 else _DEFAULT_FONT_COLOR)
         )
-        self._alarm_minute_text_box.setColor(
+        self._alarm_minute_text_box.setColor(  # type: ignore
             lcd.GREEN
             if self._menu_position == 3
             else (lcd.RED if self._menu_position == 4 else _DEFAULT_FONT_COLOR)
         )
 
-    def _button_a_pressed(self):
+    def _button_a_pressed(self) -> None:
         self._menu_position = (self._menu_position + 1) % 5
         # https://docs.micropython.org/en/latest/library/micropython.html#micropython.schedule
         micropython.schedule(self._update_menu, None)
 
-    def _update_alarm_time(self, event_arg: None):
+    def _update_alarm_time(self, event_arg: None) -> None:
         # pylint: disable=unused-argument; callback
-        self._alarm_hour_text_box.setText("{:02d}".format(self._alarm_hour))
-        self._alarm_minute_text_box.setText("{:02d}".format(self._alarm_minute))
+        self._alarm_hour_text_box.setText(  # type: ignore
+            "{:02d}".format(self._alarm_hour)  # type: ignore
+        )
+        self._alarm_minute_text_box.setText(  # type: ignore
+            "{:02d}".format(self._alarm_minute)  # type: ignore
+        )
         self._save_alarm_time()
 
-    def _button_b_pressed(self):
+    def _button_b_pressed(self) -> None:
         if self._menu_position == 1:
-            self._alarm_hour += 1
+            self._alarm_hour += 1  # type: ignore
         elif self._menu_position == 2:
-            self._alarm_hour -= 1
+            self._alarm_hour -= 1  # type: ignore
         elif self._menu_position == 3:
-            self._alarm_minute += 1
+            self._alarm_minute += 1  # type: ignore
         elif self._menu_position == 4:
-            self._alarm_minute -= 1
-        self._alarm_hour %= 24
-        self._alarm_minute %= 60
+            self._alarm_minute -= 1  # type: ignore
+        self._alarm_hour %= 24  # type: ignore
+        self._alarm_minute %= 60  # type: ignore
         micropython.schedule(self._update_alarm_time, None)
 
     def _format_time(self) -> str:
-        return "{:02d}:{:02d}".format(*self._rtc.datetime()[4:6])
+        return "{:02d}:{:02d}".format(*self._rtc.datetime()[4:6])  # type: ignore
 
-    def _setup_clock(self):
+    def _setup_clock(self) -> None:
         # > [contradictory to] official micropython documentation, to set RTC,
         # > use particular tuple (year , month, day, week=0, hour, minute, second, timestamp=0)
         # https://community.m5stack.com/topic/3108/m5stack-core2-micropython-rtc-example
@@ -98,19 +102,19 @@ class App:
         machine.Timer(0).init(
             period=10000,  # ms
             mode=machine.Timer.PERIODIC,
-            callback=lambda t: self._clock_text_box.setText(self._format_time()),
+            callback=lambda t: self._clock_text_box.setText(self._format_time()),  # type: ignore
         )
 
-    def _setup_alarm(self):
+    def _setup_alarm(self) -> None:
         if not utils.exists(_ALARM_TIME_PATH):
-            self._alarm_hour = self._alarm_minute = 0
+            self._alarm_hour = self._alarm_minute = 0  # type: ignore
             self._save_alarm_time()
         else:
             self._load_alarm_time()
         self._alarm_hour_text_box = m5ui.M5TextBox(
             _SCREEN_WIDTH // 2,
             0,
-            "{:02d}".format(self._alarm_hour),
+            "{:02d}".format(self._alarm_hour),  # type: ignore
             _FONT,
             _DEFAULT_FONT_COLOR,
             rotate=90,
@@ -121,13 +125,13 @@ class App:
         self._alarm_minute_text_box = m5ui.M5TextBox(
             _SCREEN_WIDTH // 2,
             66,
-            "{:02d}".format(self._alarm_minute),
+            "{:02d}".format(self._alarm_minute),  # type: ignore
             _FONT,
             _DEFAULT_FONT_COLOR,
             rotate=90,
         )
 
-    def run(self):
+    def run(self) -> None:
         m5ui.setScreenColor(0x000000)  # clear screen
         print("battery:", axp.getBatVoltage(), "V")
         self._setup_clock()