Hello community,
here is the log from the commit of package python-oslo.config for openSUSE:Factory checked in at 2015-09-02 07:53:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.config (Old)
and /work/SRC/openSUSE:Factory/.python-oslo.config.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslo.config"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslo.config/python-oslo.config.changes 2015-08-27 08:54:47.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-oslo.config.new/python-oslo.config.changes 2015-09-02 07:53:57.000000000 +0200
@@ -1,0 +2,15 @@
+Fri Aug 28 09:33:38 UTC 2015 - tbechtold@suse.com
+
+- Fix doc build
+
+-------------------------------------------------------------------
+Thu Aug 27 14:32:33 UTC 2015 - tbechtold@suse.com
+
+- update to 2.3.0:
+ * Add sphinx extension to embed pretty descriptions of options
+ * Add sphinx extension to build sample config
+ * Updated from global requirements
+ * Updated from global requirements
+ * preserve preformatted help text
+
+-------------------------------------------------------------------
Old:
----
oslo.config-2.1.0.tar.gz
New:
----
oslo.config-2.3.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-oslo.config.spec ++++++
--- /var/tmp/diff_new_pack.b5AfOz/_old 2015-09-02 07:53:57.000000000 +0200
+++ /var/tmp/diff_new_pack.b5AfOz/_new 2015-09-02 07:53:57.000000000 +0200
@@ -17,7 +17,7 @@
Name: python-oslo.config
-Version: 2.1.0
+Version: 2.3.0
Release: 0
Summary: OpenStack configuration API
License: Apache-2.0
@@ -77,9 +77,9 @@
%{__python2} setup.py install --skip-build --root %{buildroot}
# generate html docs
-sphinx-build doc/source html
+python setup.py build_sphinx
# remove the sphinx-build leftovers
-rm -rf html/.{doctrees,buildinfo}
+rm -rf doc/build/html/.{doctrees,buildinfo}
%files
%defattr(-,root,root,-)
@@ -90,6 +90,6 @@
%files doc
%defattr(-,root,root,-)
-%doc LICENSE html
+%doc LICENSE doc/build/html
%changelog
++++++ oslo.config-2.1.0.tar.gz -> oslo.config-2.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/AUTHORS new/oslo.config-2.3.0/AUTHORS
--- old/oslo.config-2.1.0/AUTHORS 2015-07-27 21:56:32.000000000 +0200
+++ new/oslo.config-2.3.0/AUTHORS 2015-08-24 23:32:57.000000000 +0200
@@ -53,6 +53,7 @@
Luis A. Garcia
Mark McLoughlin
Mark Vanderwiel
+Markus Zoeller
Matt Riedemann
Matthew Treinish
Maxim Kulkin
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/ChangeLog new/oslo.config-2.3.0/ChangeLog
--- old/oslo.config-2.1.0/ChangeLog 2015-07-27 21:56:32.000000000 +0200
+++ new/oslo.config-2.3.0/ChangeLog 2015-08-24 23:32:57.000000000 +0200
@@ -1,6 +1,19 @@
CHANGES
=======
+2.3.0
+-----
+
+* Add sphinx extension to embed pretty descriptions of options
+* Add sphinx extension to build sample config
+* Updated from global requirements
+
+2.2.0
+-----
+
+* Updated from global requirements
+* preserve preformatted help text
+
2.1.0
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/PKG-INFO new/oslo.config-2.3.0/PKG-INFO
--- old/oslo.config-2.1.0/PKG-INFO 2015-07-27 21:56:33.000000000 +0200
+++ new/oslo.config-2.3.0/PKG-INFO 2015-08-24 23:32:57.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: oslo.config
-Version: 2.1.0
+Version: 2.3.0
Summary: Oslo Configuration API
Home-page: https://launchpad.net/oslo
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/doc/source/conf.py new/oslo.config-2.3.0/doc/source/conf.py
--- old/oslo.config-2.1.0/doc/source/conf.py 2015-07-27 21:56:09.000000000 +0200
+++ new/oslo.config-2.3.0/doc/source/conf.py 2015-08-24 23:32:24.000000000 +0200
@@ -8,7 +8,10 @@
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'oslosphinx']
+extensions = ['sphinx.ext.autodoc', 'oslosphinx',
+ 'oslo_config.sphinxconfiggen']
+
+config_generator_config_file = 'config-generator.conf'
# autodoc generation is a bit aggressive and a nuisance when doing heavy
# text edit cycles.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/doc/source/config-generator.conf new/oslo.config-2.3.0/doc/source/config-generator.conf
--- old/oslo.config-2.1.0/doc/source/config-generator.conf 1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.config-2.3.0/doc/source/config-generator.conf 2015-08-24 23:32:24.000000000 +0200
@@ -0,0 +1,3 @@
+[DEFAULT]
+wrap_width = 79
+namespace = oslo.config
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/doc/source/index.rst new/oslo.config-2.3.0/doc/source/index.rst
--- old/oslo.config-2.1.0/doc/source/index.rst 2015-07-27 21:56:09.000000000 +0200
+++ new/oslo.config-2.3.0/doc/source/index.rst 2015-08-24 23:32:24.000000000 +0200
@@ -24,6 +24,7 @@
generator
faq
contributing
+ sphinxconfiggen
Indices and tables
==================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/doc/source/sphinxconfiggen.rst new/oslo.config-2.3.0/doc/source/sphinxconfiggen.rst
--- old/oslo.config-2.1.0/doc/source/sphinxconfiggen.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.config-2.3.0/doc/source/sphinxconfiggen.rst 2015-08-24 23:32:24.000000000 +0200
@@ -0,0 +1,24 @@
+====================================
+Sphinx Oslo Sample Config Generation
+====================================
+
+Included with oslo.config is a sphinx extension to generate a sample config
+file at the beginning of each sphinx build. To activate the extension add
+``oslo_config.sphinxgenconfig`` to the list of extensions in your sphinx
+``conf.py``.
+
+Then you just need to use the ``config_generator_config_file`` option to point
+the config generator at the config file which tells it how to generate the
+sample config. If one isn't specified or it doesn't point to a real file the
+sample config file generation will be skipped.
+
+Output File Name
+----------------
+
+By default the sphinx plugin will generate the sample config file and name the
+file sample.config. However, if for whatever reason you'd like the name to be
+more specific to the project name you can use the ``config_sample_basename``
+config option to specify the project name. If it's set the output filename
+will be that value with a .conf.sample extension. For example if you set that
+to be nova the output filename will be nova.conf.sample. You can also put a
+subdirectory off of the srcdir as part of this value.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/doc/source/styleguide.rst new/oslo.config-2.3.0/doc/source/styleguide.rst
--- old/oslo.config-2.1.0/doc/source/styleguide.rst 2015-07-27 21:56:09.000000000 +0200
+++ new/oslo.config-2.3.0/doc/source/styleguide.rst 2015-08-24 23:32:24.000000000 +0200
@@ -69,3 +69,16 @@
'can improve data throughput, such as when high '
'network bandwidth is available and you use '
'compressed image formats like qcow2.')
+
+2. It is possible to preformat the multi-line strings to increase readability.
+ Line break characters ``\n`` will be kept as they are used in the help text.
+ Example::
+
+ cfg.IntOpt('sync_power_state_interval',
+ default=600,
+ help='Interval to sync power states between the database and '
+ 'the hypervisor.\n'
+ '\n'
+ '-1: disables the sync \n'
+ ' 0: run at the default rate.\n'
+ '>0: the interval in seconds')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/oslo.config.egg-info/PKG-INFO new/oslo.config-2.3.0/oslo.config.egg-info/PKG-INFO
--- old/oslo.config-2.1.0/oslo.config.egg-info/PKG-INFO 2015-07-27 21:56:32.000000000 +0200
+++ new/oslo.config-2.3.0/oslo.config.egg-info/PKG-INFO 2015-08-24 23:32:57.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: oslo.config
-Version: 2.1.0
+Version: 2.3.0
Summary: Oslo Configuration API
Home-page: https://launchpad.net/oslo
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/oslo.config.egg-info/SOURCES.txt new/oslo.config-2.3.0/oslo.config.egg-info/SOURCES.txt
--- old/oslo.config-2.1.0/oslo.config.egg-info/SOURCES.txt 2015-07-27 21:56:33.000000000 +0200
+++ new/oslo.config-2.3.0/oslo.config.egg-info/SOURCES.txt 2015-08-24 23:32:57.000000000 +0200
@@ -13,6 +13,7 @@
doc/source/cfg.rst
doc/source/cfgfilter.rst
doc/source/conf.py
+doc/source/config-generator.conf
doc/source/configopts.rst
doc/source/contributing.rst
doc/source/exceptions.rst
@@ -24,6 +25,7 @@
doc/source/namespaces.rst
doc/source/opts.rst
doc/source/parser.rst
+doc/source/sphinxconfiggen.rst
doc/source/styleguide.rst
doc/source/types.rst
oslo.config.egg-info/PKG-INFO
@@ -40,6 +42,8 @@
oslo_config/fixture.py
oslo_config/generator.py
oslo_config/iniparser.py
+oslo_config/sphinxconfiggen.py
+oslo_config/sphinxext.py
oslo_config/types.py
oslo_config/tests/__init__.py
oslo_config/tests/test_cfg.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/oslo.config.egg-info/pbr.json new/oslo.config-2.3.0/oslo.config.egg-info/pbr.json
--- old/oslo.config-2.1.0/oslo.config.egg-info/pbr.json 2015-07-27 21:56:32.000000000 +0200
+++ new/oslo.config-2.3.0/oslo.config.egg-info/pbr.json 2015-08-24 23:32:57.000000000 +0200
@@ -1 +1 @@
-{"is_release": true, "git_version": "ac505d8"}
\ No newline at end of file
+{"is_release": true, "git_version": "bc13758"}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/oslo_config/generator.py new/oslo.config-2.3.0/oslo_config/generator.py
--- old/oslo.config-2.1.0/oslo_config/generator.py 2015-07-27 21:56:09.000000000 +0200
+++ new/oslo.config-2.3.0/oslo_config/generator.py 2015-08-24 23:32:25.000000000 +0200
@@ -59,6 +59,46 @@
conf.register_cli_opts(_generator_opts)
+def _format_defaults(opt):
+ "Return a list of formatted default values."
+ if isinstance(opt, cfg.MultiStrOpt):
+ if opt.sample_default is not None:
+ defaults = opt.sample_default
+ elif not opt.default:
+ defaults = ['']
+ else:
+ defaults = opt.default
+ else:
+ if opt.sample_default is not None:
+ default_str = str(opt.sample_default)
+ elif opt.default is None:
+ default_str = '<None>'
+ elif isinstance(opt, cfg.StrOpt):
+ default_str = opt.default
+ elif isinstance(opt, cfg.BoolOpt):
+ default_str = str(opt.default).lower()
+ elif (isinstance(opt, cfg.IntOpt) or
+ isinstance(opt, cfg.FloatOpt)):
+ default_str = str(opt.default)
+ elif isinstance(opt, cfg.ListOpt):
+ default_str = ','.join(opt.default)
+ elif isinstance(opt, cfg.DictOpt):
+ sorted_items = sorted(opt.default.items(),
+ key=operator.itemgetter(0))
+ default_str = ','.join(['%s:%s' % i for i in sorted_items])
+ else:
+ LOG.warning('Unknown option type: %s', repr(opt))
+ default_str = str(opt.default)
+ defaults = [default_str]
+
+ results = []
+ for default_str in defaults:
+ if default_str.strip() != default_str:
+ default_str = '"%s"' % default_str
+ results.append(default_str)
+ return results
+
+
class _OptFormatter(object):
"""Format configuration option descriptions to a file."""
@@ -88,10 +128,16 @@
:param help_text: The text of the help string
"""
if self.wrap_width is not None and self.wrap_width > 0:
- lines = [textwrap.fill(help_text,
- self.wrap_width,
- initial_indent='# ',
- subsequent_indent='# ') + '\n']
+ wrapped = ""
+ for line in help_text.splitlines():
+ text = "\n".join(textwrap.wrap(line, self.wrap_width,
+ initial_indent='# ',
+ subsequent_indent='# ',
+ break_long_words=False,
+ replace_whitespace=False))
+ wrapped += "#" if text == "" else text
+ wrapped += "\n"
+ lines = [wrapped]
else:
lines = ['# ' + help_text + '\n']
return lines
@@ -140,39 +186,8 @@
'# This option is deprecated for removal.\n'
'# Its value may be silently ignored in the future.\n')
- if isinstance(opt, cfg.MultiStrOpt):
- if opt.sample_default is not None:
- defaults = opt.sample_default
- elif not opt.default:
- defaults = ['']
- else:
- defaults = opt.default
- else:
- if opt.sample_default is not None:
- default_str = str(opt.sample_default)
- elif opt.default is None:
- default_str = '<None>'
- elif isinstance(opt, cfg.StrOpt):
- default_str = opt.default
- elif isinstance(opt, cfg.BoolOpt):
- default_str = str(opt.default).lower()
- elif (isinstance(opt, cfg.IntOpt) or
- isinstance(opt, cfg.FloatOpt)):
- default_str = str(opt.default)
- elif isinstance(opt, cfg.ListOpt):
- default_str = ','.join(opt.default)
- elif isinstance(opt, cfg.DictOpt):
- sorted_items = sorted(opt.default.items(),
- key=operator.itemgetter(0))
- default_str = ','.join(['%s:%s' % i for i in sorted_items])
- else:
- LOG.warning('Unknown option type: %s', repr(opt))
- default_str = str(opt.default)
- defaults = [default_str]
-
+ defaults = _format_defaults(opt)
for default_str in defaults:
- if default_str.strip() != default_str:
- default_str = '"%s"' % default_str
if default_str:
default_str = ' ' + default_str
lines.append('#%s =%s\n' % (opt.dest, default_str))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/oslo_config/sphinxconfiggen.py new/oslo.config-2.3.0/oslo_config/sphinxconfiggen.py
--- old/oslo.config-2.1.0/oslo_config/sphinxconfiggen.py 1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.config-2.3.0/oslo_config/sphinxconfiggen.py 2015-08-24 23:32:24.000000000 +0200
@@ -0,0 +1,66 @@
+# Copyright 2015 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import os
+
+from oslo_config import generator
+
+
+def generate_sample(app):
+
+ def info(msg):
+ app.info('[%s] %s' % (__name__, msg))
+
+ if not app.config.config_generator_config_file:
+ app.warn("No config_generator_config_file is specified, "
+ "skipping sample config generation")
+ return
+
+ # If we are given a file that isn't an absolute path, look for it
+ # in the source directory if it doesn't exist.
+ candidates = [
+ app.config.config_generator_config_file,
+ os.path.join(
+ app.srcdir,
+ app.config.config_generator_config_file,
+ ),
+ ]
+ for c in candidates:
+ if os.path.isfile(c):
+ info('reading config generator instructions from %s' % c)
+ config_path = c
+ break
+ else:
+ raise ValueError(
+ "Could not find config_generator_config_file %r" %
+ app.config.config_generator_config_file)
+
+ if app.config.sample_config_basename:
+ out_file = os.path.join(
+ app.srcdir, app.config.sample_config_basename) + '.conf.sample'
+ if not os.path.isdir(os.path.dirname(os.path.abspath(out_file))):
+ os.mkdir(os.path.dirname(os.path.abspath(out_file)))
+ else:
+ file_name = 'sample.config'
+ out_file = os.path.join(app.srcdir, file_name)
+
+ info('writing sample configuration to %s' % out_file)
+ generator.main(args=['--config-file', config_path,
+ '--output-file', out_file])
+
+
+def setup(app):
+ app.add_config_value('config_generator_config_file', None, 'env')
+ app.add_config_value('sample_config_basename', None, 'env')
+ app.connect('builder-inited', generate_sample)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/oslo_config/sphinxext.py new/oslo.config-2.3.0/oslo_config/sphinxext.py
--- old/oslo.config-2.1.0/oslo_config/sphinxext.py 1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.config-2.3.0/oslo_config/sphinxext.py 2015-08-24 23:32:25.000000000 +0200
@@ -0,0 +1,159 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from docutils import nodes
+from docutils.parsers import rst
+from docutils.statemachine import ViewList
+from sphinx.util.nodes import nested_parse_with_titles
+
+from oslo_config import cfg
+from oslo_config import generator
+
+import six
+
+
+def _list_table(add, headers, data, title='', columns=None):
+ """Build a list-table directive.
+
+ :param add: Function to add one row to output.
+ :param headers: List of header values.
+ :param data: Iterable of row data, yielding lists or tuples with rows.
+ """
+ add('.. list-table:: %s' % title)
+ add(' :header-rows: 1')
+ if columns:
+ add(' :widths: %s' % (','.join(str(c) for c in columns)))
+ add('')
+ add(' - * %s' % headers[0])
+ for h in headers[1:]:
+ add(' * %s' % h)
+ for row in data:
+ add(' - * %s' % row[0])
+ for r in row[1:]:
+ add(' * %s' % r)
+ add('')
+
+
+def _indent(text, n=2):
+ padding = ' ' * n
+ return '\n'.join(padding + l for l in text.splitlines())
+
+
+class ShowOptionsDirective(rst.Directive):
+
+ # option_spec = {}
+
+ has_content = True
+
+ _TYPE_DESCRIPTIONS = {
+ cfg.StrOpt: 'string',
+ cfg.BoolOpt: 'boolean',
+ cfg.IntOpt: 'integer',
+ cfg.FloatOpt: 'floating point',
+ cfg.ListOpt: 'list',
+ cfg.DictOpt: 'dict',
+ cfg.MultiStrOpt: 'multi-valued',
+ }
+
+ def run(self):
+ env = self.state.document.settings.env
+ app = env.app
+
+ namespace = ' '.join(self.content)
+
+ opts = generator._list_opts([namespace])
+
+ result = ViewList()
+ source_name = '<' + __name__ + '>'
+
+ def _add(text):
+ "Append some text to the output result view to be parsed."
+ result.append(text, source_name)
+
+ def _add_indented(text):
+ """Append some text, indented by a couple of spaces.
+
+ Indent everything under the option name,
+ to format it as a definition list.
+ """
+ _add(_indent(text))
+
+ by_section = {}
+
+ for ignore, opt_list in opts:
+ for group_name, opts in opt_list:
+ by_section.setdefault(group_name, []).extend(opts)
+
+ for group_name, opt_list in sorted(by_section.items()):
+ group_name = group_name or 'DEFAULT'
+ app.info('[oslo.config] %s %s' % (namespace, group_name))
+ _add(group_name)
+ _add('=' * len(group_name))
+ _add('')
+
+ for opt in opt_list:
+ opt_type = self._TYPE_DESCRIPTIONS.get(type(opt),
+ 'unknown type')
+ _add('``%s``' % opt.dest)
+ _add('')
+ _add_indented(':Type: %s' % opt_type)
+ for default in generator._format_defaults(opt):
+ if default:
+ default = '``' + default + '``'
+ _add_indented(':Default: %s' % default)
+ if getattr(opt.type, 'min', None):
+ _add_indented(':Minimum Value: %s' % opt.type.min)
+ if getattr(opt.type, 'max', None):
+ _add_indented(':Maximum Value: %s' % opt.type.max)
+ if getattr(opt.type, 'choices', None):
+ choices_text = ', '.join([self._get_choice_text(choice)
+ for choice in opt.type.choices])
+ _add_indented(':Valid Values: %s' % choices_text)
+ _add('')
+
+ _add_indented(opt.help)
+ _add('')
+
+ if opt.deprecated_opts:
+ _list_table(
+ _add_indented,
+ ['Group', 'Name'],
+ ((d.group or 'DEFAULT',
+ d.name or opt.dest or 'UNSET')
+ for d in opt.deprecated_opts),
+ title='Deprecated Variations',
+ )
+ if opt.deprecated_for_removal:
+ _add_indented('.. warning:')
+ _add_indented(' This option is deprecated for removal.')
+ _add_indented(' Its value may be silently ignored ')
+ _add_indented(' in the future.')
+ _add('')
+
+ _add('')
+
+ node = nodes.section()
+ node.document = self.state.document
+ nested_parse_with_titles(self.state, result, node)
+
+ return node.children
+
+ def _get_choice_text(self, choice):
+ if choice is None:
+ return '<None>'
+ elif choice == '':
+ return "''"
+ return six.text_type(choice)
+
+
+def setup(app):
+ app.add_directive('show-options', ShowOptionsDirective)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/oslo_config/tests/test_generator.py new/oslo.config-2.3.0/oslo_config/tests/test_generator.py
--- old/oslo.config-2.1.0/oslo_config/tests/test_generator.py 2015-07-27 21:56:09.000000000 +0200
+++ new/oslo.config-2.3.0/oslo_config/tests/test_generator.py 2015-08-24 23:32:24.000000000 +0200
@@ -48,6 +48,19 @@
'cupidatat non proident, sunt in culpa '
'qui officia deserunt mollit anim id est '
'laborum.'),
+ 'long_help_pre': cfg.StrOpt('long_help_pre',
+ help='This is a very long help text which '
+ 'is preformatted with line breaks. '
+ 'It should break when it is too long '
+ 'but also keep the specified line '
+ 'breaks. This makes it possible to '
+ 'create lists with items:\n'
+ '\n'
+ '* item 1\n'
+ '* item 2\n'
+ '\n'
+ 'and should increase the '
+ 'readability.'),
'choices_opt': cfg.StrOpt('choices_opt',
default='a',
choices=(None, '', 'a', 'b', 'c'),
@@ -289,6 +302,26 @@
'''
#long_help = <None>
''')),
+ ('long_help_with_preformatting',
+ dict(opts=[('test', [(None, [opts['long_help_pre']])])],
+ wrap_width=70,
+ expected='''[DEFAULT]
+
+#
+# From test
+#
+
+# This is a very long help text which is preformatted with line
+# breaks. It should break when it is too long but also keep the
+# specified line breaks. This makes it possible to create lists with
+# items:
+#
+# * item 1
+# * item 2
+#
+# and should increase the readability. (string value)
+#long_help_pre = <None>
+''')),
('choices_opt',
dict(opts=[('test', [(None, [opts['choices_opt']])])],
expected='''[DEFAULT]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/setup.cfg new/oslo.config-2.3.0/setup.cfg
--- old/oslo.config-2.1.0/setup.cfg 2015-07-27 21:56:33.000000000 +0200
+++ new/oslo.config-2.3.0/setup.cfg 2015-08-24 23:32:57.000000000 +0200
@@ -45,6 +45,6 @@
[egg_info]
tag_build =
-tag_svn_revision = 0
tag_date = 0
+tag_svn_revision = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo.config-2.1.0/test-requirements.txt new/oslo.config-2.3.0/test-requirements.txt
--- old/oslo.config-2.1.0/test-requirements.txt 2015-07-27 21:56:10.000000000 +0200
+++ new/oslo.config-2.3.0/test-requirements.txt 2015-08-24 23:32:24.000000000 +0200
@@ -10,7 +10,7 @@
testrepository>=0.0.18
testscenarios>=0.4
testtools>=1.4.0
-oslotest>=1.7.0 # Apache-2.0
+oslotest>=1.10.0 # Apache-2.0
# when we can require tox>= 1.4, this can go into tox.ini:
# [testenv:cover]