Source code for matchms.yaml_file_functions

from collections import OrderedDict
import yaml


[docs]def ordered_load(stream, loader=yaml.SafeLoader, object_pairs_hook=OrderedDict) -> OrderedDict: """ Code from https://stackoverflow.com/questions/5121931/in-python-how-can-you-load-yaml-mappings-as-ordereddicts """ class OrderedLoader(loader): pass def construct_mapping(loader, node): loader.flatten_mapping(node) return object_pairs_hook(loader.construct_pairs(node)) OrderedLoader.add_constructor( yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, construct_mapping) return yaml.load(stream, OrderedLoader)
def ordered_dump(data: OrderedDict, stream=None, dumper=yaml.SafeDumper, **kwds): class OrderedDumper(dumper): pass def _dict_representer(dumper, data): return dumper.represent_mapping( yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, data.items()) OrderedDumper.add_representer(OrderedDict, _dict_representer) return yaml.dump(data, stream, OrderedDumper, **kwds) def load_workflow_from_yaml_file(yaml_file: str) -> OrderedDict: with open(yaml_file, 'r', encoding="utf-8") as file: workflow = ordered_load(file, yaml.SafeLoader) if workflow["reference_filters"] == "processing_queries": workflow["reference_filters"] = workflow["query_filters"] return workflow