From 9e585381eb8a5246da0a2db8cc1e7d75633d6729 Mon Sep 17 00:00:00 2001 From: Julian Geiger Date: Tue, 28 Jan 2025 17:15:26 +0100 Subject: [PATCH 1/2] Check that input_nodes have non-empty repositories --- src/aiida/tools/dumping/processes.py | 9 ++++++++- tests/tools/dumping/test_processes.py | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/aiida/tools/dumping/processes.py b/src/aiida/tools/dumping/processes.py index 794b1fcab2..c423aee2e8 100644 --- a/src/aiida/tools/dumping/processes.py +++ b/src/aiida/tools/dumping/processes.py @@ -285,7 +285,14 @@ def _dump_calculation( # Dump the node_inputs if self.include_inputs: input_links = calculation_node.base.links.get_incoming(link_type=LinkType.INPUT_CALC) - self._dump_calculation_io(parent_path=output_path / io_dump_mapping.inputs, link_triples=input_links) + all_input_nodes = input_links.all_nodes() + all_have_repositories = all([hasattr(p.base, 'repository') for p in all_input_nodes]) + if all_have_repositories: + non_empty_repository = any([len(n.base.repository.list_objects()) > 0 for n in all_input_nodes]) + if non_empty_repository: + self._dump_calculation_io( + parent_path=output_path / io_dump_mapping.inputs, link_triples=input_links + ) # Dump the node_outputs apart from `retrieved` if self.include_outputs: diff --git a/tests/tools/dumping/test_processes.py b/tests/tools/dumping/test_processes.py index accfbd17d2..b39a349d0a 100644 --- a/tests/tools/dumping/test_processes.py +++ b/tests/tools/dumping/test_processes.py @@ -203,6 +203,9 @@ def test_dump_multiply_add(tmp_path, generate_workchain_multiply_add): assert all([input_file.is_file() for input_file in input_files]) assert all([output_file.is_file() for output_file in output_files]) + missing_dir = dump_parent_path / node_inputs_relpath + assert not missing_dir.exists() + # Flat dumping dump_parent_path = tmp_path / 'wc-dump-test-multiply-add-flat' process_dumper = ProcessDumper(flat=True) @@ -328,6 +331,9 @@ def test_dump_calculation_add(tmp_path, generate_calculation_node_add): assert all([input_file.is_file() for input_file in input_files]) assert all([output_file.is_file() for output_file in output_files]) + missing_dir = dump_parent_path / node_inputs_relpath + assert not missing_dir.exists() + # Tests for helper methods @pytest.mark.usefixtures('chdir_tmp_path') From c2c49a3f3f92ddb2c57d92675be05f032c9d536a Mon Sep 17 00:00:00 2001 From: Julian Geiger Date: Tue, 28 Jan 2025 17:17:48 +0100 Subject: [PATCH 2/2] Variable naming --- src/aiida/tools/dumping/processes.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/aiida/tools/dumping/processes.py b/src/aiida/tools/dumping/processes.py index c423aee2e8..8db849c60d 100644 --- a/src/aiida/tools/dumping/processes.py +++ b/src/aiida/tools/dumping/processes.py @@ -286,12 +286,13 @@ def _dump_calculation( if self.include_inputs: input_links = calculation_node.base.links.get_incoming(link_type=LinkType.INPUT_CALC) all_input_nodes = input_links.all_nodes() - all_have_repositories = all([hasattr(p.base, 'repository') for p in all_input_nodes]) + all_have_repositories = all([hasattr(node.base, 'repository') for node in all_input_nodes]) if all_have_repositories: - non_empty_repository = any([len(n.base.repository.list_objects()) > 0 for n in all_input_nodes]) + non_empty_repository = any([len(node.base.repository.list_objects()) > 0 for node in all_input_nodes]) if non_empty_repository: self._dump_calculation_io( - parent_path=output_path / io_dump_mapping.inputs, link_triples=input_links + parent_path=output_path / io_dump_mapping.inputs, + link_triples=input_links, ) # Dump the node_outputs apart from `retrieved`