Ugh, a bunch of things. @overrides. --lmodule. Chromecasts. etc...
[python_utils.git] / state_tracker.py
index 225584bb1a907314de374c9da159d7afb5c96cb1..11ce4c3b4198e5f7ff6e0406b35d8b65920b46d7 100644 (file)
@@ -9,7 +9,6 @@ from typing import Dict, Optional
 import pytz
 
 from thread_utils import background_thread
-import math_utils
 
 logger = logging.getLogger(__name__)
 
@@ -67,33 +66,34 @@ class StateTracker(ABC):
         """
         self.now = datetime.datetime.now(tz=pytz.timezone("US/Pacific"))
         for update_id in sorted(self.last_reminder_ts.keys()):
-            refresh_secs = self.update_ids_to_update_secs[update_id]
             if force_all_updates_to_run:
                 logger.debug('Forcing all updates to run')
                 self.update(
                     update_id, self.now, self.last_reminder_ts[update_id]
                 )
                 self.last_reminder_ts[update_id] = self.now
+                return
+
+            refresh_secs = self.update_ids_to_update_secs[update_id]
+            last_run = self.last_reminder_ts[update_id]
+            if last_run is None:  # Never run before
+                logger.debug(
+                    f'id {update_id} has never been run; running it now'
+                )
+                self.update(
+                    update_id, self.now, self.last_reminder_ts[update_id]
+                )
+                self.last_reminder_ts[update_id] = self.now
             else:
-                last_run = self.last_reminder_ts[update_id]
-                if last_run is None:  # Never run before
-                    logger.debug(
-                        f'id {update_id} has never been run; running it now'
-                    )
+                delta = self.now - last_run
+                if delta.total_seconds() >= refresh_secs:  # Is overdue?
+                    logger.debug(f'id {update_id} is overdue; running it now')
                     self.update(
-                        update_id, self.now, self.last_reminder_ts[update_id]
+                        update_id,
+                        self.now,
+                        self.last_reminder_ts[update_id],
                     )
                     self.last_reminder_ts[update_id] = self.now
-                else:
-                    delta = self.now - last_run
-                    if delta.total_seconds() >= refresh_secs:  # Is overdue
-                        logger.debug('id {update_id} is overdue; running it now')
-                        self.update(
-                            update_id,
-                            self.now,
-                            self.last_reminder_ts[update_id],
-                        )
-                        self.last_reminder_ts[update_id] = self.now
 
 
 class AutomaticStateTracker(StateTracker):
@@ -121,6 +121,7 @@ class AutomaticStateTracker(StateTracker):
         *,
         override_sleep_delay: Optional[float] = None,
     ) -> None:
+        import math_utils
         super().__init__(update_ids_to_update_secs)
         if override_sleep_delay is not None:
             logger.debug(f'Overriding sleep delay to {override_sleep_delay}')