comparison env/lib/python3.9/site-packages/oyaml.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 import platform
2 import sys
3 from collections import OrderedDict
4
5 import yaml as pyyaml
6
7
8 _items = "viewitems" if sys.version_info < (3,) else "items"
9 _std_dict_is_order_preserving = sys.version_info >= (3, 7) or (
10 sys.version_info >= (3, 6) and platform.python_implementation() == "CPython"
11 )
12
13
14 def map_representer(dumper, data):
15 return dumper.represent_dict(getattr(data, _items)())
16
17
18 def map_constructor(loader, node):
19 loader.flatten_mapping(node)
20 pairs = loader.construct_pairs(node)
21 try:
22 return OrderedDict(pairs)
23 except TypeError:
24 loader.construct_mapping(node) # trigger any contextual error
25 raise
26
27
28 _loaders = [getattr(pyyaml.loader, x) for x in pyyaml.loader.__all__]
29 _dumpers = [getattr(pyyaml.dumper, x) for x in pyyaml.dumper.__all__]
30 try:
31 _cyaml = pyyaml.cyaml.__all__
32 except AttributeError:
33 pass
34 else:
35 _loaders += [getattr(pyyaml.cyaml, x) for x in _cyaml if x.endswith("Loader")]
36 _dumpers += [getattr(pyyaml.cyaml, x) for x in _cyaml if x.endswith("Dumper")]
37
38 Dumper = None
39 for Dumper in _dumpers:
40 pyyaml.add_representer(dict, map_representer, Dumper=Dumper)
41 pyyaml.add_representer(OrderedDict, map_representer, Dumper=Dumper)
42
43 Loader = None
44 if not _std_dict_is_order_preserving:
45 for Loader in _loaders:
46 pyyaml.add_constructor("tag:yaml.org,2002:map", map_constructor, Loader=Loader)
47
48
49 # Merge PyYAML namespace into ours.
50 # This allows users a drop-in replacement:
51 # import oyaml as yaml
52 del map_constructor, map_representer, Loader, Dumper
53 from yaml import *