From 3737ae816610730f47685e1c7c2a5876405f58a6 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 07:57:27 +0000 Subject: [PATCH] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- README.md | 3 ++- tests/test_znfields.py | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 37e0c2c..3e48b7d 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,8 @@ # znfields -Provide a `getter` and `setter` for `dataclasses.fields` to allow e.g. for lazy evaluation or field content validation. +Provide a `getter` and `setter` for `dataclasses.fields` to allow e.g. for lazy +evaluation or field content validation. ```bash pip install znfields diff --git a/tests/test_znfields.py b/tests/test_znfields.py index 53c0173..26c659b 100644 --- a/tests/test_znfields.py +++ b/tests/test_znfields.py @@ -178,25 +178,28 @@ def test_getter_setter_no_init(): class ParentClass(znfields.Base): parent_field: str = znfields.field(getter=getter_01) + @dataclasses.dataclass class ChildClass(ParentClass): child_field: str = znfields.field(getter=getter_01) + def test_inherited_getter(): instance = ChildClass(parent_field="parent", child_field="child") assert instance.parent_field == "parent_field:parent" assert instance.child_field == "child_field:child" + def test_setter_validation(): example = SetterGetterNoInit() - + with pytest.raises(ValueError): example.parameter = "invalid value" - + with pytest.raises(KeyError): # dict is not set, getter raises KeyError instead of AttributeError - assert example.parameter is None - + assert example.parameter is None + example.parameter = 2.71 assert example.parameter == "parameter:2.71" @@ -205,6 +208,7 @@ def test_setter_validation(): class NoDefaultField(znfields.Base): parameter: float = znfields.field(getter=getter_01, setter=setter_01) + def test_no_default_field(): with pytest.raises(TypeError): NoDefaultField() # should raise because no default is provided @@ -216,12 +220,13 @@ def test_no_default_field(): class CombinedGetterSetter(znfields.Base): parameter: float = znfields.field(getter=getter_01, setter=setter_01) + def test_combined_getter_setter(): obj = CombinedGetterSetter(parameter=2.5) assert obj.parameter == "parameter:2.5" obj.parameter = 3.5 assert obj.parameter == "parameter:3.5" - + with pytest.raises(ValueError): obj.parameter = "invalid value" @@ -230,11 +235,12 @@ def test_combined_getter_setter(): class Nested(znfields.Base): inner_field: float = znfields.field(getter=getter_01) + @dataclasses.dataclass class Outer(znfields.Base): outer_field: Nested = dataclasses.field(default_factory=lambda: Nested(1.0)) + def test_nested_dataclass(): obj = Outer() assert obj.outer_field.inner_field == "inner_field:1.0" -