From cb5e9bf465d2adf16e1c3ed1cf7d17972c5ca477 Mon Sep 17 00:00:00 2001
From: Alexandru Fikl <alexfikl@gmail.com>
Date: Sun, 4 Apr 2021 19:59:58 -0500
Subject: [PATCH] add __str__ to ProcessTimer

---
 pytools/__init__.py | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/pytools/__init__.py b/pytools/__init__.py
index ddd3d91..89e56b1 100644
--- a/pytools/__init__.py
+++ b/pytools/__init__.py
@@ -2391,6 +2391,23 @@ class ProcessTimer:
             self.wall_elapsed = timeit.default_timer() - self.time_start
             self.process_elapsed = None
 
+    def __str__(self):
+        if self.process_elapsed is not None:
+            cpu = self.process_elapsed / self.wall_elapsed
+            return f"{self.wall_elapsed:.2f}s wall {cpu:.2f}x CPU"
+        else:
+            return f"{self.wall_elapsed:.2f}s wall"
+
+    def __repr__(self):
+        wall = self.wall_elapsed
+        process = self.process_elapsed
+
+        if self.process_elapsed is not None:
+            return (f"{type(self).__name__}"
+                    f"<wall_elapsed={wall!r}s, process_elapsed={process!r}s>")
+        else:
+            return f"{type(self).__name__}<wall_elapsed={wall!r}s>"
+
 # }}}
 
 
@@ -2481,20 +2498,13 @@ class ProcessLogger:  # pylint: disable=too-many-instance-attributes
         self.timer.done()
         self.is_done = True
 
-        wall_elapsed = self.timer.wall_elapsed
-        process_elapsed = self.timer.process_elapsed
-
         completion_level = (
                 self.noisy_level
-                if wall_elapsed > self.long_threshold_seconds
+                if self.timer.wall_elapsed > self.long_threshold_seconds
                 else self.silent_level)
 
-        if process_elapsed is not None:
-            msg = "%s: completed (%.2fs wall, %.1fx CPU)"
-            fmt_args = [self.description, wall_elapsed, process_elapsed/wall_elapsed]
-        else:
-            msg = "%s: completed (%f.2s wall)"
-            fmt_args = [self.description, wall_elapsed]
+        msg = "%s: completed (%s)"
+        fmt_args = [self.description, str(self.timer)]
 
         if extra_msg:
             msg += ": " + extra_msg
-- 
GitLab