From 270b5406ef986bc18c806e8275c686d0162128d8 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 14 May 2025 09:29:59 +0200 Subject: [PATCH] Add version number to JSON format --- example_workflows/arithmetic/workflow.json | 1 + example_workflows/nfdi/workflow.json | 1 + example_workflows/quantum_espresso/workflow.json | 1 + .../src/python_workflow_definition/aiida.py | 3 +++ .../src/python_workflow_definition/jobflow.py | 3 +++ .../src/python_workflow_definition/models.py | 1 + .../src/python_workflow_definition/pyiron_base.py | 3 +++ .../src/python_workflow_definition/shared.py | 2 ++ 8 files changed, 15 insertions(+) diff --git a/example_workflows/arithmetic/workflow.json b/example_workflows/arithmetic/workflow.json index d486d81..4ad5c86 100644 --- a/example_workflows/arithmetic/workflow.json +++ b/example_workflows/arithmetic/workflow.json @@ -1,4 +1,5 @@ { + "version": "0.0.1", "nodes": [ {"id": 0, "type": "function", "value": "workflow.get_prod_and_div"}, {"id": 1, "type": "function", "value": "workflow.get_sum"}, diff --git a/example_workflows/nfdi/workflow.json b/example_workflows/nfdi/workflow.json index c964fa8..a299fb7 100644 --- a/example_workflows/nfdi/workflow.json +++ b/example_workflows/nfdi/workflow.json @@ -1,4 +1,5 @@ { + "version": "0.0.1", "nodes": [ {"id": 0, "type": "function", "value": "workflow.generate_mesh"}, {"id": 1, "type": "function", "value": "workflow.convert_to_xdmf"}, diff --git a/example_workflows/quantum_espresso/workflow.json b/example_workflows/quantum_espresso/workflow.json index 1164515..7b1464b 100644 --- a/example_workflows/quantum_espresso/workflow.json +++ b/example_workflows/quantum_espresso/workflow.json @@ -1,4 +1,5 @@ { + "version": "0.0.1", "nodes": [ {"id": 0, "type": "function", "value": "workflow.get_bulk_structure"}, {"id": 1, "type": "function", "value": "workflow.calculate_qe"}, diff --git a/python_workflow_definition/src/python_workflow_definition/aiida.py b/python_workflow_definition/src/python_workflow_definition/aiida.py index 6a917c1..e2464bd 100644 --- a/python_workflow_definition/src/python_workflow_definition/aiida.py +++ b/python_workflow_definition/src/python_workflow_definition/aiida.py @@ -18,6 +18,8 @@ SOURCE_PORT_LABEL, TARGET_LABEL, TARGET_PORT_LABEL, + VERSION_NUMBER, + VERSION_LABEL, ) @@ -139,6 +141,7 @@ def write_workflow_json(wg: WorkGraph, file_name: str) -> dict: SOURCE_PORT_LABEL: None, } ) + data[VERSION_LABEL] = VERSION_NUMBER PythonWorkflowDefinitionWorkflow( **set_result_node(workflow_dict=update_node_names(workflow_dict=data)) ).dump_json_file(file_name=file_name, indent=2) diff --git a/python_workflow_definition/src/python_workflow_definition/jobflow.py b/python_workflow_definition/src/python_workflow_definition/jobflow.py index a0fb140..969251c 100644 --- a/python_workflow_definition/src/python_workflow_definition/jobflow.py +++ b/python_workflow_definition/src/python_workflow_definition/jobflow.py @@ -20,6 +20,8 @@ SOURCE_PORT_LABEL, TARGET_LABEL, TARGET_PORT_LABEL, + VERSION_NUMBER, + VERSION_LABEL, ) @@ -339,6 +341,7 @@ def write_workflow_json(flow: Flow, file_name: str = "workflow.json"): **set_result_node( workflow_dict=update_node_names( workflow_dict={ + VERSION_LABEL: VERSION_NUMBER, NODES_LABEL: nodes_store_lst, EDGES_LABEL: edges_lst, } diff --git a/python_workflow_definition/src/python_workflow_definition/models.py b/python_workflow_definition/src/python_workflow_definition/models.py index 2e196ef..4980cfa 100644 --- a/python_workflow_definition/src/python_workflow_definition/models.py +++ b/python_workflow_definition/src/python_workflow_definition/models.py @@ -116,6 +116,7 @@ def serialize_source_handle(self, v: Optional[str]) -> Optional[str]: class PythonWorkflowDefinitionWorkflow(BaseModel): """The main workflow model.""" + version: str nodes: List[PythonWorkflowDefinitionNode] edges: List[PythonWorkflowDefinitionEdge] diff --git a/python_workflow_definition/src/python_workflow_definition/pyiron_base.py b/python_workflow_definition/src/python_workflow_definition/pyiron_base.py index 8785553..437c562 100644 --- a/python_workflow_definition/src/python_workflow_definition/pyiron_base.py +++ b/python_workflow_definition/src/python_workflow_definition/pyiron_base.py @@ -20,6 +20,8 @@ SOURCE_PORT_LABEL, TARGET_LABEL, TARGET_PORT_LABEL, + VERSION_NUMBER, + VERSION_LABEL, ) @@ -300,6 +302,7 @@ def write_workflow_json( **set_result_node( workflow_dict=update_node_names( workflow_dict={ + VERSION_LABEL: VERSION_NUMBER, NODES_LABEL: nodes_store_lst, EDGES_LABEL: edges_new_lst, } diff --git a/python_workflow_definition/src/python_workflow_definition/shared.py b/python_workflow_definition/src/python_workflow_definition/shared.py index 0467463..da2d9fa 100644 --- a/python_workflow_definition/src/python_workflow_definition/shared.py +++ b/python_workflow_definition/src/python_workflow_definition/shared.py @@ -6,6 +6,8 @@ SOURCE_PORT_LABEL = "sourcePort" TARGET_LABEL = "target" TARGET_PORT_LABEL = "targetPort" +VERSION_NUMBER = "0.0.1" +VERSION_LABEL = "version" def get_dict(**kwargs) -> dict: