Used isort to sort imports. Also added to the git pre-commit hook.
[python_utils.git] / state_tracker.py
index 9ce61e3ac7a51c7cacdc2cc7e34dea02985078de..12b94aec39c37b084495d92bbc07b386d0574610 100644 (file)
@@ -1,10 +1,10 @@
 #!/usr/bin/env python3
 
-from abc import ABC, abstractmethod
 import datetime
 import logging
-import time
 import threading
+import time
+from abc import ABC, abstractmethod
 from typing import Dict, Optional
 
 import pytz
@@ -22,6 +22,7 @@ class StateTracker(ABC):
     provided to the c'tor.
 
     """
+
     def __init__(self, update_ids_to_update_secs: Dict[str, float]) -> None:
         """The update_ids_to_update_secs dict parameter describes one or more
         update types (unique update_ids) and the periodicity(ies), in
@@ -72,21 +73,15 @@ class StateTracker(ABC):
         for update_id in sorted(self.last_reminder_ts.keys()):
             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.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]
-                )
+                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:
                 delta = self.now - last_run
@@ -106,6 +101,7 @@ class AutomaticStateTracker(StateTracker):
     terminate the updates.
 
     """
+
     @background_thread
     def pace_maker(self, should_terminate) -> None:
         """Entry point for a background thread to own calling heartbeat()
@@ -128,6 +124,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}')
@@ -145,9 +142,7 @@ class AutomaticStateTracker(StateTracker):
         This may block for as long as self.sleep_delay.
 
         """
-        logger.debug(
-            'Setting shutdown event and waiting for background thread.'
-        )
+        logger.debug('Setting shutdown event and waiting for background thread.')
         self.should_terminate.set()
         self.updater_thread.join()
         logger.debug('Background thread terminated.')
@@ -174,15 +169,17 @@ class WaitableAutomaticStateTracker(AutomaticStateTracker):
                 # else before looping up into wait again.
 
     """
+
     def __init__(
-            self,
-            update_ids_to_update_secs: Dict[str, float],
-            *,
-            override_sleep_delay: Optional[float] = None,
+        self,
+        update_ids_to_update_secs: Dict[str, float],
+        *,
+        override_sleep_delay: Optional[float] = None,
     ) -> None:
         self._something_changed = threading.Event()
-        super().__init__(update_ids_to_update_secs,
-                         override_sleep_delay=override_sleep_delay)
+        super().__init__(
+            update_ids_to_update_secs, override_sleep_delay=override_sleep_delay
+        )
 
     def something_changed(self):
         self._something_changed.set()
@@ -193,9 +190,5 @@ class WaitableAutomaticStateTracker(AutomaticStateTracker):
     def reset(self):
         self._something_changed.clear()
 
-    def wait(self,
-             *,
-             timeout=None):
-        return self._something_changed.wait(
-            timeout=timeout
-        )
+    def wait(self, *, timeout=None):
+        return self._something_changed.wait(timeout=timeout)