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 *