Skip to content

Commit 0d92ae7

Browse files
committed
str method
1 parent 35ee431 commit 0d92ae7

File tree

3 files changed

+18
-9
lines changed

3 files changed

+18
-9
lines changed

src/model_constructor/helpers.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ def instantiate_module(
5656
name = path_list[1]
5757
try:
5858
mod = importlib.import_module(default_path)
59-
except ImportError:
60-
raise ImportError(f"Module {default_path} not found")
59+
except ImportError as exc:
60+
raise ImportError(f"Module {default_path} not found") from exc
6161
if hasattr(mod, name):
6262
module = getattr(mod, name)
6363
if is_module(module):
@@ -86,6 +86,9 @@ def _get_str_value(self, field: str) -> str:
8686
def __repr__(self) -> str:
8787
return f"{self.__repr_name__()}(\n {self.__repr_str__(chr(10) + ' ')})"
8888

89+
def __str__(self) -> str:
90+
return f"{self.__repr_name__()}(\n {self.__repr_str__(chr(10) + ' ')})"
91+
8992
def __repr_args__(self) -> List[Tuple[str, str]]:
9093
return [
9194
(field, str_value)
@@ -97,7 +100,7 @@ def __repr_set_fields__(self) -> List[str]:
97100
"""Return list repr for fields set at init"""
98101
return [
99102
f"{field}: {self._get_str_value(field)}"
100-
for field in self.model_fields_set # pylint: disable=E1133
103+
for field in self.model_fields_set # pylint: disable=E1133:not-an-iterable
101104
if field != "name"
102105
]
103106

@@ -114,8 +117,8 @@ def changed_fields(self) -> Dict[str, Any]:
114117
# return "\n".join(self.__repr_changed_fields__())
115118
return {
116119
field: self._get_str_value(field)
117-
for field in self.model_fields # pylint: disable=E1133
118-
if getattr(self, field) != self.model_fields[field].default
120+
for field, value in self.model_fields.items()
121+
if getattr(self, field) != value.default
119122
}
120123

121124
def print_cfg(self) -> None:

src/model_constructor/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "dev_0.4.1"
1+
__version__ = "0.4.1_dev"

tests/test_helpers.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,23 +48,29 @@ def test_instantiate_module():
4848
def test_cfg_repr_print(capsys: CaptureFixture[str]):
4949
"""test repr and print results"""
5050
cfg = Cfg()
51-
repr_res = cfg.__repr__()
51+
repr_res = repr(cfg)
5252
assert repr_res == "Cfg(\n )"
5353
cfg.print_set_fields()
5454
out = capsys.readouterr().out
5555
assert out == "Nothing changed\n"
5656
cfg.name = "cfg_name"
57-
repr_res = cfg.__repr__()
57+
repr_res = repr(cfg)
5858
assert repr_res == "Cfg(\n name='cfg_name')"
5959
cfg.print_cfg()
6060
out = capsys.readouterr().out
6161
assert out == "Cfg(\n name='cfg_name')\n"
62+
63+
# print
64+
print(cfg)
65+
out = capsys.readouterr().out
66+
assert out == "Cfg(\n name='cfg_name')\n"
67+
6268
# Set fields. default - name is not in changed
6369
cfg = Cfg2(name="cfg_name")
6470
cfg.print_set_fields()
6571
out = capsys.readouterr().out
6672
assert out == "Nothing changed\n"
67-
assert "name" in cfg.model_fields_set
73+
assert "name" in cfg.model_fields_set # pylint: disable=E1135:unsupported-membership-test
6874
cfg = Cfg2(int_value=0)
6975
cfg.print_set_fields()
7076
out = capsys.readouterr().out

0 commit comments

Comments
 (0)