From 0d92ae7c68c291a09c5ea2350acf6c26815c946a Mon Sep 17 00:00:00 2001 From: ayasyrev Date: Tue, 18 Jul 2023 15:04:34 +0300 Subject: [PATCH] str method --- src/model_constructor/helpers.py | 13 ++++++++----- src/model_constructor/version.py | 2 +- tests/test_helpers.py | 12 +++++++++--- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/model_constructor/helpers.py b/src/model_constructor/helpers.py index 5876562..f8844ba 100644 --- a/src/model_constructor/helpers.py +++ b/src/model_constructor/helpers.py @@ -56,8 +56,8 @@ def instantiate_module( name = path_list[1] try: mod = importlib.import_module(default_path) - except ImportError: - raise ImportError(f"Module {default_path} not found") + except ImportError as exc: + raise ImportError(f"Module {default_path} not found") from exc if hasattr(mod, name): module = getattr(mod, name) if is_module(module): @@ -86,6 +86,9 @@ def _get_str_value(self, field: str) -> str: def __repr__(self) -> str: return f"{self.__repr_name__()}(\n {self.__repr_str__(chr(10) + ' ')})" + def __str__(self) -> str: + return f"{self.__repr_name__()}(\n {self.__repr_str__(chr(10) + ' ')})" + def __repr_args__(self) -> List[Tuple[str, str]]: return [ (field, str_value) @@ -97,7 +100,7 @@ def __repr_set_fields__(self) -> List[str]: """Return list repr for fields set at init""" return [ f"{field}: {self._get_str_value(field)}" - for field in self.model_fields_set # pylint: disable=E1133 + for field in self.model_fields_set # pylint: disable=E1133:not-an-iterable if field != "name" ] @@ -114,8 +117,8 @@ def changed_fields(self) -> Dict[str, Any]: # return "\n".join(self.__repr_changed_fields__()) return { field: self._get_str_value(field) - for field in self.model_fields # pylint: disable=E1133 - if getattr(self, field) != self.model_fields[field].default + for field, value in self.model_fields.items() + if getattr(self, field) != value.default } def print_cfg(self) -> None: diff --git a/src/model_constructor/version.py b/src/model_constructor/version.py index f9f4e9c..5b502d3 100644 --- a/src/model_constructor/version.py +++ b/src/model_constructor/version.py @@ -1 +1 @@ -__version__ = "dev_0.4.1" +__version__ = "0.4.1_dev" diff --git a/tests/test_helpers.py b/tests/test_helpers.py index 2e35063..5dfe769 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -48,23 +48,29 @@ def test_instantiate_module(): def test_cfg_repr_print(capsys: CaptureFixture[str]): """test repr and print results""" cfg = Cfg() - repr_res = cfg.__repr__() + repr_res = repr(cfg) assert repr_res == "Cfg(\n )" cfg.print_set_fields() out = capsys.readouterr().out assert out == "Nothing changed\n" cfg.name = "cfg_name" - repr_res = cfg.__repr__() + repr_res = repr(cfg) assert repr_res == "Cfg(\n name='cfg_name')" cfg.print_cfg() out = capsys.readouterr().out assert out == "Cfg(\n name='cfg_name')\n" + + # print + print(cfg) + out = capsys.readouterr().out + assert out == "Cfg(\n name='cfg_name')\n" + # Set fields. default - name is not in changed cfg = Cfg2(name="cfg_name") cfg.print_set_fields() out = capsys.readouterr().out assert out == "Nothing changed\n" - assert "name" in cfg.model_fields_set + assert "name" in cfg.model_fields_set # pylint: disable=E1135:unsupported-membership-test cfg = Cfg2(int_value=0) cfg.print_set_fields() out = capsys.readouterr().out