diff --git a/model_tools/parameters_storage.py b/model_tools/parameters_storage.py index 20aee2aaf0e6864d7547ce2182156da96a969b69..6372cbe4ca1d98975286f14e3d7df033aef3ef75 100644 --- a/model_tools/parameters_storage.py +++ b/model_tools/parameters_storage.py @@ -11,6 +11,11 @@ import pandas as pd pd.set_option('display.max_rows', None) pd.set_option('display.max_colwidth', 100) +from shutil import get_terminal_size + +def trunc(text: str, width: int) -> str: + return '\n'.join(line[:width] for line in text.split('\n')) + class ParametersStorage(NestedMKDict): def to_dict(self, **kwargs) -> list: return self.visit(ParametersVisitor(kwargs)).data @@ -39,11 +44,24 @@ class ParametersStorage(NestedMKDict): df = self.to_df() return df.to_string(**kwargs) - def to_table(self, *, df_kwargs: dict={}, **kwargs) -> str: + def to_table( + self, + *, + df_kwargs: dict={}, + truncate: Union[int, bool] = False, + **kwargs + ) -> str: df = self.to_df(**df_kwargs) kwargs.setdefault('headers', df.columns) ret = tabulate(df, **kwargs) + if truncate: + if isinstance(truncate, bool): + truncate = get_terminal_size().columns + + return trunc(ret, width=truncate) + + return ret def to_latex(self, *, return_df: bool=False, **kwargs) -> Union[str, Tuple[str, DataFrame]]: