summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.hgignore2
-rw-r--r--__init__.py5
-rw-r--r--representer.py10
-rw-r--r--setup.py37
-rw-r--r--test/test_yaml.py31
-rw-r--r--tox.ini3
6 files changed, 65 insertions, 23 deletions
diff --git a/.hgignore b/.hgignore
index 982dde2..27b72c9 100644
--- a/.hgignore
+++ b/.hgignore
@@ -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)
diff --git a/setup.py b/setup.py
index 4e9407b..096b984 100644
--- a/setup.py
+++ b/setup.py
@@ -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'])
diff --git a/tox.ini b/tox.ini
index 7481b8c..5470f9f 100644
--- a/tox.ini
+++ b/tox.ini
@@ -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 =