Remove references to utils in lieu of just using pylib.
authorScott Gasch <[email protected]>
Mon, 14 Mar 2022 06:41:23 +0000 (23:41 -0700)
committerScott Gasch <[email protected]>
Mon, 14 Mar 2022 06:41:23 +0000 (23:41 -0700)
kiosk.py
main.py
myq_renderer.py
renderer.py
utils.py [deleted file]

index 13fb2c95e824abb9dd8ca2839e5fdcd66ac04b74..b1bdb1c7c7e9b6f8319b46288c5995fac95c95f2 100755 (executable)
--- a/kiosk.py
+++ b/kiosk.py
@@ -22,6 +22,7 @@ import pytz
 import bootstrap
 import config
 import datetime_utils
+import file_utils
 
 import constants
 import file_writer
@@ -29,7 +30,6 @@ import renderer_catalog
 import chooser
 import listen
 import trigger_catalog
-import utils
 
 
 cfg = config.add_commandline_args(
@@ -331,9 +331,9 @@ def emit_wrapped(f,
             "Bellevue", "USA", "US/Pacific", 47.610, -122.201
         )
         s = sun(city.observer, date=now, tzinfo=pytz.timezone("US/Pacific"))
-        sunrise_mod = utils.minute_number(s["sunrise"].hour, s["sunrise"].minute)
-        sunset_mod = utils.minute_number(s["sunset"].hour, s["sunset"].minute)
-        now_mod = utils.minute_number(now.hour, now.minute)
+        sunrise_mod = datetime_utils.minute_number(s["sunrise"].hour, s["sunrise"].minute)
+        sunset_mod = datetime_utils.minute_number(s["sunset"].hour, s["sunset"].minute)
+        now_mod = datetime_utils.minute_number(now.hour, now.minute)
         if now_mod < sunrise_mod or now_mod > (sunset_mod + 45):
             return "E6B8B8"
         elif now_mod < (sunrise_mod + 45) or now_mod > (sunset_mod + 120):
@@ -350,7 +350,7 @@ def emit_wrapped(f,
         else:
             return float(constants.refresh_period_sec * 1000.0)
 
-    age = utils.describe_age_of_file_briefly(f"pages/{filename}")
+    age = file_utils.describe_file_ctime(f"pages/{filename}")
     bgcolor = pick_background_color()
     if command is None:
         pageid = filename
diff --git a/main.py b/main.py
index ead0741ec716f7cc9466e7dbb802c91da0c8eb2f..95f5e15f24dafbb4f8195727b591a0dc251b5c20 100755 (executable)
--- a/main.py
+++ b/main.py
@@ -1,7 +1,6 @@
 #!/usr/bin/env python3
 
 from datetime import datetime
-import difflib
 import gc
 import linecache
 import os
@@ -12,22 +11,22 @@ import time
 import traceback
 import tracemalloc
 from typing import Optional, List
-from queue import Queue, Empty
+from queue import Queue
 
 import astral  # type: ignore
 from astral.sun import sun  # type: ignore
 import pytz
 
+import datetime_utils
+import file_utils
+
 import constants
-import renderer
-import renderer
 import renderer_catalog
 import chooser
 import listen
 import logging
 import pvporcupine
 import trigger_catalog
-import utils
 
 
 def thread_janitor() -> None:
@@ -215,11 +214,11 @@ def thread_change_current(command_queue: Queue) -> None:
                     break
 
         if triggered:
-            print("chooser[%s] - WE ARE TRIGGERED." % utils.timestamp())
+            print("chooser[%s] - WE ARE TRIGGERED." % datetime_utils.timestamp())
             if page != page_history[0] or (swap_page_target - now < 10.0):
                 print(
                     "chooser[%s] - EMERGENCY PAGE %s LOAD NEEDED"
-                    % (utils.timestamp(), page)
+                    % (datetime_utils.timestamp(), page)
                 )
                 try:
                     with open(os.path.join(constants.pages_dir, "current.shtml"), "w") as f:
@@ -228,7 +227,7 @@ def thread_change_current(command_queue: Queue) -> None:
                     page_history = page_history[0:10]
                     swap_page_target = now + 40
                 except:
-                    print("chooser[%s] - page does not exist?!" % (utils.timestamp()))
+                    print("chooser[%s] - page does not exist?!" % (datetime_utils.timestamp()))
                     continue
 
                 # Also notify XMLHTTP clients that they need to refresh now.
@@ -243,7 +242,7 @@ def thread_change_current(command_queue: Queue) -> None:
 
         elif now >= swap_page_target:
             assert page != page_history[0]
-            print("chooser[%s] - nominal choice of %s" % (utils.timestamp(), page))
+            print("chooser[%s] - nominal choice of %s" % (datetime_utils.timestamp(), page))
             try:
                 with open(os.path.join(constants.pages_dir, "current.shtml"), "w") as f:
                     emit_wrapped(f, page)
@@ -251,7 +250,7 @@ def thread_change_current(command_queue: Queue) -> None:
                 page_history = page_history[0:10]
                 swap_page_target = now + constants.refresh_period_sec
             except:
-                print("chooser[%s] - page does not exist?!" % (utils.timestamp()))
+                print("chooser[%s] - page does not exist?!" % (datetime_utils.timestamp()))
                 continue
         time.sleep(1)
 
@@ -267,9 +266,9 @@ def emit_wrapped(f,
             "Bellevue", "USA", "US/Pacific", 47.610, -122.201
         )
         s = sun(city.observer, date=now, tzinfo=pytz.timezone("US/Pacific"))
-        sunrise_mod = utils.minute_number(s["sunrise"].hour, s["sunrise"].minute)
-        sunset_mod = utils.minute_number(s["sunset"].hour, s["sunset"].minute)
-        now_mod = utils.minute_number(now.hour, now.minute)
+        sunrise_mod = datetime_utils.minute_number(s["sunrise"].hour, s["sunrise"].minute)
+        sunset_mod = datetime_utils.minute_number(s["sunset"].hour, s["sunset"].minute)
+        now_mod = datetime_utils.minute_number(now.hour, now.minute)
         if now_mod < sunrise_mod or now_mod > (sunset_mod + 45):
             return "E6B8B8"
         elif now_mod < (sunrise_mod + 45) or now_mod > (sunset_mod + 120):
@@ -286,7 +285,7 @@ def emit_wrapped(f,
         else:
             return float(constants.refresh_period_sec * 1000.0)
 
-    age = utils.describe_age_of_file_briefly(f"pages/{filename}")
+    age = file_utils.describe_file_ctime(f"pages/{filename}")
     bgcolor = pick_background_color()
     if command is None:
         pageid = filename
@@ -493,7 +492,7 @@ def emit_wrapped(f,
 
 def thread_invoke_renderers() -> None:
     while True:
-        print(f"renderer[{utils.timestamp()}]: invoking all renderers in catalog...")
+        print(f"renderer[{datetime_utils.timestamp()}]: invoking all renderers in catalog...")
         for r in renderer_catalog.get_renderers():
             now = time.time()
             try:
@@ -501,15 +500,15 @@ def thread_invoke_renderers() -> None:
             except Exception as e:
                 traceback.print_exc(file=sys.stdout)
                 print(
-                    f"renderer[{utils.timestamp()}] unknown exception ({e}) in {r.get_name()}, swallowing it."
+                    f"renderer[{datetime_utils.timestamp()}] unknown exception ({e}) in {r.get_name()}, swallowing it."
                 )
             delta = time.time() - now
             if delta > 1.0:
                 print(
-                    f"renderer[{utils.timestamp()}]: Warning: {r.get_name()}'s rendering took {delta:5.2f}s."
+                    f"renderer[{datetime_utils.timestamp()}]: Warning: {r.get_name()}'s rendering took {delta:5.2f}s."
                 )
         print(
-            f"renderer[{utils.timestamp()}]: thread having a little break for {constants.render_period_sec}s..."
+            f"renderer[{datetime_utils.timestamp()}]: thread having a little break for {constants.render_period_sec}s..."
         )
         time.sleep(constants.render_period_sec)
 
@@ -534,19 +533,19 @@ if __name__ == "__main__":
             hotword_thread.start()
         if changer_thread is None or not changer_thread.is_alive():
             print(
-                f"MAIN[{utils.timestamp()}] - (Re?)initializing chooser thread... (wtf?!)"
+                f"MAIN[{datetime_utils.timestamp()}] - (Re?)initializing chooser thread... (wtf?!)"
             )
             changer_thread = Thread(target=thread_change_current, args=(command_queue,))
             changer_thread.start()
         if renderer_thread is None or not renderer_thread.is_alive():
             print(
-                f"MAIN[{utils.timestamp()}] - (Re?)initializing render thread... (wtf?!)"
+                f"MAIN[{datetime_utils.timestamp()}] - (Re?)initializing render thread... (wtf?!)"
             )
             renderer_thread = Thread(target=thread_invoke_renderers, args=())
             renderer_thread.start()
         if janitor_thread is None or not janitor_thread.is_alive():
             print(
-                f"MAIN[{utils.timestamp()}] - (Re?)initializing janitor thread... (wtf?!)"
+                f"MAIN[{datetime_utils.timestamp()}] - (Re?)initializing janitor thread... (wtf?!)"
             )
             janitor_thread = Thread(target=thread_janitor, args=())
             janitor_thread.start()
index 8591af50855f9e91d9dde1f75c668cbf64d035a6..037796375f577f4c488ac060f8e2787c2929aebc 100644 (file)
@@ -7,11 +7,12 @@ from dateutil.parser import parse
 import pymyq  # type: ignore
 from typing import Dict, Optional
 
+import datetime_utils
+
 import constants
 import file_writer
 import renderer
 import kiosk_secrets as secrets
-import utils
 
 
 class garage_door_renderer(renderer.abstaining_renderer):
@@ -97,7 +98,7 @@ class garage_door_renderer(renderer.abstaining_renderer):
                 delta = (now - ts).total_seconds()
                 now = datetime.datetime.now()
                 is_night = now.hour <= 7 or now.hour >= 21
-                duration = utils.describe_duration_briefly(int(delta))
+                duration = datetime_utils.describe_duration_briefly(int(delta))
                 width = 0
                 if is_night and door.state == "open":
                     color = "border-color: #ff0000;"
index 83ace25b14f100fdb9916bbb996d9a09cdbda389..0d8988423d2ea33276a1203b4a706c2036ebf143 100644 (file)
@@ -1,11 +1,12 @@
 #!/usr/bin/env python3
 
 from abc import ABC, abstractmethod
-from decorators import invocation_logged
 import logging
 import time
 from typing import Dict, Optional, Set
 
+from decorator_utils import invocation_logged
+
 
 logger = logging.getLogger(__file__)
 
diff --git a/utils.py b/utils.py
deleted file mode 100644 (file)
index 98238a1..0000000
--- a/utils.py
+++ /dev/null
@@ -1,108 +0,0 @@
-#!/usr/bin/env python3
-
-import time
-import logging
-import os
-from datetime import datetime
-
-import constants
-
-
-logger = logging.getLogger(__file__)
-
-
-def timestamp() -> str:
-    t = datetime.fromtimestamp(time.time())
-    return t.strftime("%d/%b/%Y:%H:%M:%S%Z")
-
-
-def describe_age_of_file(filename: str) -> str:
-    try:
-        now = time.time()
-        ts = os.stat(filename).st_ctime
-        age = now - ts
-        age = int(age)
-        return describe_duration(age)
-    except Exception as e:
-        logger.exception(e)
-        return "?????"
-
-
-def describe_age_of_file_briefly(filename: str) -> str:
-    try:
-        now = time.time()
-        ts = os.stat(filename).st_ctime
-        age = now - ts
-        age = int(age)
-        return describe_duration_briefly(age)
-    except Exception as e:
-        logger.exception(e)
-        return "?????"
-
-
-def describe_duration(age: int) -> str:
-    days = divmod(age, constants.seconds_per_day)
-    hours = divmod(days[1], constants.seconds_per_hour)
-    minutes = divmod(hours[1], constants.seconds_per_minute)
-
-    descr = ""
-    if days[0] > 1:
-        descr = f"{int(days[0]):d} days, "
-    elif days[0] == 1:
-        descr = "1 day, "
-    if hours[0] > 1:
-        descr = descr + f"{int(hours[0]):d} hours, "
-    elif hours[0] == 1:
-        descr = descr + "1 hour, "
-    if len(descr) > 0:
-        descr = descr + "and "
-    if minutes[0] == 1:
-        descr = descr + "1 minute"
-    else:
-        descr = descr + f"{int(minutes[0]):d} minutes"
-    return descr
-
-
-def describe_duration_briefly(age: int) -> str:
-    days = divmod(age, constants.seconds_per_day)
-    hours = divmod(days[1], constants.seconds_per_hour)
-    minutes = divmod(hours[1], constants.seconds_per_minute)
-
-    descr = ""
-    if days[0] > 0:
-        descr = f"{int(days[0]):d}d "
-    if hours[0] > 0:
-        descr = descr + f"{int(hours[0]):d}h "
-    descr = descr + f"{int(minutes[0]):d}m"
-    return descr
-
-
-def minute_number(hour: int, minute: int) -> int:
-    """Convert hour:minute into minute number from start of day."""
-    return hour * 60 + minute
-
-
-def datetime_to_minute_number(dt: datetime) -> int:
-    """Convert a datetime into a minute number (of the day)"""
-    return minute_number(dt.hour, dt.minute)
-
-
-def minute_number_to_time_string(minute_num: int) -> str:
-    """Convert minute number from start of day into hour:minute am/pm
-    string."""
-
-    hour = minute_num // 60
-    minute = minute_num % 60
-    ampm = "a"
-    if hour > 12:
-        hour -= 12
-        ampm = "p"
-    if hour == 12:
-        ampm = "p"
-    if hour == 0:
-        hour = 12
-    return f"{hour:2}:{minute:02}{ampm}"
-
-
-# x = describe_age_of_file_briefly("pages/clock_10_none.html")
-# print x