in pipeline/common/datasets.py [0:0]
def as_json(root: Union[int, str, float, list, "Statistics"]) -> Union[int, str, float, list]:
"""
Recursively walk the data attributes of the statistics.
"""
if Statistics._is_subclass(root):
stats: Statistics = root
stats.update_derived_data()
obj = {}
for key, value in stats.__dict__.items():
if key.startswith("_"):
continue
obj[key] = Statistics.as_json(value)
return obj
if isinstance(root, list):
return [Statistics.as_json(item) for item in root]
if isinstance(root, dict):
root_dict: dict = root
return {key: Statistics.as_json(value) for key, value in root_dict.items()}
if isinstance(root, (float, int, str)):
return root
return str(root)