stdlib: Add __repr__ to pystats
For Statistics the value is returned. E.g.:
```
print(simstats.board.core.some_integer)
> 5
```
For Groups the names of the stats in that group are listed.
E.g.:
```
print(stats.board.core)
> [Group: [some_integer, another_stat, another_group]]
```
Change-Id: I94cea907608fba622f4fc141d5b22ac95d8cde40
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/63271
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Reviewed-by: Bobby Bruce <bbruce@ucdavis.edu>
diff --git a/src/python/m5/ext/pystats/group.py b/src/python/m5/ext/pystats/group.py
index 6e2da87..680a5d5 100644
--- a/src/python/m5/ext/pystats/group.py
+++ b/src/python/m5/ext/pystats/group.py
@@ -56,7 +56,7 @@
time_conversion: Optional[TimeConversion] = None,
**kwargs: Dict[
str, Union["Group", Statistic, List["Group"], List["Statistic"]]
- ]
+ ],
):
if type is None:
self.type = "Group"
@@ -140,6 +140,15 @@
pattern = regex
yield from self.children(lambda _name: bool(pattern.search(_name)))
+ def _repr_name(self) -> str:
+ return "Group"
+
+ def __repr__(self) -> str:
+ stats_list = []
+ for key in self.__dict__:
+ stats_list.append(key)
+ return f"{self._repr_name()}: {stats_list}"
+
class Vector(Group):
"""
@@ -152,3 +161,6 @@
def __init__(self, scalar_map: Mapping[str, Scalar]):
super().__init__(type="Vector", time_conversion=None, **scalar_map)
+
+ def _repr_name(self) -> str:
+ return "Vector"
diff --git a/src/python/m5/ext/pystats/statistic.py b/src/python/m5/ext/pystats/statistic.py
index 446c9ba..b018060 100644
--- a/src/python/m5/ext/pystats/statistic.py
+++ b/src/python/m5/ext/pystats/statistic.py
@@ -56,6 +56,9 @@
self.description = description
self.datatype = datatype
+ def __repr__(self):
+ return str(self.value)
+
class Scalar(Statistic):
"""