Make histogram auto-format labels.
authorScott <[email protected]>
Mon, 31 Jan 2022 17:55:30 +0000 (09:55 -0800)
committerScott <[email protected]>
Mon, 31 Jan 2022 17:55:30 +0000 (09:55 -0800)
histogram.py

index 7be643f3a038365f58c2522910a7d769ce398991..87ef77340fd036b8ea29d5ddf3def5d902db3688 100644 (file)
@@ -67,7 +67,7 @@ class SimpleHistogram(Generic[T]):
             all_true = all_true and self.add_item(item)
         return all_true
 
-    def __repr__(self, width: int = 80, *, label_formatter: str = '%5s') -> str:
+    def __repr__(self, *, width: int = 80, label_formatter: str = None) -> str:
         from text_utils import bar_graph
 
         max_population: Optional[int] = None
@@ -92,6 +92,13 @@ class SimpleHistogram(Generic[T]):
             end = bucket[1]
             if highest_end is None or end > highest_end:
                 highest_end = end
+            if label_formatter is None:
+                if type(start) == int and type(end) == int:
+                    label_formatter = '%d'
+                elif type(start) == float and type(end) == float:
+                    label_formatter = '%.2f'
+                else:
+                    label_formatter = '%s'
             label = f'[{label_formatter}..{label_formatter}): ' % (start, end)
             label_width = len(label)
             if max_label_width is None or label_width > max_label_width: