Skip to content

Commit

Permalink
Merge pull request #120 from pyiron/refactor
Browse files Browse the repository at this point in the history
[patch] Refactor
  • Loading branch information
samwaseda authored Feb 4, 2025
2 parents aaf2a6f + 98fc4b0 commit 8bd277a
Showing 1 changed file with 17 additions and 8 deletions.
25 changes: 17 additions & 8 deletions pyiron_ontology/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,32 @@ def get_source_output(var: Node) -> str | None:
if not var.connected:
return None
connection = var.connections[0]
return f"{connection.owner.label}.outputs.{connection.label}"
connection_name = f"{connection.owner.label}.outputs.{connection.label}"
return connection_name


def _get_function_dict(function):
result = {
"label": function.__name__,
}
if hasattr(function, "_semantikon_metadata"):
function_has_metadata = hasattr(function, "_semantikon_metadata")
if function_has_metadata:
result.update(function._semantikon_metadata)
return result


def _parse_output_args(node: Node) -> dict:
output_tuple_or_dict_or_none = parse_output_args(node.node_function)
if isinstance(output_tuple_or_dict_or_none, dict):
output_tuple = (output_tuple_or_dict_or_none,)
elif output_tuple_or_dict_or_none is None:
output_tuple = ({} for _ in node.outputs.labels)
else:
output_tuple = output_tuple_or_dict_or_none
outputs = {key: out for key, out in zip(node.outputs.labels, output_tuple)}
return outputs


def get_inputs_and_outputs(node: Node) -> dict:
"""
Read input and output arguments with their type hints and return a
Expand All @@ -50,12 +64,7 @@ def get_inputs_and_outputs(node: Node) -> dict:
if isinstance(node, Macro):
raise NotImplementedError("Macros are not supported yet")
inputs = parse_input_args(node.node_function)
outputs = parse_output_args(node.node_function)
if isinstance(outputs, dict):
outputs = (outputs,)
elif outputs is None:
outputs = ({} for _ in node.outputs.labels)
outputs = {key: out for key, out in zip(node.outputs.labels, outputs)}
outputs = _parse_output_args(node)
for key, value in node.inputs.items():
if inputs[key] is None:
inputs[key] = {}
Expand Down

0 comments on commit 8bd277a

Please sign in to comment.