]> Repositories - Adafruit_Blinka-hackapet.git/blobdiff - src/adafruit_blinka/agnostic/time.py
Add typing information to micropython
[Adafruit_Blinka-hackapet.git] / src / adafruit_blinka / agnostic / time.py
old mode 100644 (file)
new mode 100755 (executable)
index 078b833..c0eca3c
@@ -1,4 +1,13 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""Platform agnostic time implementation"""
+
 from adafruit_blinka import agnostic
+
+# We intentionally are patching into this namespace so skip the wildcard check.
+# pylint: disable=unused-wildcard-import,wildcard-import
+
 if agnostic.implementation == "circuitpython":
     from time import *
 elif agnostic.implementation == "micropython":
@@ -6,22 +15,61 @@ elif agnostic.implementation == "micropython":
     from utime import sleep
 
     from ucollections import namedtuple
-    _struct_time = namedtuple("struct_time", ("tm_year", "tm_mon", "tm_mday", "tm_hour", "tm_min", "tm_sec", "tm_wday", "tm_yday", "tm_isdst"))
 
-    def marshal_time(tm_year, tm_mon, tm_mday, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=-1, tm_yday=-1, tm_isdst=-1):
-        _struct_time(tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst)
+    _struct_time = namedtuple(
+        "struct_time",
+        (
+            "tm_year",
+            "tm_mon",
+            "tm_mday",
+            "tm_hour",
+            "tm_min",
+            "tm_sec",
+            "tm_wday",
+            "tm_yday",
+            "tm_isdst",
+        ),
+    )
+
+    # pylint: disable=too-many-arguments
+    def _marshal_time(
+        tm_year,
+        tm_mon,
+        tm_mday,
+        tm_hour=0,
+        tm_min=0,
+        tm_sec=0,
+        tm_wday=-1,
+        tm_yday=-1,
+        tm_isdst=-1,
+    ):
+        """Construct struct_time with default values."""
+        _struct_time(
+            tm_year,
+            tm_mon,
+            tm_mday,
+            tm_hour,
+            tm_min,
+            tm_sec,
+            tm_wday,
+            tm_yday,
+            tm_isdst,
+        )
+
+    def struct_time(time_tuple):
+        """Create a struct_time"""
+        return _marshal_time(*time_tuple)
 
-    def struct_time(t):
-        return marshal_time(*t)
+    # pylint: disable=invalid-name
+    _total_ms = 0
+    _prev_ticks_ms = utime.ticks_ms()
 
-    total_ms = 0
-    prev_ticks_ms = utime.ticks_ms()
     def monotonic():
-        """
-        Assumes that monotonic is called more frequently than the wraparound of micropython's utime.ticks_ms()
-        """
-        global prev_ticks_ms, total_ms
+        """A monotonically increasing time in seconds. No defined start time."""
+        # Assumes that monotonic is called more frequently than the wraparound of micropython's
+        # utime.ticks_ms()
+        global _prev_ticks_ms, _total_ms  # pylint: disable=global-statement
         ticks_ms = utime.ticks_ms()
-        total_ms += utime.ticks_diff(ticks_ms, prev_ticks_ms)
-        prev_ticks_ms = ticks_ms
-        return total_ms * 0.001
\ No newline at end of file
+        _total_ms += utime.ticks_diff(ticks_ms, _prev_ticks_ms)
+        _prev_ticks_ms = ticks_ms
+        return _total_ms * 0.001