Mercurial > repos > guerler > springsuite
diff planemo/lib/python3.7/site-packages/oyaml.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:32:28 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/planemo/lib/python3.7/site-packages/oyaml.py Fri Jul 31 00:32:28 2020 -0400 @@ -0,0 +1,53 @@ +import platform +import sys +from collections import OrderedDict + +import yaml as pyyaml + + +_items = "viewitems" if sys.version_info < (3,) else "items" +_std_dict_is_order_preserving = sys.version_info >= (3, 7) or ( + sys.version_info >= (3, 6) and platform.python_implementation() == "CPython" +) + + +def map_representer(dumper, data): + return dumper.represent_dict(getattr(data, _items)()) + + +def map_constructor(loader, node): + loader.flatten_mapping(node) + pairs = loader.construct_pairs(node) + try: + return OrderedDict(pairs) + except TypeError: + loader.construct_mapping(node) # trigger any contextual error + raise + + +if pyyaml.safe_dump is pyyaml.dump: + # PyYAML v4.x + SafeDumper = pyyaml.dumper.Dumper + DangerDumper = pyyaml.dumper.DangerDumper +else: + SafeDumper = pyyaml.dumper.SafeDumper + DangerDumper = pyyaml.dumper.Dumper + +pyyaml.add_representer(dict, map_representer, Dumper=SafeDumper) +pyyaml.add_representer(OrderedDict, map_representer, Dumper=SafeDumper) +pyyaml.add_representer(dict, map_representer, Dumper=DangerDumper) +pyyaml.add_representer(OrderedDict, map_representer, Dumper=DangerDumper) + + +Loader = None +if not _std_dict_is_order_preserving: + for loader_name in pyyaml.loader.__all__: + Loader = getattr(pyyaml.loader, loader_name) + pyyaml.add_constructor("tag:yaml.org,2002:map", map_constructor, Loader=Loader) + + +# Merge PyYAML namespace into ours. +# This allows users a drop-in replacement: +# import oyaml as yaml +del map_constructor, map_representer, SafeDumper, DangerDumper, Loader +from yaml import *