From e95b1a68d266d754423d70a629998ebf5dd88c8e Mon Sep 17 00:00:00 2001 From: Till Ehrengruber Date: Thu, 21 Mar 2024 00:31:19 +0100 Subject: [PATCH 1/2] Eve: Preserve annex None value in visitors --- src/gt4py/eve/visitors.py | 2 +- tests/eve_tests/unit_tests/test_visitors.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/gt4py/eve/visitors.py b/src/gt4py/eve/visitors.py index 750505becf..ea76aea108 100644 --- a/src/gt4py/eve/visitors.py +++ b/src/gt4py/eve/visitors.py @@ -168,7 +168,7 @@ def generic_visit(self, node: concepts.RootNode, **kwargs: Any) -> Any: # access to `new_node.annex` implicitly creates the `__node_annex__` attribute in the property getter new_annex_dict = new_node.annex.__dict__ for key in self.PRESERVED_ANNEX_ATTRS: - if value := getattr(old_annex, key, None): + if (value := getattr(old_annex, key, NOTHING)) is not NOTHING: assert key not in new_annex_dict new_annex_dict[key] = value diff --git a/tests/eve_tests/unit_tests/test_visitors.py b/tests/eve_tests/unit_tests/test_visitors.py index 70b7e2e4da..ca80374917 100644 --- a/tests/eve_tests/unit_tests/test_visitors.py +++ b/tests/eve_tests/unit_tests/test_visitors.py @@ -28,3 +28,14 @@ class SampleTranslator(eve.NodeTranslator): assert translated_node.annex.foo == 1 assert not hasattr(translated_node.annex, "bar") + + +def test_annex_preserve_none(compound_node: eve.Node): + compound_node.annex.foo = None + + class SampleTranslator(eve.NodeTranslator): + PRESERVED_ANNEX_ATTRS = ("foo",) + + translated_node = SampleTranslator().visit(compound_node) + + assert translated_node.annex.foo == None From ebdedf010126b0502754645bcd6f30e06f9122c6 Mon Sep 17 00:00:00 2001 From: Till Ehrengruber Date: Thu, 21 Mar 2024 00:33:53 +0100 Subject: [PATCH 2/2] Simplify testing --- tests/eve_tests/unit_tests/test_visitors.py | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/tests/eve_tests/unit_tests/test_visitors.py b/tests/eve_tests/unit_tests/test_visitors.py index ca80374917..1b52243d2e 100644 --- a/tests/eve_tests/unit_tests/test_visitors.py +++ b/tests/eve_tests/unit_tests/test_visitors.py @@ -19,23 +19,14 @@ def test_annex_preservation(compound_node: eve.Node): compound_node.annex.foo = 1 - compound_node.annex.bar = 2 + compound_node.annex.bar = None # None is easily forgotten so test seperately + compound_node.annex.baz = 2 class SampleTranslator(eve.NodeTranslator): - PRESERVED_ANNEX_ATTRS = ("foo",) + PRESERVED_ANNEX_ATTRS = ("foo", "bar") translated_node = SampleTranslator().visit(compound_node) assert translated_node.annex.foo == 1 - assert not hasattr(translated_node.annex, "bar") - - -def test_annex_preserve_none(compound_node: eve.Node): - compound_node.annex.foo = None - - class SampleTranslator(eve.NodeTranslator): - PRESERVED_ANNEX_ATTRS = ("foo",) - - translated_node = SampleTranslator().visit(compound_node) - - assert translated_node.annex.foo == None + assert translated_node.annex.bar is None + assert not hasattr(translated_node.annex, "baz")