Hello community,
here is the log from the commit of package python-ruamel.yaml for openSUSE:Factory checked in at 2018-09-03 10:34:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ruamel.yaml (Old)
and /work/SRC/openSUSE:Factory/.python-ruamel.yaml.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ruamel.yaml"
Mon Sep 3 10:34:33 2018 rev:8 rq:632477 version:0.15.64
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ruamel.yaml/python-ruamel.yaml.changes 2018-08-29 12:26:48.207607117 +0200
+++ /work/SRC/openSUSE:Factory/.python-ruamel.yaml.new/python-ruamel.yaml.changes 2018-09-03 10:34:36.612593201 +0200
@@ -1,0 +2,8 @@
+Fri Aug 31 10:53:13 UTC 2018 - Ondřej Súkup
+
+- update to 0.15.64
+ * support round-trip of tagged sequences: !Arg [a, {b: 1}]
+ * fix issue when roundtripping floats starting with a dot such as .5
+ * C based reader/scanner & emitter now allow setting of 1.2 as YAML version
+
+-------------------------------------------------------------------
Old:
----
ruamel.yaml-0.15.61.tar.gz
New:
----
ruamel.yaml-0.15.64.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ruamel.yaml.spec ++++++
--- /var/tmp/diff_new_pack.vhfHhE/_old 2018-09-03 10:34:37.176594655 +0200
+++ /var/tmp/diff_new_pack.vhfHhE/_new 2018-09-03 10:34:37.180594665 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-ruamel.yaml
-Version: 0.15.61
+Version: 0.15.64
Release: 0
Summary: Python YAML parser
License: MIT
++++++ ruamel.yaml-0.15.61.tar.gz -> ruamel.yaml-0.15.64.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/CHANGES new/ruamel.yaml-0.15.64/CHANGES
--- old/ruamel.yaml-0.15.61/CHANGES 2018-08-23 07:03:18.000000000 +0200
+++ new/ruamel.yaml-0.15.64/CHANGES 2018-08-30 21:27:42.000000000 +0200
@@ -1,14 +1,24 @@
+[0, 15, 64]: 2018-08-30
+ - support round-trip of tagged sequences: ``!Arg [a, {b: 1}]``
+ - single entry mappings in flow sequences now written by default without quotes
+ set ``yaml.brace_single_entry_mapping_in_flow_sequence=True`` to force
+ getting ``[a, {b: 1}, {c: {d: 2}}]`` instead of the default ``[a, b: 1, c: {d: 2}]``
+ - fix issue when roundtripping floats starting with a dot such as ``.5``
+ (reported by `Harrison Gregg https://bitbucket.org/HarrisonGregg/`__)
+
+[0, 15, 63]: 2018-08-29
+ - small fix only necessary for Windows users that don't use wheels.
+
+[0, 15, 62]: 2018-08-29
+ - C based reader/scanner & emitter now allow setting of 1.2 as YAML version.
+ ** The loading/dumping is still YAML 1.1 code**, so use the common subset of
+ YAML 1.2 and 1.1 (reported by `Ge Yang https://bitbucket.org/yangge/`__)
+
[0, 15, 61]: 2018-08-23
- support for round-tripping folded style scalars (initially requested
by `Johnathan Viduchinsky https://bitbucket.org/johnathanvidu/`__)
- update of C code
- speed up of scanning (~30% depending on the input)
-
-[0, 16, 0]: 2018-08-23
- - initial support for round-tripping folded style scalars (initially requested
- by `Johnathan Viduchinsky https://bitbucket.org/johnathanvidu/`__)
- - update of C code
- - speed up of scanning (~30% depending on the input)
[0, 15, 60]: 2018-08-18
- cleanup for mypy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/PKG-INFO new/ruamel.yaml-0.15.64/PKG-INFO
--- old/ruamel.yaml-0.15.61/PKG-INFO 2018-08-23 07:12:28.000000000 +0200
+++ new/ruamel.yaml-0.15.64/PKG-INFO 2018-08-30 21:29:22.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: ruamel.yaml
-Version: 0.15.61
+Version: 0.15.64
Summary: ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order
Home-page: https://bitbucket.org/ruamel/yaml
Author: Anthon van der Neut
@@ -12,8 +12,8 @@
``ruamel.yaml`` is a YAML 1.2 loader/dumper package for Python.
- :version: 0.15.61
- :updated: 2018-08-23
+ :version: 0.15.64
+ :updated: 2018-08-30
:documentation: http://yaml.readthedocs.io
:repository: https://bitbucket.org/ruamel/
:pypi: https://pypi.org/project/ruamel.yaml/
@@ -62,6 +62,22 @@
.. should insert NEXT: at the beginning of line for next key (with empty line)
+ 0.15.64 (2018-08-30):
+ - support round-trip of tagged sequences: ``!Arg [a, {b: 1}]``
+ - single entry mappings in flow sequences now written by default without quotes
+ set ``yaml.brace_single_entry_mapping_in_flow_sequence=True`` to force
+ getting ``[a, {b: 1}, {c: {d: 2}}]`` instead of the default ``[a, b: 1, c: {d: 2}]``
+ - fix issue when roundtripping floats starting with a dot such as ``.5``
+ (reported by `Harrison Gregg https://bitbucket.org/HarrisonGregg/`__)
+
+ 0.15.63 (2018-08-29):
+ - small fix only necessary for Windows users that don't use wheels.
+
+ 0.15.62 (2018-08-29):
+ - C based reader/scanner & emitter now allow setting of 1.2 as YAML version.
+ ** The loading/dumping is still YAML 1.1 code**, so use the common subset of
+ YAML 1.2 and 1.1 (reported by `Ge Yang https://bitbucket.org/yangge/`__)
+
0.15.61 (2018-08-23):
- support for round-tripping folded style scalars (initially requested
by `Johnathan Viduchinsky https://bitbucket.org/johnathanvidu/`__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/README.rst new/ruamel.yaml-0.15.64/README.rst
--- old/ruamel.yaml-0.15.61/README.rst 2018-08-23 07:03:18.000000000 +0200
+++ new/ruamel.yaml-0.15.64/README.rst 2018-08-30 21:27:42.000000000 +0200
@@ -4,8 +4,8 @@
``ruamel.yaml`` is a YAML 1.2 loader/dumper package for Python.
-:version: 0.15.61
-:updated: 2018-08-23
+:version: 0.15.64
+:updated: 2018-08-30
:documentation: http://yaml.readthedocs.io
:repository: https://bitbucket.org/ruamel/
:pypi: https://pypi.org/project/ruamel.yaml/
@@ -54,6 +54,22 @@
.. should insert NEXT: at the beginning of line for next key (with empty line)
+0.15.64 (2018-08-30):
+ - support round-trip of tagged sequences: ``!Arg [a, {b: 1}]``
+ - single entry mappings in flow sequences now written by default without quotes
+ set ``yaml.brace_single_entry_mapping_in_flow_sequence=True`` to force
+ getting ``[a, {b: 1}, {c: {d: 2}}]`` instead of the default ``[a, b: 1, c: {d: 2}]``
+ - fix issue when roundtripping floats starting with a dot such as ``.5``
+ (reported by `Harrison Gregg https://bitbucket.org/HarrisonGregg/`__)
+
+0.15.63 (2018-08-29):
+ - small fix only necessary for Windows users that don't use wheels.
+
+0.15.62 (2018-08-29):
+ - C based reader/scanner & emitter now allow setting of 1.2 as YAML version.
+ ** The loading/dumping is still YAML 1.1 code**, so use the common subset of
+ YAML 1.2 and 1.1 (reported by `Ge Yang https://bitbucket.org/yangge/`__)
+
0.15.61 (2018-08-23):
- support for round-tripping folded style scalars (initially requested
by `Johnathan Viduchinsky https://bitbucket.org/johnathanvidu/`__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/__init__.py new/ruamel.yaml-0.15.64/__init__.py
--- old/ruamel.yaml-0.15.61/__init__.py 2018-08-23 07:03:18.000000000 +0200
+++ new/ruamel.yaml-0.15.64/__init__.py 2018-08-30 21:27:42.000000000 +0200
@@ -7,8 +7,8 @@
_package_data = dict(
full_package_name='ruamel.yaml',
- version_info=(0, 15, 61),
- __version__='0.15.61',
+ version_info=(0, 15, 64),
+ __version__='0.15.64',
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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/constructor.py new/ruamel.yaml-0.15.64/constructor.py
--- old/ruamel.yaml-0.15.61/constructor.py 2018-08-23 07:02:38.000000000 +0200
+++ new/ruamel.yaml-0.15.64/constructor.py 2018-08-30 21:25:59.000000000 +0200
@@ -1031,24 +1031,24 @@
)
if node.style == '|' and isinstance(node.value, text_type):
- pss = LiteralScalarString(node.value)
+ lss = LiteralScalarString(node.value)
if node.comment and node.comment[1]:
- pss.comment = node.comment[1][0] # type: ignore
- return pss
+ lss.comment = node.comment[1][0] # type: ignore
+ return lss
if node.style == '>' and isinstance(node.value, text_type):
- fold_positions = []
- idx = None
+ fold_positions = [] # type: List[int]
+ idx = -1
while True:
- idx = node.value.find('\a', None if idx is None else idx + 1)
+ idx = node.value.find('\a', idx + 1)
if idx < 0:
break
fold_positions.append(idx - len(fold_positions))
- pss = FoldedScalarString(node.value.replace('\a', ''))
+ fss = FoldedScalarString(node.value.replace('\a', ''))
if node.comment and node.comment[1]:
- pss.comment = node.comment[1][0] # type: ignore
+ fss.comment = node.comment[1][0] # type: ignore
if fold_positions:
- pss.fold_pos = fold_positions
- return pss
+ fss.fold_pos = fold_positions # type: ignore
+ return fss
elif bool(self._preserve_quotes) and isinstance(node.value, text_type):
if node.style == "'":
return SingleQuotedScalarString(node.value)
@@ -1561,6 +1561,17 @@
data2.yaml_set_tag(node.tag)
yield data2
return
+ elif isinstance(node, SequenceNode):
+ data3 = CommentedSeq()
+ data3._yaml_set_line_col(node.start_mark.line, node.start_mark.column)
+ if node.flow_style is True:
+ data3.fa.set_flow_style()
+ elif node.flow_style is False:
+ data3.fa.set_block_style()
+ data3.yaml_set_tag(node.tag)
+ yield data3
+ data3.extend(self.construct_sequence(node))
+ return
except: # NOQA
pass
raise ConstructorError(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/emitter.py new/ruamel.yaml-0.15.64/emitter.py
--- old/ruamel.yaml-0.15.61/emitter.py 2018-08-23 01:54:12.000000000 +0200
+++ new/ruamel.yaml-0.15.64/emitter.py 2018-08-30 21:23:54.000000000 +0200
@@ -111,9 +111,10 @@
block_seq_indent=None,
top_level_colon_align=None,
prefix_colon=None,
+ brace_single_entry_mapping_in_flow_sequence=None,
dumper=None,
):
- # type: (StreamType, Any, Optional[int], Optional[int], Optional[bool], Any, Optional[int], Optional[bool], Any, Any) -> None # NOQA
+ # type: (StreamType, Any, Optional[int], Optional[int], Optional[bool], Any, Optional[int], Optional[bool], Any, Optional[bool], Any) -> None # NOQA
self.dumper = dumper
if self.dumper is not None and getattr(self.dumper, '_emitter', None) is None:
self.dumper._emitter = self
@@ -136,8 +137,9 @@
self.indents = Indents()
self.indent = None # type: Optional[int]
- # Flow level.
- self.flow_level = 0
+ # flow_context is an expanding/shrinking list consisting of '{' and '['
+ # for each unclosed flow context. If empty list that means block context
+ self.flow_context = [] # type: List[Text]
# Contexts.
self.root_context = False
@@ -162,6 +164,10 @@
# colon handling
self.colon = u':'
self.prefixed_colon = self.colon if prefix_colon is None else prefix_colon + self.colon
+ # single entry mappings in flow sequence
+ self.brace_single_entry_mapping_in_flow_sequence = (
+ brace_single_entry_mapping_in_flow_sequence
+ ) # NOQA
# Formatting details.
self.canonical = canonical
@@ -222,6 +228,11 @@
except AttributeError:
return self # cyaml
+ @property
+ def flow_level(self):
+ # type: () -> int
+ return len(self.flow_context)
+
def dispose(self):
# type: () -> None
# Reset the state attributes (to clear self-references)
@@ -421,7 +432,7 @@
or self.event.flow_style
or self.check_empty_mapping()
):
- self.expect_flow_mapping()
+ self.expect_flow_mapping(single=self.event.nr_items == 1)
else:
self.expect_block_mapping()
else:
@@ -448,14 +459,15 @@
ind = self.indents.seq_flow_align(self.best_sequence_indent, self.column)
self.write_indicator(u' ' * ind + u'[', True, whitespace=True)
self.increase_indent(flow=True, sequence=True)
- self.flow_level += 1
+ self.flow_context.append('[')
self.state = self.expect_first_flow_sequence_item
def expect_first_flow_sequence_item(self):
# type: () -> None
if isinstance(self.event, SequenceEndEvent):
self.indent = self.indents.pop()
- self.flow_level -= 1
+ popped = self.flow_context.pop()
+ assert popped == '['
self.write_indicator(u']', False)
if self.event.comment and self.event.comment[0]:
# eol comment on empty flow sequence
@@ -473,7 +485,8 @@
# type: () -> None
if isinstance(self.event, SequenceEndEvent):
self.indent = self.indents.pop()
- self.flow_level -= 1
+ popped = self.flow_context.pop()
+ assert popped == '['
if self.canonical:
self.write_indicator(u',', False)
self.write_indent()
@@ -493,11 +506,21 @@
# Flow mapping handlers.
- def expect_flow_mapping(self):
- # type: () -> None
+ def expect_flow_mapping(self, single=False):
+ # type: (Optional[bool]) -> None
ind = self.indents.seq_flow_align(self.best_sequence_indent, self.column)
- self.write_indicator(u' ' * ind + u'{', True, whitespace=True)
- self.flow_level += 1
+ map_init = u'{'
+ if (
+ single
+ and self.flow_level
+ and self.flow_context[-1] == '['
+ and not self.canonical
+ and not self.brace_single_entry_mapping_in_flow_sequence
+ ):
+ # single map item with flow context no curly braces necessary
+ map_init = u''
+ self.write_indicator(u' ' * ind + map_init, True, whitespace=True)
+ self.flow_context.append(map_init)
self.increase_indent(flow=True, sequence=False)
self.state = self.expect_first_flow_mapping_key
@@ -505,7 +528,8 @@
# type: () -> None
if isinstance(self.event, MappingEndEvent):
self.indent = self.indents.pop()
- self.flow_level -= 1
+ popped = self.flow_context.pop()
+ assert popped == '{' # empty flow mapping
self.write_indicator(u'}', False)
if self.event.comment and self.event.comment[0]:
# eol comment on empty mapping
@@ -528,11 +552,13 @@
# if self.event.comment and self.event.comment[1]:
# self.write_pre_comment(self.event)
self.indent = self.indents.pop()
- self.flow_level -= 1
+ popped = self.flow_context.pop()
+ assert popped in [u'{', u'']
if self.canonical:
self.write_indicator(u',', False)
self.write_indent()
- self.write_indicator(u'}', False)
+ if popped != u'':
+ self.write_indicator(u'}', False)
if self.event.comment and self.event.comment[0]:
# eol comment on flow mapping, never reached on empty mappings
self.write_post_comment(self.event)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/events.py new/ruamel.yaml-0.15.64/events.py
--- old/ruamel.yaml-0.15.61/events.py 2018-08-04 23:35:00.000000000 +0200
+++ new/ruamel.yaml-0.15.64/events.py 2018-08-30 21:25:26.000000000 +0200
@@ -46,7 +46,7 @@
class CollectionStartEvent(NodeEvent):
- __slots__ = 'tag', 'implicit', 'flow_style'
+ __slots__ = 'tag', 'implicit', 'flow_style', 'nr_items'
def __init__(
self,
@@ -57,12 +57,14 @@
end_mark=None,
flow_style=None,
comment=None,
+ nr_items=None,
):
- # type: (Any, Any, Any, Any, Any, Any, Any) -> None
+ # type: (Any, Any, Any, Any, Any, Any, Any, Optional[int]) -> None
NodeEvent.__init__(self, anchor, start_mark, end_mark, comment)
self.tag = tag
self.implicit = implicit
self.flow_style = flow_style
+ self.nr_items = nr_items
class CollectionEndEvent(Event):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/ext/emitter.c new/ruamel.yaml-0.15.64/ext/emitter.c
--- old/ruamel.yaml-0.15.61/ext/emitter.c 2018-08-21 08:00:15.000000000 +0200
+++ new/ruamel.yaml-0.15.64/ext/emitter.c 2018-08-29 13:14:54.000000000 +0200
@@ -547,10 +547,16 @@
* Expect DOCUMENT-START or STREAM-END.
*/
+/* assume 2 digits + . + 2 digits max and NUL*/
+#define VERSION_BUF_LEN 50
+
static int
yaml_emitter_emit_document_start(yaml_emitter_t *emitter,
yaml_event_t *event, int first)
{
+ char version_buf[VERSION_BUF_LEN];
+ yaml_version_directive_t vdp;
+
if (event->type == YAML_DOCUMENT_START_EVENT)
{
yaml_tag_directive_t default_tag_directives[] = {
@@ -602,7 +608,10 @@
implicit = 0;
if (!yaml_emitter_write_indicator(emitter, "%YAML", 1, 0, 0))
return 0;
- if (!yaml_emitter_write_indicator(emitter, "1.1", 1, 0, 0))
+ /* if (!yaml_emitter_write_indicator(emitter, "1.1", 1, 0, 0)) */
+ vdp = *event->data.document_start.version_directive;
+ sprintf(version_buf, "%d.%d", vdp.major, vdp.minor);
+ if (!yaml_emitter_write_indicator(emitter, version_buf, 1, 0, 0))
return 0;
if (!yaml_emitter_write_indent(emitter))
return 0;
@@ -1333,7 +1342,8 @@
yaml_emitter_analyze_version_directive(yaml_emitter_t *emitter,
yaml_version_directive_t version_directive)
{
- if (version_directive.major != 1 || version_directive.minor != 1) {
+ if (version_directive.major != 1 || (
+ version_directive.minor != 1 && version_directive.minor != 2) ) {
return yaml_emitter_set_emitter_error(emitter,
"incompatible %YAML directive");
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/ext/parser.c new/ruamel.yaml-0.15.64/ext/parser.c
--- old/ruamel.yaml-0.15.61/ext/parser.c 2018-08-21 08:01:59.000000000 +0200
+++ new/ruamel.yaml-0.15.64/ext/parser.c 2018-08-29 12:03:08.000000000 +0200
@@ -1265,7 +1265,10 @@
goto error;
}
if (token->data.version_directive.major != 1
- || token->data.version_directive.minor != 1) {
+ || (token->data.version_directive.minor != 1
+ && token->data.version_directive.minor != 2
+ )
+ ) {
yaml_parser_set_parser_error(parser,
"found incompatible YAML document", token->start_mark);
goto error;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/main.py new/ruamel.yaml-0.15.64/main.py
--- old/ruamel.yaml-0.15.61/main.py 2018-08-21 06:56:35.000000000 +0200
+++ new/ruamel.yaml-0.15.64/main.py 2018-08-30 21:15:48.000000000 +0200
@@ -18,7 +18,7 @@
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 StringIO, BytesIO, with_metaclass, PY3, nprint
from ruamel.yaml.resolver import VersionedResolver, Resolver # NOQA
from ruamel.yaml.representer import (
BaseRepresenter,
@@ -158,12 +158,14 @@
self.tags = None
self.default_style = None
self.top_level_block_style_scalar_no_indent_error_1_1 = False
+ # [a, b: 1, c: {d: 2}] vs. [a, {b: 1}, {c: {d: 2}}]
+ self.brace_single_entry_mapping_in_flow_sequence = False
@property
def reader(self):
# type: () -> Any
try:
- return self._reader
+ return self._reader # type: ignore
except AttributeError:
self._reader = self.Reader(None, loader=self)
return self._reader
@@ -172,7 +174,7 @@
def scanner(self):
# type: () -> Any
try:
- return self._scanner
+ return self._scanner # type: ignore
except AttributeError:
self._scanner = self.Scanner(loader=self)
return self._scanner
@@ -239,6 +241,7 @@
allow_unicode=self.allow_unicode,
line_break=self.line_break,
prefix_colon=self.prefix_colon,
+ brace_single_entry_mapping_in_flow_sequence=self.brace_single_entry_mapping_in_flow_sequence, # NOQA
dumper=self,
)
setattr(self, attr, _emitter)
@@ -323,11 +326,11 @@
finally:
parser.dispose()
try:
- self._reader.reset_reader() # type: ignore
+ self._reader.reset_reader()
except AttributeError:
pass
try:
- self._scanner.reset_scanner() # type: ignore
+ self._scanner.reset_scanner()
except AttributeError:
pass
@@ -355,11 +358,11 @@
finally:
parser.dispose()
try:
- self._reader.reset_reader() # type: ignore
+ self._reader.reset_reader()
except AttributeError:
pass
try:
- self._scanner.reset_scanner() # type: ignore
+ self._scanner.reset_scanner()
except AttributeError:
pass
@@ -653,11 +656,11 @@
finally:
parser.dispose()
try:
- self._reader.reset_reader() # type: ignore
+ self._reader.reset_reader()
except AttributeError:
pass
try:
- self._scanner.reset_scanner() # type: ignore
+ self._scanner.reset_scanner()
except AttributeError:
pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/representer.py new/ruamel.yaml-0.15.64/representer.py
--- old/ruamel.yaml-0.15.61/representer.py 2018-08-23 01:55:09.000000000 +0200
+++ new/ruamel.yaml-0.15.64/representer.py 2018-08-30 20:53:40.000000000 +0200
@@ -788,13 +788,13 @@
elif data._exp is None:
# no exponent, "normal" dot
prec = data._prec
- if prec < 1:
- prec = 1
ms = data._m_sign if data._m_sign else ""
# -1 for the dot
value = u'{}{:0{}.{}f}'.format(
ms, abs(data), data._width - len(ms), data._width - prec - 1
)
+ if prec == 0 or (prec == 1 and ms != ""):
+ value = value.replace(u'0.', u'.')
while len(value) < data._width:
value += u'0'
else:
@@ -1103,6 +1103,21 @@
tag = u'tag:yaml.org,2002:map'
return self.represent_mapping(tag, data)
+ def represent_list(self, data):
+ # type: (Any) -> Any
+ try:
+ t = data.tag.value
+ except AttributeError:
+ t = None
+ if t:
+ if t.startswith('!!'):
+ tag = 'tag:yaml.org,2002:' + t[2:]
+ else:
+ tag = t
+ else:
+ tag = u'tag:yaml.org,2002:seq'
+ return self.represent_sequence(tag, data)
+
def represent_datetime(self, data):
# type: (Any) -> Any
inter = 'T' if data._yaml['t'] else ' '
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/resolver.py new/ruamel.yaml-0.15.64/resolver.py
--- old/ruamel.yaml-0.15.61/resolver.py 2018-08-18 08:34:28.000000000 +0200
+++ new/ruamel.yaml-0.15.64/resolver.py 2018-08-30 20:52:08.000000000 +0200
@@ -38,7 +38,7 @@
RegExp(u'''^(?:
[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+]?[0-9]+)?
|[-+]?(?:[0-9][0-9_]*)(?:[eE][-+]?[0-9]+)
- |\\.[0-9_]+(?:[eE][-+][0-9]+)?
+ |[-+]?\\.[0-9_]+(?:[eE][-+][0-9]+)?
|[-+]?\\.(?:inf|Inf|INF)
|\\.(?:nan|NaN|NAN))$''', re.X),
list(u'-+0123456789.')),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/ruamel.yaml.egg-info/PKG-INFO new/ruamel.yaml-0.15.64/ruamel.yaml.egg-info/PKG-INFO
--- old/ruamel.yaml-0.15.61/ruamel.yaml.egg-info/PKG-INFO 2018-08-23 07:12:27.000000000 +0200
+++ new/ruamel.yaml-0.15.64/ruamel.yaml.egg-info/PKG-INFO 2018-08-30 21:29:21.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: ruamel.yaml
-Version: 0.15.61
+Version: 0.15.64
Summary: ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order
Home-page: https://bitbucket.org/ruamel/yaml
Author: Anthon van der Neut
@@ -12,8 +12,8 @@
``ruamel.yaml`` is a YAML 1.2 loader/dumper package for Python.
- :version: 0.15.61
- :updated: 2018-08-23
+ :version: 0.15.64
+ :updated: 2018-08-30
:documentation: http://yaml.readthedocs.io
:repository: https://bitbucket.org/ruamel/
:pypi: https://pypi.org/project/ruamel.yaml/
@@ -62,6 +62,22 @@
.. should insert NEXT: at the beginning of line for next key (with empty line)
+ 0.15.64 (2018-08-30):
+ - support round-trip of tagged sequences: ``!Arg [a, {b: 1}]``
+ - single entry mappings in flow sequences now written by default without quotes
+ set ``yaml.brace_single_entry_mapping_in_flow_sequence=True`` to force
+ getting ``[a, {b: 1}, {c: {d: 2}}]`` instead of the default ``[a, b: 1, c: {d: 2}]``
+ - fix issue when roundtripping floats starting with a dot such as ``.5``
+ (reported by `Harrison Gregg https://bitbucket.org/HarrisonGregg/`__)
+
+ 0.15.63 (2018-08-29):
+ - small fix only necessary for Windows users that don't use wheels.
+
+ 0.15.62 (2018-08-29):
+ - C based reader/scanner & emitter now allow setting of 1.2 as YAML version.
+ ** The loading/dumping is still YAML 1.1 code**, so use the common subset of
+ YAML 1.2 and 1.1 (reported by `Ge Yang https://bitbucket.org/yangge/`__)
+
0.15.61 (2018-08-23):
- support for round-tripping folded style scalars (initially requested
by `Johnathan Viduchinsky https://bitbucket.org/johnathanvidu/`__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/scalarstring.py new/ruamel.yaml-0.15.64/scalarstring.py
--- old/ruamel.yaml-0.15.61/scalarstring.py 2018-08-23 01:58:18.000000000 +0200
+++ new/ruamel.yaml-0.15.64/scalarstring.py 2018-08-25 17:39:14.000000000 +0200
@@ -13,6 +13,8 @@
'FoldedScalarString',
'SingleQuotedScalarString',
'DoubleQuotedScalarString',
+ # PreservedScalarString is the old name, as it was the first to be preserved on rt,
+ # use LiteralScalarString instead
'PreservedScalarString',
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/serializer.py new/ruamel.yaml-0.15.64/serializer.py
--- old/ruamel.yaml-0.15.61/serializer.py 2018-08-17 07:53:52.000000000 +0200
+++ new/ruamel.yaml-0.15.64/serializer.py 2018-08-30 08:40:19.000000000 +0200
@@ -225,6 +225,7 @@
implicit,
flow_style=node.flow_style,
comment=node.comment,
+ nr_items=len(node.value),
)
)
for key, value in node.value:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.61/tokens.py new/ruamel.yaml-0.15.64/tokens.py
--- old/ruamel.yaml-0.15.61/tokens.py 2018-08-12 17:14:23.000000000 +0200
+++ new/ruamel.yaml-0.15.64/tokens.py 2018-08-25 20:10:12.000000000 +0200
@@ -1,8 +1,11 @@
# # header
# coding: utf-8
+from __future__ import unicode_literals
+
if False: # MYPY
- from typing import Any, Dict, Optional, List # NOQA
+ from typing import Text, Any, Dict, Optional, List # NOQA
+ from .error import StreamMark # NOQA
SHOWLINES = True
@@ -11,7 +14,7 @@
__slots__ = 'start_mark', 'end_mark', '_comment'
def __init__(self, start_mark, end_mark):
- # type: (Any, Any) -> None
+ # type: (StreamMark, StreamMark) -> None
self.start_mark = start_mark
self.end_mark = end_mark
@@ -21,17 +24,17 @@
# hasattr('self', key)]
attributes = [key for key in self.__slots__ if not key.endswith('_mark')]
attributes.sort()
- arguments = u', '.join([u'%s=%r' % (key, getattr(self, key)) for key in attributes])
+ arguments = ', '.join(['%s=%r' % (key, getattr(self, key)) for key in attributes])
if SHOWLINES:
try:
- arguments += u', line: ' + str(self.start_mark.line)
+ arguments += ', line: ' + str(self.start_mark.line)
except: # NOQA
pass
try:
- arguments += u', comment: ' + str(self._comment)
+ arguments += ', comment: ' + str(self._comment)
except: # NOQA
pass
- return u'{}({})'.format(self.__class__.__name__, arguments)
+ return '{}({})'.format(self.__class__.__name__, arguments)
def add_post_comment(self, comment):
# type: (Any) -> None
@@ -259,10 +262,10 @@
def __repr__(self):
# type: () -> Any
- v = u'{!r}'.format(self.value)
+ v = '{!r}'.format(self.value)
if SHOWLINES:
try:
- v += u', line: ' + str(self.start_mark.line)
+ v += ', line: ' + str(self.start_mark.line)
except: # NOQA
pass
return 'CommentToken({})'.format(v)