Source code for ewokscore.cliutils.utils

import json
from typing import Tuple, Any


[docs] def parse_value(value: str) -> Any: try: return json.loads(value) except Exception: return value
_NODE_ATTR_MAP = {"id": "id", "label": "label", "taskid": "task_identifier"}
[docs] def parse_parameter(input_item: str, node_attr: str, all: bool) -> dict: """The format of `input_item` is `"[NODE]:name=value"`""" node_and_name, _, value = input_item.partition("=") a, sep, b = node_and_name.partition(":") if sep: node = a var_name = b else: node = None var_name = a var_value = parse_value(value) if node is None: return {"all": all, "name": var_name, "value": var_value} return { _NODE_ATTR_MAP[node_attr]: node, "name": var_name, "value": var_value, }
[docs] def parse_option(option: str) -> Tuple[str, Any]: option, _, value = option.partition("=") return option, parse_value(value)
[docs] def parse_workflow(args): if args.test: from ewokscore.tests.examples.graphs import graph_names, get_graph graphs = list(graph_names()) if args.workflow not in graphs: raise RuntimeError(f"Test graph '{args.workflow}' does not exist: {graphs}") graph, _ = get_graph(args.workflow) else: graph = args.workflow return graph