From f5e4e230dc4080a1d8a0ffadb43780a3e667f7c5 Mon Sep 17 00:00:00 2001 From: PythonFZ Date: Fri, 26 Apr 2024 13:21:13 +0200 Subject: [PATCH] test optional dependencies --- tests/integration/test_node_node.py | 17 +++++++++++++++++ zntrack/examples/__init__.py | 11 +++++++++++ 2 files changed, 28 insertions(+) diff --git a/tests/integration/test_node_node.py b/tests/integration/test_node_node.py index 2c5c3062..2262cdeb 100644 --- a/tests/integration/test_node_node.py +++ b/tests/integration/test_node_node.py @@ -104,3 +104,20 @@ def test_AddNodeAttributes_legacy(proj_path): assert add_numbers_b.state.loaded assert add_nodes.c == 7 assert add_nodes.state.loaded + + +def test_OptionalDeps(proj_path): + with zntrack.Project() as proj: + add_numbers = zntrack.examples.AddNumbers(a=1, b=2) + add_none = zntrack.examples.OptionalDeps() + add_value = zntrack.examples.OptionalDeps(value=add_numbers.c) + + proj.run() + + add_numbers.load() + add_none.load() + add_value.load() + + assert add_numbers.c == 3 + assert add_none.result == 0.0 + assert add_value.result == 3.0 diff --git a/zntrack/examples/__init__.py b/zntrack/examples/__init__.py index ab4b48c3..d5b848c1 100644 --- a/zntrack/examples/__init__.py +++ b/zntrack/examples/__init__.py @@ -296,3 +296,14 @@ def run(self) -> None: assert self.state.restarted if self.state.run_count < self.raise_exception_until: raise ValueError("This is a test exception, simulating killing the Node.") + + +class OptionalDeps(zntrack.Node): + """Node with optional dependencies.""" + + value: float = zntrack.deps(None) + result: float = zntrack.outs() + + def run(self) -> None: + """Run the node.""" + self.result = self.value or 0.0