Source code for plynx.service.make_operations_meta
"""Create metadata of operations"""
import pydoc
from typing import Callable, Dict, List, Union
import plynx
from plynx.utils.common import JSONEncoder
[docs]def _enhance_list_item(raw_item: Dict) -> Dict:
if raw_item['_type'] == 'Group':
# TODO proper checking
items = []
for raw_subitem in raw_item['items']:
items.append(_enhance_list_item(raw_subitem))
raw_item['items'] = items
return raw_item
return raw_item
[docs]def run_make_operations_meta(collection_module, out):
"""Make metadata"""
print(collection_module)
for include_module in collection_module:
collection: List[Union[Callable, plynx.node.utils.Group]] = pydoc.locate(include_module) # type: ignore
if collection is None:
raise ValueError(f"Cannot open include_module=`{include_module}`. It must be a valid import value.")
list_of_nodes = []
for func_or_group in collection:
raw_item = plynx.node.utils.func_or_group_to_dict(func_or_group)
list_of_nodes.append(_enhance_list_item(raw_item))
with open(out, "w") as f:
json_data = JSONEncoder().encode(list_of_nodes)
f.write(json_data)