Cleanup more contextlib.AbstractContextManagers and Literal[False]s.
[python_utils.git] / stopwatch.py
index fa4f2b52f54998bb029f7e14433e5451abd67812..ae8e01aa18452ed932ef589b9047c7f0c68ab58a 100644 (file)
@@ -2,11 +2,12 @@
 
 """A simple stopwatch decorator / context for timing things."""
 
+import contextlib
 import time
-from typing import Callable, Optional
+from typing import Callable, Literal
 
 
-class Timer(object):
+class Timer(contextlib.AbstractContextManager):
     """
     A stopwatch to time how long something takes (walltime).
 
@@ -31,6 +32,6 @@ class Timer(object):
         self.end = 0.0
         return lambda: self.end - self.start
 
-    def __exit__(self, *args) -> Optional[bool]:
+    def __exit__(self, *args) -> Literal[False]:
         self.end = time.perf_counter()
-        return None  # don't suppress exceptions
+        return False