More cleanup, yey!
[python_utils.git] / stopwatch.py
index 752c7ed2d39268364d801391ce108768d2763f0c..fa4f2b52f54998bb029f7e14433e5451abd67812 100644 (file)
@@ -1,28 +1,36 @@
 #!/usr/bin/env python3
 
+"""A simple stopwatch decorator / context for timing things."""
+
 import time
-from typing import Callable
+from typing import Callable, Optional
 
 
 class Timer(object):
     """
-    with timer.Timer() as t:
-        do_the_thing()
+    A stopwatch to time how long something takes (walltime).
+
+    e.g.
 
-    walltime = t()
-    print(f'That took {walltime}s.')
+        with stopwatch.Timer() as t:
+            do_the_thing()
+
+        walltime = t()
+        print(f'That took {walltime} seconds.')
     """
 
     def __init__(self) -> None:
-        self.start = None
-        self.end = None
-        pass
+        self.start = 0.0
+        self.end = 0.0
 
     def __enter__(self) -> Callable[[], float]:
+        """Returns a functor that, when called, returns the walltime of the
+        operation in seconds.
+        """
         self.start = time.perf_counter()
         self.end = 0.0
         return lambda: self.end - self.start
 
-    def __exit__(self, *args) -> bool:
+    def __exit__(self, *args) -> Optional[bool]:
         self.end = time.perf_counter()
-        return True
+        return None  # don't suppress exceptions