From dde86e7be6311a1e3274650b0f8a338beb620ead Mon Sep 17 00:00:00 2001 From: Maxim Gonchar <maxim.mg.gonchar@gmail.com> Date: Thu, 27 Apr 2023 17:26:17 +0300 Subject: [PATCH] feat: `ParametersStorage.to_table` setup truncation --- model_tools/parameters_storage.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/model_tools/parameters_storage.py b/model_tools/parameters_storage.py index 20aee2a..6372cbe 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]]: -- GitLab