diff options
author | Anthon van der Neut <anthon@mnt.org> | 2016-01-22 17:47:18 +0100 |
---|---|---|
committer | Anthon van der Neut <anthon@mnt.org> | 2016-01-22 17:47:18 +0100 |
commit | b7cbfcacaaa13ff1b55f6391db5b0ce4459d3a9b (patch) | |
tree | 583d815f2b8d6b08f33563549943ebf1ab12eda3 | |
parent | 6de09ae58c8940fc979244052f53ee2cf6177650 (diff) | |
download | ruamel.yaml-b7cbfcacaaa13ff1b55f6391db5b0ce4459d3a9b.tar.gz |
Test and fix for #22, collections.OrderedDict could not0.10.16
be represented/dumped
-rw-r--r-- | .hgignore | 2 | ||||
-rw-r--r-- | __init__.py | 5 | ||||
-rw-r--r-- | representer.py | 10 | ||||
-rw-r--r-- | setup.py | 37 | ||||
-rw-r--r-- | test/test_yaml.py | 31 | ||||
-rw-r--r-- | tox.ini | 3 |
6 files changed, 65 insertions, 23 deletions
@@ -14,5 +14,7 @@ build _yaml.so README.pdf .ruamel +*$py.class convert cmd +TODO.rst diff --git a/__init__.py b/__init__.py index 112d947..532d2b1 100644 --- a/__init__.py +++ b/__init__.py @@ -9,7 +9,7 @@ from __future__ import absolute_import _package_data = dict( full_package_name="ruamel.yaml", - version_info=(0, 10, 15), + version_info=(0, 10, 16), author="Anthon van der Neut", author_email="a.van.der.neut@ruamel.eu", description="ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order", # NOQA @@ -39,7 +39,8 @@ _package_data = dict( "Programming Language :: Python :: Implementation :: Jython", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Markup" - ] + ], + windows_wheels=True, ) diff --git a/representer.py b/representer.py index 2016471..ae8f3b0 100644 --- a/representer.py +++ b/representer.py @@ -834,9 +834,13 @@ RoundTripRepresenter.add_representer(CommentedSeq, RoundTripRepresenter.add_representer(CommentedMap, RoundTripRepresenter.represent_dict) -RoundTripRepresenter.add_representer( - CommentedOrderedMap, - RoundTripRepresenter.represent_ordereddict) +RoundTripRepresenter.add_representer(CommentedOrderedMap, + RoundTripRepresenter.represent_ordereddict) + +if sys.version_info >= (2, 7): + import collections + RoundTripRepresenter.add_representer(collections.OrderedDict, + RoundTripRepresenter.represent_ordereddict) RoundTripRepresenter.add_representer(CommentedSet, RoundTripRepresenter.represent_set) @@ -3,20 +3,26 @@ from __future__ import print_function -if __name__ != '__main__': - raise NotImplementedError('should never include setup.py') - -# # definitions - -full_package_name = None - # # __init__.py parser import sys +import os import platform from _ast import * # NOQA from ast import parse +from setuptools import setup, Extension, Distribution # NOQA +from setuptools.command import install_lib + +if __name__ != '__main__': + raise NotImplementedError('should never include setup.py') + +# # definitions + +full_package_name = None + +if __name__ != '__main__': + raise NotImplementedError('should never include setup.py') if sys.version_info < (3, ): string_type = basestring @@ -159,12 +165,6 @@ exclude_files = [ 'setup.py', ] -# # imports -import os - -from setuptools import setup, Extension, Distribution # NOQA -from setuptools.command import install_lib - # # helper def _check_convert_version(tup): @@ -177,7 +177,7 @@ def _check_convert_version(tup): if isinstance(x, int): nr_digits += 1 if nr_digits > 2: - raise ValueError("too many consecutive digits " + ret_val) + raise ValueError("too many consecutive digits after " + ret_val) ret_val += next_sep + str(x) next_sep = '.' continue @@ -186,7 +186,7 @@ def _check_convert_version(tup): if first_letter in 'abcr': if post_dev: raise ValueError("release level specified after " - "post/dev:" + x) + "post/dev: " + x) nr_digits = 0 ret_val += 'rc' if first_letter == 'r' else first_letter elif first_letter in 'pd': @@ -195,6 +195,9 @@ def _check_convert_version(tup): ret_val += '.post' if first_letter == 'p' else '.dev' else: raise ValueError('First letter of "' + x + '" not recognised') + # .dev and .post need a number otherwise setuptools normalizes and complains + if nr_digits == 1 and post_dev: + ret_val += '0' return ret_val @@ -513,7 +516,7 @@ class NameSpacePackager(object): return None if platform.python_implementation() == 'Jython': return None - if sys.platform == "win32": + if sys.platform == "win32" and not self._pkg_data.get('win32bin'): return None import tempfile import shutil @@ -621,7 +624,7 @@ def main(): package_data=nsp.package_data, ext_modules=nsp.ext_modules, ) - if '--version' not in sys.argv or '--verbose' in sys.argv: + if '--version' not in sys.argv and '--verbose' in sys.argv: for k in sorted(kw): v = kw[k] print(k, '->', v) diff --git a/test/test_yaml.py b/test/test_yaml.py index 50c9fa1..1433820 100644 --- a/test/test_yaml.py +++ b/test/test_yaml.py @@ -5,6 +5,7 @@ from __future__ import print_function various test cases for YAML files """ +import sys import pytest import platform @@ -39,6 +40,36 @@ class TestYAML: - d: 4 """) + @pytest.mark.skipif(sys.version_info < (2, 7), reason="collections not available") + def test_dump_collections_ordereddict(self): + from collections import OrderedDict + # OrderedDict mapped to !!omap + x = OrderedDict([('a', 1), ('b', 2)]) + res = ruamel.yaml.dump(x, + Dumper=ruamel.yaml.RoundTripDumper, + default_flow_style=False) + assert res == dedent(""" + !!omap + - a: 1 + - b: 2 + """) + + @pytest.mark.skipif(sys.version_info >= (3, 0) or \ + platform.python_implementation() != "CPython", + reason="ruamel.yaml not available") + def test_dump_ruamel_ordereddict(self): + from ruamel.ordereddict import ordereddict + # OrderedDict mapped to !!omap + x = ordereddict([('a', 1), ('b', 2)]) + res = ruamel.yaml.dump(x, + Dumper=ruamel.yaml.RoundTripDumper, + default_flow_style=False) + assert res == dedent(""" + !!omap + - a: 1 + - b: 2 + """) + def test_CommentedSet(self): from ruamel.yaml.constructor import CommentedSet s = CommentedSet(['a', 'b', 'c']) @@ -1,5 +1,6 @@ [tox] -envlist = py27,py35,py34,py33,py26,pypy,jython +# envlist = pep8,py35,py27,py34,py33,py26,pypy,jython +envlist = py35,py27,py34,py33,py26,pypy,jython [testenv] commands = |