diff options
-rw-r--r-- | CHANGES | 178 | ||||
-rw-r--r-- | README.rst | 3 | ||||
-rw-r--r-- | __init__.py | 7 | ||||
-rw-r--r-- | compat.py | 12 | ||||
-rw-r--r-- | cyaml.py | 7 | ||||
-rw-r--r-- | dumper.py | 8 | ||||
-rw-r--r-- | emitter.py | 7 | ||||
-rw-r--r-- | error.py | 6 | ||||
-rw-r--r-- | loader.py | 8 | ||||
-rw-r--r-- | main.py | 7 | ||||
-rw-r--r-- | nodes.py | 4 | ||||
-rw-r--r-- | reader.py | 8 | ||||
-rw-r--r-- | resolver.py | 6 | ||||
-rw-r--r-- | scalarstring.py | 5 | ||||
-rw-r--r-- | scanner.py | 5 | ||||
-rw-r--r-- | serializer.py | 7 | ||||
-rw-r--r-- | util.py | 7 |
17 files changed, 247 insertions, 38 deletions
@@ -1,13 +1,185 @@ +0.14.0: 2017-03-22 + - fix Text not available on 3.5.0 and 3.5.1 (reported by Charles Bouchard-Légaré) -0.11.10 2016-05-02 +0.14.0: 2017-03-21 + - updates for mypy --strict + - preparation for moving away from inheritance in Loader and Dumper, calls from e.g. + the Representer to the Serializer.serialize() are now done via the attribute + .serializer.serialize(). Usage of .serialize() outside of Serializer will be + deprecated soon + - some extra tests on main.py functions + +0.13.14: 2017-02-12 + - fix for issue 97: clipped block scalar followed by empty lines and comment + would result in two CommentTokens of which the first was dropped. + (reported by Colm O'Connor) + +0.13.13: 2017-01-28 + - fix for issue 96: prevent insertion of extra empty line if indented mapping entries + are separated by an empty line (reported by Derrick Sawyer) + +0.13.11: 2017-01-23 + - allow ':' in flow style scalars if not followed by space. Also don't + quote such scalar as this is no longer necessary. + - add python 3.6 manylinux wheel to PyPI + +0.13.10: 2017-01-22 + - fix for issue 93, insert spurious blank line before single line comment + between indented sequence elements (reported by Alex) + +0.13.9: 2017-01-18 + - fix for issue 92, wrong import name reported by the-corinthian + +0.13.8: 2017-01-18 + - fix for issue 91, when a compiler is unavailable reported by Maximilian Hils + - fix for deepcopy issue with TimeStamps not preserving 'T', reported on + `StackOverflow Q&A <http://stackoverflow.com/a/41577841/1307905>`_ by + `Quuxplusone <http://stackoverflow.com/users/1424877/quuxplusone>`_ + + +0.13.7: 2016-12-27 + - fix for issue 85, constructor.py importing unicode_literals caused mypy to fail + on 2.7 (reported by Peter Amstutz) + +0.13.6: 2016-12-27 + - fix for issue 83, collections.OrderedDict not representable by SafeRepresenter + (reported by Frazer McLean) + +0.13.5: 2016-12-25 + - fix for issue 84, deepcopy not properly working (reported by Peter Amstutz) + +0.13.4: 2016-12-05 + - another fix for issue 82, change to non-global resolver data broke implicit type + specification + +0.13.3: 2016-12-05 + - fix for issue 82, deepcopy not working (reported by code monk) + +0.13.2: 2016-11-28 + - fix for comments after empty (null) values (reported by dsw2127 and cokelaer) + +0.13.1: 2016-11-22 + - optimisations on memory usage when loading YAML from large files (py3: -50%, py2: -85%) + +0.13.0: 2016-11-20 + - if ``load()`` or ``load_all()`` is called with only a single argument + (stream or string) + a UnsafeLoaderWarning will be issued once. If appropriate you can surpress this + warning by filtering it. Explicitly supplying the ``Loader=ruamel.yaml.Loader`` + argument, will also prevent it from being issued. You should however consider + using ``safe_load()``, ``safe_load_all()`` if your YAML input does not use tags. + - allow adding comments before and after keys (based on + `StackOveflow Q&A <http://stackoverflow.com/a/40705671/1307905>`_ by + `msinn <http://stackoverflow.com/users/7185467/msinn>`_) + +0.12.18: 2016-11-16 + - another fix for numpy (re-reported independently by PaulG & Nathanial Burdic) + +0.12.17: 2016-11-15 + - only the RoundTripLoader included the Resolver that supports YAML 1.2 + now all loaders do (reported by mixmastamyk) + +0.12.16: 2016-11-13 + - allow dot char (and many others) in anchor name + Fix issue 72 (reported by Shalon Wood) + - Slightly smarter behaviour dumping strings when no style is + specified. Single string scalars that start with single quotes + or have newlines now are dumped double quoted: "'abc\nklm'" instead of:: + + '''abc + + klm''' + +0.12.14: 2016-09-21 + - preserve round-trip sequences that are mapping keys + (prompted by stackoverflow question 39595807 from Nowox) + +0.12.13: 2016-09-15 + - Fix for issue #60 representation of CommentedMap with merge + keys incorrect (reported by Tal Liron) + +0.12.11: 2016-09-06 + - Fix issue 58 endless loop in scanning tokens (reported by + Christopher Lambert) + +0.12.10: 2016-09-05 + - Make previous fix depend on unicode char width (32 bit unicode support + is a problem on MacOS reported by David Tagatac) + +0.12.8: 2016-09-05 + - To be ignored Unicode characters were not properly regex matched + (no specific tests, PR by Haraguroicha Hsu) + +0.12.7: 2016-09-03 + - fixing issue 54 empty lines with spaces (reported by Alex Harvey) + +0.12.6: 2016-09-03 + - fixing issue 46 empty lines between top-level keys were gobbled (but + not between sequence elements, nor between keys in netsted mappings + (reported by Alex Harvey) + +0.12.5: 2016-08-20 + - fixing issue 45 preserving datetime formatting (submitted by altuin) + Several formatting parameters are preserved with some normalisation: + - preserve 'T', 't' is replaced by 'T', multiple spaces between date + and time reduced to one. + - optional space before timezone is removed + - still using microseconds, but now rounded (.1234567 -> .123457) + - Z/-5/+01:00 preserved + +0.12.4: 2016-08-19 + - Fix for issue 44: missing preserve_quotes keyword argument (reported + by M. Crusoe) + +0.12.3: 2016-08-17 + - correct 'in' operation for merged CommentedMaps in round-trip mode + (implementation inspired by J.Ngo, but original not working for merges) + - iteration over round-trip loaded mappings, that contain merges. Also + keys(), items(), values() (Py3/Py2) and iterkeys(), iteritems(), + itervalues(), viewkeys(), viewitems(), viewvalues() (Py2) + - reuse of anchor name now generates warning, not an error. Round-tripping such + anchors works correctly. This inherited PyYAML issue was brought to attention + by G. Coddut (and was long standing https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=515634) + suppressing the warning:: + + import warnings + from ruamel.yaml.error import ReusedAnchorWarning + warnings.simplefilter("ignore", ReusedAnchorWarning) + +0.12.2: 2016-08-16 + - minor improvements based on feedback from M. Crusoe + https://bitbucket.org/ruamel/yaml/issues/42/ + +0.12.0: 2016-08-16 + - drop support for Python 2.6 + - include initial Type information (inspired by M. Crusoe) + +0.11.15: 2016-08-07 + - Change to prevent FutureWarning in NumPy, as reported by tgehring + ("comparison to None will result in an elementwise object comparison in the future") + +0.11.14: 2016-07-06 + - fix preserve_quotes missing on original Loaders (as reported + by Leynos, bitbucket issue 38) + +0.11.13: 2016-07-06 + - documentation only, automated linux wheels + +0.11.12: 2016-07-06 + - added support for roundtrip of single/double quoted scalars using: + ruamel.yaml.round_trip_load(stream, preserve_quotes=True) + +0.11.10: 2016-05-02 - added .insert(pos, key, value, comment=None) to CommentedMap -0.11.10 2016-04-19 +0.11.10: 2016-04-19 - indent=2, block_seq_indent=2 works as expected -<To be updated> +0.11.0: 2016-02-18 + - RoundTripLoader loads 1.2 by default (no sexagesimals, 012 octals nor + yes/no/on/off booleans 0.10.11: 2015-09-17 - Fix issue 13: dependency on libyaml to be installed for yaml.h @@ -18,6 +18,9 @@ ChangeLog .. should insert NEXT: at the beginning of line for next key +0.14.1 (2017-03-22): + - fix Text not available on 3.5.0 and 3.5.1 (reported by Charles Bouchard-Légaré) + 0.14.0 (2017-03-21): - updates for mypy --strict - preparation for moving away from inheritance in Loader and Dumper, calls from e.g. diff --git a/__init__.py b/__init__.py index b255c7a..8a21e45 100644 --- a/__init__.py +++ b/__init__.py @@ -10,8 +10,8 @@ from typing import Dict, Any # NOQA _package_data = dict( full_package_name='ruamel.yaml', - version_info=(0, 14, 0), - __version__='0.14.0', + version_info=(0, 14, 1), + __version__='0.14.1', 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 @@ -51,8 +51,7 @@ _package_data = dict( read_the_docs='yaml', many_linux='libyaml-devel', supported=[(2, 7), (3, 3)], # minimum -) # type: Dict[Any, Any] - +) # type: Dict[Any, Any] version_info = _package_data['version_info'] __version__ = _package_data['__version__'] @@ -8,7 +8,8 @@ import sys import os import types -from typing import Any, Dict, Optional, List, Union, BinaryIO, IO, Text, Tuple # NOQA +if sys.version_info >= (3, 5, 2): + from typing import Any, Dict, Optional, List, Union, BinaryIO, IO, Text, Tuple # NOQA try: @@ -94,11 +95,12 @@ else: import cStringIO BytesIO = cStringIO.StringIO -# StreamType = Union[BinaryIO, IO[str], IO[unicode], StringIO] -StreamType = Union[BinaryIO, IO[str], StringIO] +if sys.version_info >= (3, 5, 2): + # StreamType = Union[BinaryIO, IO[str], IO[unicode], StringIO] + StreamType = Union[BinaryIO, IO[str], StringIO] -StreamTextType = Union[Text, StreamType] -VersionType = Union[List[int], str, Tuple[int, int]] + StreamTextType = Union[Text, StreamType] + VersionType = Union[List[int], str, Tuple[int, int]] if PY3: builtins_module = 'builtins' @@ -2,7 +2,8 @@ from __future__ import absolute_import -from typing import Any, Union # NOQA +import sys + from _ruamel_yaml import CParser, CEmitter # type: ignore @@ -11,7 +12,9 @@ from ruamel.yaml.serializer import Serializer from ruamel.yaml.representer import Representer, SafeRepresenter, BaseRepresenter from ruamel.yaml.resolver import Resolver, BaseResolver -from ruamel.yaml.compat import StreamTextType, StreamType, VersionType # NOQA +if sys.version_info >= (3, 5, 2): + from typing import Any, Union # NOQA + from ruamel.yaml.compat import StreamTextType, StreamType, VersionType # NOQA __all__ = ['CBaseLoader', 'CSafeLoader', 'CLoader', 'CBaseDumper', 'CSafeDumper', 'CDumper'] @@ -2,9 +2,7 @@ from __future__ import absolute_import -from typing import Any, Dict, List, Union # NOQA - -from ruamel.yaml.compat import StreamType, VersionType # NOQA +import sys from ruamel.yaml.emitter import Emitter from ruamel.yaml.serializer import Serializer @@ -12,6 +10,10 @@ from ruamel.yaml.representer import Representer, SafeRepresenter, BaseRepresente RoundTripRepresenter from ruamel.yaml.resolver import Resolver, BaseResolver, VersionedResolver +if sys.version_info >= (3, 5, 2): + from typing import Any, Dict, List, Union # NOQA + from ruamel.yaml.compat import StreamType, VersionType # NOQA + __all__ = ['BaseDumper', 'SafeDumper', 'Dumper', 'RoundTripDumper'] @@ -10,14 +10,17 @@ from __future__ import print_function # sequence ::= SEQUENCE-START node* SEQUENCE-END # mapping ::= MAPPING-START (node node)* MAPPING-END -from typing import Any, Dict, List, Union, Text # NOQA +import sys from ruamel.yaml.error import YAMLError from ruamel.yaml.events import * # NOQA from ruamel.yaml.compat import utf8, text_type, PY2, nprint, dbg, DBG_EVENT, \ check_anchorname_char -from ruamel.yaml.compat import StreamType # NOQA + +if sys.version_info >= (3, 5, 2): + from typing import Any, Dict, List, Union, Text # NOQA + from ruamel.yaml.compat import StreamType # NOQA __all__ = ['Emitter', 'EmitterError'] @@ -4,10 +4,14 @@ from __future__ import absolute_import import warnings -from typing import Any, Dict, Optional, List, Text # NOQA +import sys from ruamel.yaml.compat import utf8 +if sys.version_info >= (3, 5, 2): + from typing import Any, Dict, Optional, List, Text # NOQA + + __all__ = [ 'FileMark', 'StringMark', 'CommentMark', 'YAMLError', 'MarkedYAMLError', 'ReusedAnchorWarning', 'UnsafeLoaderWarning', @@ -2,9 +2,7 @@ from __future__ import absolute_import -from typing import Any, Dict, List # NOQA - -from ruamel.yaml.compat import StreamTextType, VersionType # NOQA +import sys from ruamel.yaml.reader import Reader from ruamel.yaml.scanner import Scanner, RoundTripScanner @@ -14,6 +12,10 @@ from ruamel.yaml.constructor import BaseConstructor, SafeConstructor, Constructo RoundTripConstructor from ruamel.yaml.resolver import VersionedResolver +if sys.version_info >= (3, 5, 2): + from typing import Any, Dict, List # NOQA + from ruamel.yaml.compat import StreamTextType, VersionType # NOQA + __all__ = ['BaseLoader', 'SafeLoader', 'Loader', 'RoundTripLoader'] @@ -4,8 +4,7 @@ from __future__ import absolute_import, unicode_literals import warnings - -from typing import List, Set, Dict, Union, Any # NOQA +import sys import ruamel.yaml from ruamel.yaml.error import * # NOQA @@ -17,7 +16,6 @@ from ruamel.yaml.nodes import * # NOQA from ruamel.yaml.loader import BaseLoader, SafeLoader, Loader, RoundTripLoader # NOQA from ruamel.yaml.dumper import BaseDumper, SafeDumper, Dumper, RoundTripDumper # NOQA from ruamel.yaml.compat import StringIO, BytesIO, with_metaclass, PY3 -from ruamel.yaml.compat import StreamType, StreamTextType, VersionType # NOQA from ruamel.yaml.resolver import VersionedResolver, Resolver # NOQA from ruamel.yaml.representer import (BaseRepresenter, SafeRepresenter, Representer, RoundTripRepresenter) @@ -25,6 +23,9 @@ from ruamel.yaml.constructor import (BaseConstructor, SafeConstructor, Construct RoundTripConstructor) from ruamel.yaml.loader import Loader as UnsafeLoader +if sys.version_info >= (3, 5, 2): + from typing import List, Set, Dict, Union, Any # NOQA + from ruamel.yaml.compat import StreamType, StreamTextType, VersionType # NOQA # import io @@ -2,7 +2,9 @@ from __future__ import print_function -from typing import Dict, Any, Text # NOQA +import sys +if sys.version_info >= (3, 5, 2): + from typing import Dict, Any, Text # NOQA class Node(object): @@ -23,11 +23,13 @@ from __future__ import absolute_import import codecs import re -from typing import Any, Dict, Optional, List, Union, Text # NOQA - +import sys from ruamel.yaml.error import YAMLError, FileMark, StringMark from ruamel.yaml.compat import text_type, binary_type, PY3 -from ruamel.yaml.compat import StreamTextType # NOQA + +if sys.version_info >= (3, 5, 2): + from typing import Any, Dict, Optional, List, Union, Text # NOQA + from ruamel.yaml.compat import StreamTextType # NOQA __all__ = ['Reader', 'ReaderError'] diff --git a/resolver.py b/resolver.py index eab1b41..6245216 100644 --- a/resolver.py +++ b/resolver.py @@ -4,11 +4,13 @@ from __future__ import absolute_import import re -from typing import Any, Dict, List, Union # NOQA +import sys +if sys.version_info >= (3, 5, 2): + from typing import Any, Dict, List, Union # NOQA + from ruamel.yaml.compat import string_types, VersionType # NOQA from ruamel.yaml.error import * # NOQA from ruamel.yaml.nodes import * # NOQA -from ruamel.yaml.compat import string_types, VersionType # NOQA __all__ = ['BaseResolver', 'Resolver', 'VersionedResolver'] diff --git a/scalarstring.py b/scalarstring.py index da43bcf..b02ad1d 100644 --- a/scalarstring.py +++ b/scalarstring.py @@ -3,10 +3,13 @@ from __future__ import absolute_import from __future__ import print_function -from typing import Text, Any, Dict, List # NOQA +import sys from ruamel.yaml.compat import text_type +if sys.version_info >= (3, 5, 2): + from typing import Text, Any, Dict, List # NOQA + __all__ = ["ScalarString", "PreservedScalarString", "SingleQuotedScalarString", "DoubleQuotedScalarString"] @@ -30,12 +30,15 @@ from __future__ import print_function, absolute_import, division, unicode_litera # Read comments in the Scanner code for more details. # -from typing import Any, Dict, Optional, List, Union, Text # NOQA +import sys from ruamel.yaml.error import MarkedYAMLError from ruamel.yaml.tokens import * # NOQA from ruamel.yaml.compat import utf8, unichr, PY3, check_anchorname_char +if sys.version_info >= (3, 5, 2): + from typing import Any, Dict, Optional, List, Union, Text # NOQA + __all__ = ['Scanner', 'RoundTripScanner', 'ScannerError'] diff --git a/serializer.py b/serializer.py index 7cac44d..30348f3 100644 --- a/serializer.py +++ b/serializer.py @@ -4,11 +4,10 @@ from __future__ import absolute_import import re -from typing import Any, Dict, Union, Text # NOQA +import sys from ruamel.yaml.error import YAMLError from ruamel.yaml.compat import nprint, DBG_NODE, dbg, string_types -from ruamel.yaml.compat import VersionType # NOQA from ruamel.yaml.events import ( StreamStartEvent, StreamEndEvent, MappingStartEvent, MappingEndEvent, @@ -19,6 +18,10 @@ from ruamel.yaml.nodes import ( MappingNode, ScalarNode, SequenceNode, ) +if sys.version_info >= (3, 5, 2): + from typing import Any, Dict, Union, Text # NOQA + from ruamel.yaml.compat import VersionType # NOQA + __all__ = ['Serializer', 'SerializerError'] @@ -6,10 +6,13 @@ some helper functions that might be generally useful from __future__ import absolute_import, print_function -from typing import Any, Dict, Optional, List, Text # NOQA +import sys from .compat import text_type, binary_type -from .compat import StreamTextType, StringIO # NOQA + +if sys.version_info >= (3, 5, 2): + from typing import Any, Dict, Optional, List, Text # NOQA + from .compat import StreamTextType # NOQA # originally as comment |