Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/galaxy/util/yaml_util.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author | shellac |
---|---|
date | Mon, 01 Jun 2020 08:59:25 -0400 |
parents | 79f47841a781 |
children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/galaxy/util/yaml_util.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -from __future__ import absolute_import - -import logging -import os -from collections import OrderedDict - -import yaml -from yaml.constructor import ConstructorError - - -log = logging.getLogger(__name__) - -OPTION_DEFAULTS = { - "type": "str", - "unknown_option": False, - "default": None, - "desc": None, -} - - -class OrderedLoader(yaml.SafeLoader): - # This class was pulled out of ordered_load() for the sake of - # mocking __init__ in a unit test. - def __init__(self, stream): - self._root = os.path.split(stream.name)[0] - super(OrderedLoader, self).__init__(stream) - - def include(self, node): - filename = os.path.join(self._root, self.construct_scalar(node)) - with open(filename, 'r') as f: - return yaml.load(f, OrderedLoader) - - -def ordered_load(stream, merge_duplicate_keys=False): - """ - Parse the first YAML document in a stream and produce the corresponding - Python object, using OrderedDicts instead of dicts. - - If merge_duplicate_keys is True, merge the values of duplicate mapping keys - into a list, as the uWSGI "dumb" YAML parser would do. - Otherwise, following YAML 1.2 specification which says that "each key is - unique in the association", raise a ConstructionError exception. - """ - def construct_mapping(loader, node, deep=False): - loader.flatten_mapping(node) - mapping = OrderedDict() - merged_duplicate = {} - for key_node, value_node in node.value: - key = loader.construct_object(key_node, deep=deep) - value = loader.construct_object(value_node, deep=deep) - if key in mapping: - if not merge_duplicate_keys: - raise ConstructorError("while constructing a mapping", node.start_mark, - "found duplicated key (%s)" % key, key_node.start_mark) - log.debug("Merging values for duplicate key '%s' into a list", key) - if merged_duplicate.get(key): - mapping[key].append(value) - else: - mapping[key] = [mapping[key], value] - merged_duplicate[key] = True - else: - mapping[key] = value - return mapping - - OrderedLoader.add_constructor( - yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, - construct_mapping) - OrderedLoader.add_constructor('!include', OrderedLoader.include) - - return yaml.load(stream, OrderedLoader) - - -def ordered_dump(data, stream=None, Dumper=yaml.Dumper, **kwds): - class OrderedDumper(Dumper): - pass - - def _dict_representer(dumper, data): - return dumper.represent_mapping( - yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, - list(data.items())) - OrderedDumper.add_representer(OrderedDict, _dict_representer) - return yaml.dump(data, stream, OrderedDumper, **kwds)