import json from typing import Any from pandas import DataFrame from resolver import pattern @pattern(name="Extended_DataFrame") class ExtendedDataFrame(str): def __new__(cls, *args, **kwargs): return str.__new__(cls, DataFrame(*args, **kwargs).to_markdown()) def __init__(self, *args, **kwargs): self.frame = DataFrame(*args, **kwargs) def __getattr__(self, name: str) -> Any: return getattr(self.frame, name) @pattern(name="Extended_DataFrame_List") class ExtendedDataFrameList(list): def __new__(cls, list_of_df: list): return list.__new__(cls, [df for df in list_of_df]) # return list.__new__(cls, [df.json_serialize() for df in list_of_df]) def __init__(self, list_of_df: list) -> None: assert all(isinstance(df, ExtendedDataFrame) for df in list_of_df) self.list_of_df = list_of_df def __str__(self) -> str: return json.dumps([df.json_serialize() for df in self.list_of_df])