[Python-modules-commits] [ruamel.yaml] 02/12: Imported Debian patch 0.10.12-0~pypi2deb
Vincent Bernat
bernat at moszumanska.debian.org
Wed Nov 18 07:57:12 UTC 2015
This is an automated email from the git hooks/post-receive script.
bernat pushed a commit to branch master
in repository ruamel.yaml.
commit bbcab7b0757a74829116f5f8ab6e9f7dbcc6c9f8
Author: Vincent Bernat <bernat at debian.org>
Date: Mon Nov 16 07:07:21 2015 +0000
Imported Debian patch 0.10.12-0~pypi2deb
---
debian/changelog | 6 +
debian/clean | 2 +
debian/compat | 1 +
debian/control | 859 ++++++++++++++++++++++++++++++++++++++++
debian/copyright | 35 ++
debian/python3-ruamel.yaml.docs | 1 +
debian/rules | 7 +
debian/source/format | 1 +
debian/source/options | 1 +
debian/watch | 4 +
10 files changed, 917 insertions(+)
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..ac47f66
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,6 @@
+ruamel.yaml (0.10.12-0~pypi2deb) UNRELEASED; urgency=low
+
+ * Autogenerated by py2dsp v1.20151008
+
+ -- Vincent Bernat <bernat at debian.org> Mon, 16 Nov 2015 07:07:21 +0000
+
diff --git a/debian/clean b/debian/clean
new file mode 100644
index 0000000..c9d360d
--- /dev/null
+++ b/debian/clean
@@ -0,0 +1,2 @@
+
+./ext/_ruamel_yaml.c
\ No newline at end of file
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..e81fd7e
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,859 @@
+Source: ruamel.yaml
+Section: python
+Priority: optional
+Maintainer: Vincent Bernat <bernat at debian.org>
+Build-Depends: debhelper (>= 9), dh-python,
+ cython,
+ cython3,
+ pypy,
+ pypy-setuptools,
+ python-all-dev,
+ python-ruamel.ordereddict,
+ python-setuptools,
+ python3-all-dev,
+ python3-setuptools,
+Standards-Version: 3.9.6
+Homepage: https://bitbucket.org/ruamel/yaml
+
+Package: python-ruamel.yaml
+Architecture: any
+Depends: ${misc:Depends}, ${python:Depends}, ${shlibs:Depends},
+Recommends: ${python:Recommends}
+Suggests: ${python:Suggests}
+XB-Python-Egg-Name: ruamel.yaml
+Description: YAML parser/emitter that supports roundtrip preservation of comments, seq/map fl - Python 2.X
+ ruamel.yaml
+ ===========
+ .
+ Starting with 0.10.7 the package has been reorganise and the
+ commandline utility is in its own package ``ruamel.yaml.cmd`` (so
+ installing ``ruamel.yaml`` doesn't pull in possible irrelevant modules
+ only used in the commandline utility)
+ .
+ ``ruamel.yaml`` is a YAML package for Python. It is a derivative
+ of Kirill Simonov's `PyYAML 3.11 <https://bitbucket.org/xi/pyyaml>`_
+ which supports YAML1.1
+ .
+ Major differences with PyYAML 3.11:
+ .
+ - intergrated Python 2 and 3 sources, running on Python 2.6, 2.7 (CPython,
+ PyPy), 3.3 and 3.4.
+ - round trip mode that **includes comments** (block mode, key ordering kept)
+ - support for simple lists as mapping keys by transformation to tuples
+ - ``!!omap`` generates ordereddict (C) on Python 2, collections.OrderedDict
+ on Python 3, and ``!!omap`` is generated for these types.
+ - some `YAML 1.2 <http://yaml.org/spec/1.2/spec.html>`_ enhancements
+ (``0o`` octal prefix, ``\/`` escape)
+ - pep8 compliance
+ - tox and py.test based testing
+ - Tests whether the C yaml library is installed as well as the header
+ files. That library doesn't generate CommentTokens, so it cannot be used to
+ do round trip editing on comments. It can be used for speeded up normal
+ processing (so you don't need to install ``ruamel.yaml`` and ``PyYaml``).
+ See the section *Optional requirements*.
+ - Basic support for multiline strings with preserved newlines and
+ chomping ( '``|``', '``|+``', '``|-``' ). As this subclasses the string type
+ the information is lost on reassignment. (This might be changed
+ in the future so that the preservation/folding/chomping is part of the
+ parent container, like comments).
+ - RoundTrip preservation of flow style sequences ( 'a: b, c, d') (based
+ on request and test by Anthony Sottile)
+ - anchors names that are hand-crafted (not of the form``idNNN``), are preserved
+ - `merges <http://yaml.org/type/merge.html>`_ in dictionaries are preserved
+ - adding/replacing of comments on block style sequences and mappings
+ with smart column positioning
+ - collection objects (when read in via RoundTripParser) have an ``lc``
+ property that contains line and column info ``lc.line`` and ``lc.col``.
+ Individual positions for mappings and sequences can also be retrieved
+ (``lc.key('a')``, ``lc.value('a')`` resp. ``lc.item(3)``)
+ - preservation of whitelines after block scalars. Contributed by Sam Thursfield.
+ .
+ Round trip including comments
+ =============================
+ .
+ The major motivation for this fork is the round-trip capability for
+ comments. The integration of the sources was just an initial step to
+ make this easier.
+ .
+ adding/replacing comments
+ -------------------------
+ .
+ Starting with version 0.8, you can add/replace comments on block style
+ collections (mappings/sequences resuting in Python dict/list). The basic
+ for for this is::
+ .
+ from __future__ import print_function
+ .
+ import ruamel.yaml
+ .
+ inp = """\
+ abc:
+ - a # comment 1
+ xyz:
+ a: 1 # comment 2
+ b: 2
+ c: 3
+ d: 4
+ e: 5
+ f: 6 # comment 3
+ """
+ .
+ data = ruamel.yaml.load(inp, ruamel.yaml.RoundTripLoader)
+ data['abc'].append('b')
+ data['abc'].yaml_add_eol_comment('comment 4', 1) # takes column of comment 1
+ data['xyz'].yaml_add_eol_comment('comment 5', 'c') # takes column of comment 2
+ data['xyz'].yaml_add_eol_comment('comment 6', 'e') # takes column of comment 3
+ data['xyz'].yaml_add_eol_comment('comment 7', 'd', column=20)
+ .
+ print(ruamel.yaml.dump(data, Dumper=ruamel.yaml.RoundTripDumper), end='')
+ .
+ .. example code add_comment.py
+ .
+ Resulting in::
+ .
+ abc:
+ - a # comment 1
+ - b # comment 4
+ xyz:
+ a: 1 # comment 2
+ b: 2
+ c: 3 # comment 5
+ d: 4 # comment 7
+ e: 5 # comment 6
+ f: 6 # comment 3
+ .
+ .
+ .. example output add_comment.py
+ .
+ .
+ If the comment doesn't start with '#', this will be added. The key is is
+ the element index for list, the actual key for dictionaries. As can be seen
+ from the example, the column to choose for a comment is derived
+ from the previous, next or preceding comment column (picking the first one
+ found).
+ .
+ Config file formats
+ ===================
+ .
+ There are only a few configuration file formats that are easily
+ readable, and editable: JSON, INI/ConfigParser, YAML (XML is to cluttered
+ to be called easily readable).
+ .
+ Unfortunately `JSON <http://www.json.org/>`_ doesn't support comments,
+ and although there are some solutions with pre-processed filtering of
+ comments, there are no libraries that support round trip updating of
+ such commented files.
+ .
+ INI files support comments, and the excellent `ConfigObj
+ <http://www.voidspace.org.uk/python/configobj.html>`_ library by Foord
+ and Larosa even supports round trip editing with comment preservation,
+ nesting of sections and limited lists (within a value). Retrieval of
+ particular value format is explicit (and extensible).
+ .
+ YAML has basic mapping and sequence structures as well support for
+ ordered mappings and sets. It supports scalars are of various types
+ including dates and datetimes (missing in JSON) as a list of
+ YAML has comments, but these are normally thrown away.
+ .
+ Block structured YAML is a clean and very human readable
+ format. By extending the Python YAML parser to support round trip
+ preservation of comments, it makes YAML a very good choice for
+ configuration files that are human readable and editable while at
+ the same time interpretable and modifiable by a program.
+ .
+ Extending
+ =========
+ .
+ There are normally 6 files involved when extending the roundtrip
+ capabilities: the reader, parser, composer and constructor to go from YAML to
+ Python and the resolver, representer, serializer and emitter to go the other
+ way.
+ .
+ Extending involves keeping extra data around for the next process step,
+ eventuallly resulting in a different Python object (subclass or alternative),
+ that should behave like the original, but on the way from Python to YAML
+ generates the original (or at least something much closer).
+ .
+ Smartening
+ ==========
+ .
+ When you use round-tripping, then the complex data you get are
+ already subclasses of the build in types. So you can patch
+ in extra methods or override existing ones. Some methods are already
+ included and you can do::
+ .
+ yaml_str = """\
+ a:
+ - b:
+ c: 42
+ - d:
+ f: 196
+ e:
+ g: 3.14
+ """
+ .
+ .
+ data = yaml.load(yaml_str, Loader=yaml.RoundTripLoader)
+ .
+ assert data.mlget(['a', 1, 'd', 'f'], list_ok=True) == 196
+ .
+ .
+ Examples
+ ========
+ .
+ Basic round trip of parsing YAML to Python objects, modifying
+ and generating YAML::
+ .
+ from __future__ import print_function
+ .
+ import ruamel.yaml
+ .
+ inp = """\
+ # example
+ name:
+ # details
+ family: Smith # very common
+ given: Alice # one of the siblings
+ """
+ .
+ code = ruamel.yaml.load(inp, ruamel.yaml.RoundTripLoader)
+ code['name']['given'] = 'Bob'
+ .
+ print(ruamel.yaml.dump(code, Dumper=ruamel.yaml.RoundTripDumper), end='')
+ .
+ .. example code small.py
+ .
+ Resulting in ::
+ .
+ # example
+ name:
+ # details
+ family: Smith # very common
+ given: Bob # one of the siblings
+ .
+ .
+ .. example output small.py
+ .
+ .
+ YAML handcrafted anchors and references as well as key merging
+ is preserved. The merged keys can transparently be accessed
+ using ``[]`` and ``.get()``::
+ .
+ import ruamel.yaml
+ .
+ inp = """\
+ - &CENTER {x: 1, y: 2}
+ - &LEFT {x: 0, y: 2}
+ - &BIG {r: 10}
+ - &SMALL {r: 1}
+ # All the following maps are equal:
+ # Explicit keys
+ - x: 1
+ y: 2
+ r: 10
+ label: center/big
+ # Merge one map
+ - <<: *CENTER
+ r: 10
+ label: center/big
+ # Merge multiple maps
+ - <<: [*CENTER, *BIG]
+ label: center/big
+ # Override
+ - <<: [*BIG, *LEFT, *SMALL]
+ x: 1
+ label: center/big
+ """
+ .
+ data = ruamel.yaml.load(inp, ruamel.yaml.RoundTripLoader)
+ assert data[7]['y'] == 2
+ .
+ .
+ .. example code anchor_merge.py
+ .
+ .
+ Optional requirements
+ =====================
+ .
+ If you have the C yaml library and headers installed, as well as
+ the header files for your Python executables then you can use the
+ non-roundtrip but faster C loader en emitter.
+ .
+ On Debian systems you should use::
+ .
+ sudo apt-get install libyaml-dev python-dev python3-dev
+ .
+ you can leave out ``python3-dev`` if you don't use python3
+ .
+ For CentOS (7) based systems you should do::
+ .
+ sudo yum install libyaml-devel python-devel
+ .
+ Testing
+ =======
+ .
+ Testing is done using the `tox <https://pypi.python.org/pypi/tox>`_, which
+ uses `virtualenv <https://pypi.python.org/pypi/virtualenv>`_ and
+ `pytest <http://pytest.org/latest/>`_.
+
+Package: python3-ruamel.yaml
+Architecture: any
+Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends},
+Recommends: ${python3:Recommends}
+Suggests: ${python3:Suggests}
+XB-Python-Egg-Name: ruamel.yaml
+Description: YAML parser/emitter that supports roundtrip preservation of comments, seq/map fl
+ ruamel.yaml
+ ===========
+ .
+ Starting with 0.10.7 the package has been reorganise and the
+ commandline utility is in its own package ``ruamel.yaml.cmd`` (so
+ installing ``ruamel.yaml`` doesn't pull in possible irrelevant modules
+ only used in the commandline utility)
+ .
+ ``ruamel.yaml`` is a YAML package for Python. It is a derivative
+ of Kirill Simonov's `PyYAML 3.11 <https://bitbucket.org/xi/pyyaml>`_
+ which supports YAML1.1
+ .
+ Major differences with PyYAML 3.11:
+ .
+ - intergrated Python 2 and 3 sources, running on Python 2.6, 2.7 (CPython,
+ PyPy), 3.3 and 3.4.
+ - round trip mode that **includes comments** (block mode, key ordering kept)
+ - support for simple lists as mapping keys by transformation to tuples
+ - ``!!omap`` generates ordereddict (C) on Python 2, collections.OrderedDict
+ on Python 3, and ``!!omap`` is generated for these types.
+ - some `YAML 1.2 <http://yaml.org/spec/1.2/spec.html>`_ enhancements
+ (``0o`` octal prefix, ``\/`` escape)
+ - pep8 compliance
+ - tox and py.test based testing
+ - Tests whether the C yaml library is installed as well as the header
+ files. That library doesn't generate CommentTokens, so it cannot be used to
+ do round trip editing on comments. It can be used for speeded up normal
+ processing (so you don't need to install ``ruamel.yaml`` and ``PyYaml``).
+ See the section *Optional requirements*.
+ - Basic support for multiline strings with preserved newlines and
+ chomping ( '``|``', '``|+``', '``|-``' ). As this subclasses the string type
+ the information is lost on reassignment. (This might be changed
+ in the future so that the preservation/folding/chomping is part of the
+ parent container, like comments).
+ - RoundTrip preservation of flow style sequences ( 'a: b, c, d') (based
+ on request and test by Anthony Sottile)
+ - anchors names that are hand-crafted (not of the form``idNNN``), are preserved
+ - `merges <http://yaml.org/type/merge.html>`_ in dictionaries are preserved
+ - adding/replacing of comments on block style sequences and mappings
+ with smart column positioning
+ - collection objects (when read in via RoundTripParser) have an ``lc``
+ property that contains line and column info ``lc.line`` and ``lc.col``.
+ Individual positions for mappings and sequences can also be retrieved
+ (``lc.key('a')``, ``lc.value('a')`` resp. ``lc.item(3)``)
+ - preservation of whitelines after block scalars. Contributed by Sam Thursfield.
+ .
+ Round trip including comments
+ =============================
+ .
+ The major motivation for this fork is the round-trip capability for
+ comments. The integration of the sources was just an initial step to
+ make this easier.
+ .
+ adding/replacing comments
+ -------------------------
+ .
+ Starting with version 0.8, you can add/replace comments on block style
+ collections (mappings/sequences resuting in Python dict/list). The basic
+ for for this is::
+ .
+ from __future__ import print_function
+ .
+ import ruamel.yaml
+ .
+ inp = """\
+ abc:
+ - a # comment 1
+ xyz:
+ a: 1 # comment 2
+ b: 2
+ c: 3
+ d: 4
+ e: 5
+ f: 6 # comment 3
+ """
+ .
+ data = ruamel.yaml.load(inp, ruamel.yaml.RoundTripLoader)
+ data['abc'].append('b')
+ data['abc'].yaml_add_eol_comment('comment 4', 1) # takes column of comment 1
+ data['xyz'].yaml_add_eol_comment('comment 5', 'c') # takes column of comment 2
+ data['xyz'].yaml_add_eol_comment('comment 6', 'e') # takes column of comment 3
+ data['xyz'].yaml_add_eol_comment('comment 7', 'd', column=20)
+ .
+ print(ruamel.yaml.dump(data, Dumper=ruamel.yaml.RoundTripDumper), end='')
+ .
+ .. example code add_comment.py
+ .
+ Resulting in::
+ .
+ abc:
+ - a # comment 1
+ - b # comment 4
+ xyz:
+ a: 1 # comment 2
+ b: 2
+ c: 3 # comment 5
+ d: 4 # comment 7
+ e: 5 # comment 6
+ f: 6 # comment 3
+ .
+ .
+ .. example output add_comment.py
+ .
+ .
+ If the comment doesn't start with '#', this will be added. The key is is
+ the element index for list, the actual key for dictionaries. As can be seen
+ from the example, the column to choose for a comment is derived
+ from the previous, next or preceding comment column (picking the first one
+ found).
+ .
+ Config file formats
+ ===================
+ .
+ There are only a few configuration file formats that are easily
+ readable, and editable: JSON, INI/ConfigParser, YAML (XML is to cluttered
+ to be called easily readable).
+ .
+ Unfortunately `JSON <http://www.json.org/>`_ doesn't support comments,
+ and although there are some solutions with pre-processed filtering of
+ comments, there are no libraries that support round trip updating of
+ such commented files.
+ .
+ INI files support comments, and the excellent `ConfigObj
+ <http://www.voidspace.org.uk/python/configobj.html>`_ library by Foord
+ and Larosa even supports round trip editing with comment preservation,
+ nesting of sections and limited lists (within a value). Retrieval of
+ particular value format is explicit (and extensible).
+ .
+ YAML has basic mapping and sequence structures as well support for
+ ordered mappings and sets. It supports scalars are of various types
+ including dates and datetimes (missing in JSON) as a list of
+ YAML has comments, but these are normally thrown away.
+ .
+ Block structured YAML is a clean and very human readable
+ format. By extending the Python YAML parser to support round trip
+ preservation of comments, it makes YAML a very good choice for
+ configuration files that are human readable and editable while at
+ the same time interpretable and modifiable by a program.
+ .
+ Extending
+ =========
+ .
+ There are normally 6 files involved when extending the roundtrip
+ capabilities: the reader, parser, composer and constructor to go from YAML to
+ Python and the resolver, representer, serializer and emitter to go the other
+ way.
+ .
+ Extending involves keeping extra data around for the next process step,
+ eventuallly resulting in a different Python object (subclass or alternative),
+ that should behave like the original, but on the way from Python to YAML
+ generates the original (or at least something much closer).
+ .
+ Smartening
+ ==========
+ .
+ When you use round-tripping, then the complex data you get are
+ already subclasses of the build in types. So you can patch
+ in extra methods or override existing ones. Some methods are already
+ included and you can do::
+ .
+ yaml_str = """\
+ a:
+ - b:
+ c: 42
+ - d:
+ f: 196
+ e:
+ g: 3.14
+ """
+ .
+ .
+ data = yaml.load(yaml_str, Loader=yaml.RoundTripLoader)
+ .
+ assert data.mlget(['a', 1, 'd', 'f'], list_ok=True) == 196
+ .
+ .
+ Examples
+ ========
+ .
+ Basic round trip of parsing YAML to Python objects, modifying
+ and generating YAML::
+ .
+ from __future__ import print_function
+ .
+ import ruamel.yaml
+ .
+ inp = """\
+ # example
+ name:
+ # details
+ family: Smith # very common
+ given: Alice # one of the siblings
+ """
+ .
+ code = ruamel.yaml.load(inp, ruamel.yaml.RoundTripLoader)
+ code['name']['given'] = 'Bob'
+ .
+ print(ruamel.yaml.dump(code, Dumper=ruamel.yaml.RoundTripDumper), end='')
+ .
+ .. example code small.py
+ .
+ Resulting in ::
+ .
+ # example
+ name:
+ # details
+ family: Smith # very common
+ given: Bob # one of the siblings
+ .
+ .
+ .. example output small.py
+ .
+ .
+ YAML handcrafted anchors and references as well as key merging
+ is preserved. The merged keys can transparently be accessed
+ using ``[]`` and ``.get()``::
+ .
+ import ruamel.yaml
+ .
+ inp = """\
+ - &CENTER {x: 1, y: 2}
+ - &LEFT {x: 0, y: 2}
+ - &BIG {r: 10}
+ - &SMALL {r: 1}
+ # All the following maps are equal:
+ # Explicit keys
+ - x: 1
+ y: 2
+ r: 10
+ label: center/big
+ # Merge one map
+ - <<: *CENTER
+ r: 10
+ label: center/big
+ # Merge multiple maps
+ - <<: [*CENTER, *BIG]
+ label: center/big
+ # Override
+ - <<: [*BIG, *LEFT, *SMALL]
+ x: 1
+ label: center/big
+ """
+ .
+ data = ruamel.yaml.load(inp, ruamel.yaml.RoundTripLoader)
+ assert data[7]['y'] == 2
+ .
+ .
+ .. example code anchor_merge.py
+ .
+ .
+ Optional requirements
+ =====================
+ .
+ If you have the C yaml library and headers installed, as well as
+ the header files for your Python executables then you can use the
+ non-roundtrip but faster C loader en emitter.
+ .
+ On Debian systems you should use::
+ .
+ sudo apt-get install libyaml-dev python-dev python3-dev
+ .
+ you can leave out ``python3-dev`` if you don't use python3
+ .
+ For CentOS (7) based systems you should do::
+ .
+ sudo yum install libyaml-devel python-devel
+ .
+ Testing
+ =======
+ .
+ Testing is done using the `tox <https://pypi.python.org/pypi/tox>`_, which
+ uses `virtualenv <https://pypi.python.org/pypi/virtualenv>`_ and
+ `pytest <http://pytest.org/latest/>`_.
+
+Package: pypy-ruamel.yaml
+Architecture: any
+Depends: ${misc:Depends}, ${pypy:Depends}, ${shlibs:Depends},
+Recommends: ${pypy:Recommends}
+Suggests: ${pypy:Suggests}
+XB-Python-Egg-Name: ruamel.yaml
+Description: YAML parser/emitter that supports roundtrip preservation of comments, seq/map fl
+ ruamel.yaml
+ ===========
+ .
+ Starting with 0.10.7 the package has been reorganise and the
+ commandline utility is in its own package ``ruamel.yaml.cmd`` (so
+ installing ``ruamel.yaml`` doesn't pull in possible irrelevant modules
+ only used in the commandline utility)
+ .
+ ``ruamel.yaml`` is a YAML package for Python. It is a derivative
+ of Kirill Simonov's `PyYAML 3.11 <https://bitbucket.org/xi/pyyaml>`_
+ which supports YAML1.1
+ .
+ Major differences with PyYAML 3.11:
+ .
+ - intergrated Python 2 and 3 sources, running on Python 2.6, 2.7 (CPython,
+ PyPy), 3.3 and 3.4.
+ - round trip mode that **includes comments** (block mode, key ordering kept)
+ - support for simple lists as mapping keys by transformation to tuples
+ - ``!!omap`` generates ordereddict (C) on Python 2, collections.OrderedDict
+ on Python 3, and ``!!omap`` is generated for these types.
+ - some `YAML 1.2 <http://yaml.org/spec/1.2/spec.html>`_ enhancements
+ (``0o`` octal prefix, ``\/`` escape)
+ - pep8 compliance
+ - tox and py.test based testing
+ - Tests whether the C yaml library is installed as well as the header
+ files. That library doesn't generate CommentTokens, so it cannot be used to
+ do round trip editing on comments. It can be used for speeded up normal
+ processing (so you don't need to install ``ruamel.yaml`` and ``PyYaml``).
+ See the section *Optional requirements*.
+ - Basic support for multiline strings with preserved newlines and
+ chomping ( '``|``', '``|+``', '``|-``' ). As this subclasses the string type
+ the information is lost on reassignment. (This might be changed
+ in the future so that the preservation/folding/chomping is part of the
+ parent container, like comments).
+ - RoundTrip preservation of flow style sequences ( 'a: b, c, d') (based
+ on request and test by Anthony Sottile)
+ - anchors names that are hand-crafted (not of the form``idNNN``), are preserved
+ - `merges <http://yaml.org/type/merge.html>`_ in dictionaries are preserved
+ - adding/replacing of comments on block style sequences and mappings
+ with smart column positioning
+ - collection objects (when read in via RoundTripParser) have an ``lc``
+ property that contains line and column info ``lc.line`` and ``lc.col``.
+ Individual positions for mappings and sequences can also be retrieved
+ (``lc.key('a')``, ``lc.value('a')`` resp. ``lc.item(3)``)
+ - preservation of whitelines after block scalars. Contributed by Sam Thursfield.
+ .
+ Round trip including comments
+ =============================
+ .
+ The major motivation for this fork is the round-trip capability for
+ comments. The integration of the sources was just an initial step to
+ make this easier.
+ .
+ adding/replacing comments
+ -------------------------
+ .
+ Starting with version 0.8, you can add/replace comments on block style
+ collections (mappings/sequences resuting in Python dict/list). The basic
+ for for this is::
+ .
+ from __future__ import print_function
+ .
+ import ruamel.yaml
+ .
+ inp = """\
+ abc:
+ - a # comment 1
+ xyz:
+ a: 1 # comment 2
+ b: 2
+ c: 3
+ d: 4
+ e: 5
+ f: 6 # comment 3
+ """
+ .
+ data = ruamel.yaml.load(inp, ruamel.yaml.RoundTripLoader)
+ data['abc'].append('b')
+ data['abc'].yaml_add_eol_comment('comment 4', 1) # takes column of comment 1
+ data['xyz'].yaml_add_eol_comment('comment 5', 'c') # takes column of comment 2
+ data['xyz'].yaml_add_eol_comment('comment 6', 'e') # takes column of comment 3
+ data['xyz'].yaml_add_eol_comment('comment 7', 'd', column=20)
+ .
+ print(ruamel.yaml.dump(data, Dumper=ruamel.yaml.RoundTripDumper), end='')
+ .
+ .. example code add_comment.py
+ .
+ Resulting in::
+ .
+ abc:
+ - a # comment 1
+ - b # comment 4
+ xyz:
+ a: 1 # comment 2
+ b: 2
+ c: 3 # comment 5
+ d: 4 # comment 7
+ e: 5 # comment 6
+ f: 6 # comment 3
+ .
+ .
+ .. example output add_comment.py
+ .
+ .
+ If the comment doesn't start with '#', this will be added. The key is is
+ the element index for list, the actual key for dictionaries. As can be seen
+ from the example, the column to choose for a comment is derived
+ from the previous, next or preceding comment column (picking the first one
+ found).
+ .
+ Config file formats
+ ===================
+ .
+ There are only a few configuration file formats that are easily
+ readable, and editable: JSON, INI/ConfigParser, YAML (XML is to cluttered
+ to be called easily readable).
+ .
+ Unfortunately `JSON <http://www.json.org/>`_ doesn't support comments,
+ and although there are some solutions with pre-processed filtering of
+ comments, there are no libraries that support round trip updating of
+ such commented files.
+ .
+ INI files support comments, and the excellent `ConfigObj
+ <http://www.voidspace.org.uk/python/configobj.html>`_ library by Foord
+ and Larosa even supports round trip editing with comment preservation,
+ nesting of sections and limited lists (within a value). Retrieval of
+ particular value format is explicit (and extensible).
+ .
+ YAML has basic mapping and sequence structures as well support for
+ ordered mappings and sets. It supports scalars are of various types
+ including dates and datetimes (missing in JSON) as a list of
+ YAML has comments, but these are normally thrown away.
+ .
+ Block structured YAML is a clean and very human readable
+ format. By extending the Python YAML parser to support round trip
+ preservation of comments, it makes YAML a very good choice for
+ configuration files that are human readable and editable while at
+ the same time interpretable and modifiable by a program.
+ .
+ Extending
+ =========
+ .
+ There are normally 6 files involved when extending the roundtrip
+ capabilities: the reader, parser, composer and constructor to go from YAML to
+ Python and the resolver, representer, serializer and emitter to go the other
+ way.
+ .
+ Extending involves keeping extra data around for the next process step,
+ eventuallly resulting in a different Python object (subclass or alternative),
+ that should behave like the original, but on the way from Python to YAML
+ generates the original (or at least something much closer).
+ .
+ Smartening
+ ==========
+ .
+ When you use round-tripping, then the complex data you get are
+ already subclasses of the build in types. So you can patch
+ in extra methods or override existing ones. Some methods are already
+ included and you can do::
+ .
+ yaml_str = """\
+ a:
+ - b:
+ c: 42
+ - d:
+ f: 196
+ e:
+ g: 3.14
+ """
+ .
+ .
+ data = yaml.load(yaml_str, Loader=yaml.RoundTripLoader)
+ .
+ assert data.mlget(['a', 1, 'd', 'f'], list_ok=True) == 196
+ .
+ .
+ Examples
+ ========
+ .
+ Basic round trip of parsing YAML to Python objects, modifying
+ and generating YAML::
+ .
+ from __future__ import print_function
+ .
+ import ruamel.yaml
+ .
+ inp = """\
+ # example
+ name:
+ # details
+ family: Smith # very common
+ given: Alice # one of the siblings
+ """
+ .
+ code = ruamel.yaml.load(inp, ruamel.yaml.RoundTripLoader)
+ code['name']['given'] = 'Bob'
+ .
+ print(ruamel.yaml.dump(code, Dumper=ruamel.yaml.RoundTripDumper), end='')
+ .
+ .. example code small.py
+ .
+ Resulting in ::
+ .
+ # example
+ name:
+ # details
+ family: Smith # very common
+ given: Bob # one of the siblings
+ .
+ .
+ .. example output small.py
+ .
+ .
+ YAML handcrafted anchors and references as well as key merging
+ is preserved. The merged keys can transparently be accessed
+ using ``[]`` and ``.get()``::
+ .
+ import ruamel.yaml
+ .
+ inp = """\
+ - &CENTER {x: 1, y: 2}
+ - &LEFT {x: 0, y: 2}
+ - &BIG {r: 10}
+ - &SMALL {r: 1}
+ # All the following maps are equal:
+ # Explicit keys
+ - x: 1
+ y: 2
+ r: 10
+ label: center/big
+ # Merge one map
+ - <<: *CENTER
+ r: 10
+ label: center/big
+ # Merge multiple maps
+ - <<: [*CENTER, *BIG]
+ label: center/big
+ # Override
+ - <<: [*BIG, *LEFT, *SMALL]
+ x: 1
+ label: center/big
+ """
+ .
+ data = ruamel.yaml.load(inp, ruamel.yaml.RoundTripLoader)
+ assert data[7]['y'] == 2
+ .
+ .
+ .. example code anchor_merge.py
+ .
+ .
+ Optional requirements
+ =====================
+ .
+ If you have the C yaml library and headers installed, as well as
+ the header files for your Python executables then you can use the
+ non-roundtrip but faster C loader en emitter.
+ .
+ On Debian systems you should use::
+ .
+ sudo apt-get install libyaml-dev python-dev python3-dev
+ .
+ you can leave out ``python3-dev`` if you don't use python3
+ .
+ For CentOS (7) based systems you should do::
+ .
+ sudo yum install libyaml-devel python-devel
+ .
+ Testing
+ =======
+ .
+ Testing is done using the `tox <https://pypi.python.org/pypi/tox>`_, which
+ uses `virtualenv <https://pypi.python.org/pypi/virtualenv>`_ and
+ `pytest <http://pytest.org/latest/>`_.
\ No newline at end of file
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..b474ff3
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,35 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: ruamel.yaml
+Upstream-Contact: Anthon van der Neut <a.van.der.neut at ruamel.eu>
+Source: https://bitbucket.org/ruamel/yaml
+
+Files: *
+Copyright: Anthon van der Neut <a.van.der.neut at ruamel.eu>
+License: MIT license
+
+Files: debian/*
+Copyright: 2015 © Vincent Bernat <bernat at debian.org>
+License: MIT license
+
+License: MIT license
+ .
+ The MIT License (MIT)
+ .
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ .
\ No newline at end of file
diff --git a/debian/python3-ruamel.yaml.docs b/debian/python3-ruamel.yaml.docs
new file mode 100644
index 0000000..a1320b1
--- /dev/null
+++ b/debian/python3-ruamel.yaml.docs
@@ -0,0 +1 @@
+README.rst
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..f782ea2
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,7 @@
+#! /usr/bin/make -f
+
+export PYBUILD_NAME=ruamel.yaml
+export PYBUILD_AFTER_INSTALL_pypy=rm -rf {destdir}/usr/bin/
+export PYBUILD_AFTER_INSTALL_python2=rm -rf {destdir}/usr/bin/
+%:
+ dh $@ --with python3,python2,pypy --buildsystem=pybuild
\ No newline at end of file
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/options b/debian/source/options
new file mode 100644
index 0000000..d81db3f
--- /dev/null
+++ b/debian/source/options
@@ -0,0 +1 @@
+extend-diff-ignore="^[^/]+.egg-info/"
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..adad8ba
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,4 @@
+# try also https://pypi.debian.net/ruamel.yaml/watch
+version=3
+opts=uversionmangle=s/(rc|a|b|c)/~$1/ \
+https://pypi.debian.net/ruamel.yaml/ruamel.yaml-(.+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz)))
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/ruamel.yaml.git
More information about the Python-modules-commits
mailing list