diff --git a/oyaml.py b/oyaml.py index 694f750..29a0ef6 100644 --- a/oyaml.py +++ b/oyaml.py @@ -4,23 +4,27 @@ import yaml as pyyaml -_viewitems = 'viewitems' if sys.version_info < (3,) else 'items' +_items = 'viewitems' if sys.version_info < (3,) else 'items' -def _representer(dumper, data): - return dumper.represent_dict(getattr(data, _viewitems)()) +def map_representer(dumper, data): + return dumper.represent_dict(getattr(data, _items)()) -def _constructor(loader, node): +def map_constructor(loader, node): + loader.flatten_mapping(node) return OrderedDict(loader.construct_pairs(node)) -pyyaml.add_representer(dict, _representer) -pyyaml.add_representer(OrderedDict, _representer) +pyyaml.add_representer(dict, map_representer) +pyyaml.add_representer(OrderedDict, map_representer) if sys.version_info < (3, 7): - pyyaml.add_constructor(pyyaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, _constructor) + pyyaml.add_constructor('tag:yaml.org,2002:map', map_constructor) + + +del map_constructor, map_representer # Merge PyYAML namespace into ours. diff --git a/setup.py b/setup.py index b64e47d..e53ae87 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ setup( name='oyaml', - version='0.1', + version='0.2', description='Ordered YAML: drop-in replacement for PyYAML which preserves dict ordering', author='Wim Glenn', author_email='hey@wimglenn.com',