Hello community,

here is the log from the commit of package python-reno for openSUSE:Factory 
checked in at 2020-08-13 10:12:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-reno (Old)
 and      /work/SRC/openSUSE:Factory/.python-reno.new.3399 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-reno"

Thu Aug 13 10:12:36 2020 rev:9 rq:825343 version:3.1.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-reno/python-reno.changes  2020-04-19 
21:49:34.728093892 +0200
+++ /work/SRC/openSUSE:Factory/.python-reno.new.3399/python-reno.changes        
2020-08-13 10:12:41.742586292 +0200
@@ -1,0 +2,17 @@
+Fri Jun  5 19:31:53 UTC 2020 - Dirk Mueller <dmuel...@suse.com>
+
+- update 3.1.0
+  * Set parallel\_read\_safe to True
+  * Handle empty config files
+  * Add cache support for release dates
+  * Remove future imports
+  * Keep scanning master branch after first shared commit
+  * Sort config options
+  * Add support for release dates
+  * sphinxext: Support rootdir discovery without git
+  * Use unittest.mock instead of third party mock
+  * tox: Suppress output
+  * do not include external svgs from readme in docs
+  * Update hacking for Python3
+
+-------------------------------------------------------------------

Old:
----
  reno-3.0.1.tar.gz

New:
----
  reno-3.1.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-reno.spec ++++++
--- /var/tmp/diff_new_pack.HCcBfO/_old  2020-08-13 10:12:44.378587941 +0200
+++ /var/tmp/diff_new_pack.HCcBfO/_new  2020-08-13 10:12:44.382587944 +0200
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define skip_python2 1
 Name:           python-reno
-Version:        3.0.1
+Version:        3.1.0
 Release:        0
 Summary:        RElease NOtes manager
 License:        Apache-2.0

++++++ reno-3.0.1.tar.gz -> reno-3.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/AUTHORS new/reno-3.1.0/AUTHORS
--- old/reno-3.0.1/AUTHORS      2020-04-01 21:33:22.000000000 +0200
+++ new/reno-3.1.0/AUTHORS      2020-05-14 18:13:05.000000000 +0200
@@ -30,12 +30,14 @@
 Mike Perez <thin...@gmail.com>
 Monty Taylor <mord...@inaugust.com>
 Nguyen Hai Truong <truon...@vn.fujitsu.com>
+Niraj Tolia <nto...@kasten.io>
 Paul Belanger <pabelan...@redhat.com>
 Rajath Agasthya <rajathagast...@gmail.com>
 Sahid Orentino Ferdjaoui <sahid.ferdja...@canonical.com>
 Sean McGinnis <sean.mcgin...@gmail.com>
 Sharat Sharma <sharat.sha...@nectechnologies.in>
 Stephen Finucane <sfinu...@redhat.com>
+Stephen Finucane <stephen...@redhat.com>
 Swapnil Kulkarni (coolsvap) <m...@coolsvap.net>
 Thanh Ha <zxi...@linux.com>
 Thomas Bechtold <tbecht...@suse.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/ChangeLog new/reno-3.1.0/ChangeLog
--- old/reno-3.0.1/ChangeLog    2020-04-01 21:33:22.000000000 +0200
+++ new/reno-3.1.0/ChangeLog    2020-05-14 18:13:05.000000000 +0200
@@ -1,6 +1,22 @@
 CHANGES
 =======
 
+3.1.0
+-----
+
+* Set parallel\_read\_safe to True
+* Handle empty config files
+* Add cache support for release dates
+* Remove future imports
+* Keep scanning master branch after first shared commit
+* Sort config options
+* Add support for release dates
+* sphinxext: Support rootdir discovery without git
+* Use unittest.mock instead of third party mock
+* tox: Suppress output
+* do not include external svgs from readme in docs
+* Update hacking for Python3
+
 3.0.1
 -----
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/PKG-INFO new/reno-3.1.0/PKG-INFO
--- old/reno-3.0.1/PKG-INFO     2020-04-01 21:33:22.000000000 +0200
+++ new/reno-3.1.0/PKG-INFO     2020-05-14 18:13:05.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: reno
-Version: 3.0.1
+Version: 3.1.0
 Summary: RElease NOtes manager
 Home-page: https://docs.openstack.org/reno/latest/
 Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/doc/source/index.rst 
new/reno-3.1.0/doc/source/index.rst
--- old/reno-3.0.1/doc/source/index.rst 2020-04-01 21:32:27.000000000 +0200
+++ new/reno-3.1.0/doc/source/index.rst 2020-05-14 18:12:18.000000000 +0200
@@ -1,4 +1,5 @@
 .. include:: ../../README.rst
+   :end-before: Project Meta-data
 
 EuroPython 2018 Presentation
 ============================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/lower-constraints.txt 
new/reno-3.1.0/lower-constraints.txt
--- old/reno-3.0.1/lower-constraints.txt        2020-04-01 21:32:27.000000000 
+0200
+++ new/reno-3.1.0/lower-constraints.txt        2020-05-14 18:12:18.000000000 
+0200
@@ -2,4 +2,4 @@
 dulwich==0.15.0
 PyYAML==3.10.0
 Sphinx==1.6.1
-stestr==2.0.0
+stestr==2.1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/reno-3.0.1/releasenotes/notes/keep-scanning-past-branchpoint-61f72023c32cf0b3.yaml
 
new/reno-3.1.0/releasenotes/notes/keep-scanning-past-branchpoint-61f72023c32cf0b3.yaml
--- 
old/reno-3.0.1/releasenotes/notes/keep-scanning-past-branchpoint-61f72023c32cf0b3.yaml
      1970-01-01 01:00:00.000000000 +0100
+++ 
new/reno-3.1.0/releasenotes/notes/keep-scanning-past-branchpoint-61f72023c32cf0b3.yaml
      2020-05-14 18:12:18.000000000 +0200
@@ -0,0 +1,10 @@
+---
+features:
+  - |
+    If no earliest version is provided for a branch, reno will scan commits
+    on the branch in reverse order, attempting to find a common ancestor
+    with the master branch. Once found, the last common commit - the branch
+    point - is checked for a tag. Previously, if no tag was found, reno
+    would stop scanning. This was problematic for instances where a branch
+    was not created at the tagged commit but rather some commits later.
+    Reno will now continue scanning until it finds a tag.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/reno-3.0.1/releasenotes/notes/release-date-3a1dec42c91a3f0b.yaml 
new/reno-3.1.0/releasenotes/notes/release-date-3a1dec42c91a3f0b.yaml
--- old/reno-3.0.1/releasenotes/notes/release-date-3a1dec42c91a3f0b.yaml        
1970-01-01 01:00:00.000000000 +0100
+++ new/reno-3.1.0/releasenotes/notes/release-date-3a1dec42c91a3f0b.yaml        
2020-05-14 18:12:18.000000000 +0200
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add an option, ``add_release_date``, to print the release dates for every
+    version.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/reno-3.0.1/releasenotes/notes/sphinx-with-tarballs-d3215fc6831c3516.yaml 
new/reno-3.1.0/releasenotes/notes/sphinx-with-tarballs-d3215fc6831c3516.yaml
--- 
old/reno-3.0.1/releasenotes/notes/sphinx-with-tarballs-d3215fc6831c3516.yaml    
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/reno-3.1.0/releasenotes/notes/sphinx-with-tarballs-d3215fc6831c3516.yaml    
    2020-05-14 18:12:18.000000000 +0200
@@ -0,0 +1,9 @@
+---
+fixes:
+  - |
+    Previously, it was not possible build documentation that used the
+    ``release-notes`` Sphinx extension from tarballs. The Sphinx extension
+    will now search the following directories, relative to the working
+    directory of the ``sphinx-build`` tool, to find the release notes
+    directory: ``.``, ``..``, and ``../..``. This only applies when it is
+    not possible to discover this information using git.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/_exts/show_reno_config.py 
new/reno-3.1.0/reno/_exts/show_reno_config.py
--- old/reno-3.0.1/reno/_exts/show_reno_config.py       2020-04-01 
21:32:27.000000000 +0200
+++ new/reno-3.1.0/reno/_exts/show_reno_config.py       2020-05-14 
18:12:18.000000000 +0200
@@ -31,7 +31,7 @@
 
 def _format_option_help(options):
     "Produce RST lines for the configuration options."
-    for opt in options:
+    for opt in sorted(options, key=lambda opt: opt.name):
         yield '``{}``'.format(opt.name)
         for l in _multi_line_string(opt.help, '  '):
             yield l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/cache.py new/reno-3.1.0/reno/cache.py
--- old/reno-3.0.1/reno/cache.py        2020-04-01 21:32:27.000000000 +0200
+++ new/reno-3.1.0/reno/cache.py        2020-05-14 18:12:18.000000000 +0200
@@ -54,6 +54,10 @@
             {'version': k, 'files': v}
             for k, v in notes.items()
         ],
+        'dates': [
+            {'version': k, 'date': v}
+            for k, v in s.get_version_dates().items()
+        ],
         'file-contents': file_contents,
     }
     return cache
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/config.py 
new/reno-3.1.0/reno/config.py
--- old/reno-3.0.1/reno/config.py       2020-04-01 21:32:27.000000000 +0200
+++ new/reno-3.1.0/reno/config.py       2020-05-14 18:12:18.000000000 +0200
@@ -64,9 +64,15 @@
         The template used by reno new to create a note.
         """)),
 
+    Opt('add_release_date', False,
+        textwrap.dedent("""\
+        Should the report include release date (True) based on
+        the date of objects associated with the release tag.
+        """)),
+
     Opt('release_tag_re',
         textwrap.dedent('''\
-        ((?:v?[\d.ab]|rc)+)  # digits, a, b, and rc cover regular and
+        ((?:v?[\\d.ab]|rc)+)  # digits, a, b, and rc cover regular and
                            # pre-releases
         '''),
         textwrap.dedent("""\
@@ -77,7 +83,7 @@
 
     Opt('pre_release_tag_re',
         textwrap.dedent('''\
-        (?P<pre_release>\.v?\d+(?:[ab]|rc)+\d*)$
+        (?P<pre_release>\\.v?\\d+(?:[ab]|rc)+\\d*)$
         '''),
         textwrap.dedent("""\
         The regex pattern used to check if a valid release version tag
@@ -228,7 +234,8 @@
         except IOError as err:
             self._report_failure_config_file(filename, err)
         else:
-            self.override(**self._contents)
+            if self._contents:
+                self.override(**self._contents)
 
     def _report_missing_config_files(self, filenames):
         # NOTE(dhellmann): This is extracted so we can mock it for
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/create.py 
new/reno-3.1.0/reno/create.py
--- old/reno-3.0.1/reno/create.py       2020-04-01 21:32:27.000000000 +0200
+++ new/reno-3.1.0/reno/create.py       2020-05-14 18:12:18.000000000 +0200
@@ -10,8 +10,6 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-from __future__ import print_function
-
 import os
 import subprocess
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/formatter.py 
new/reno-3.1.0/reno/formatter.py
--- old/reno-3.0.1/reno/formatter.py    2020-04-01 21:32:27.000000000 +0200
+++ new/reno-3.1.0/reno/formatter.py    2020-05-14 18:12:18.000000000 +0200
@@ -10,8 +10,6 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-from __future__ import print_function
-
 
 def _indent_for_list(text, prefix='  '):
     """Indent some text to make it work as a list entry.
@@ -71,6 +69,10 @@
         report.append('=' * len(version_title))
         report.append('')
 
+        if config.add_release_date:
+            report.append('Release Date: ' + loader.get_version_date(version))
+            report.append('')
+
         # Add the preludes.
         notefiles = loader[version]
         prelude_name = config.prelude_section_name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/linter.py 
new/reno-3.1.0/reno/linter.py
--- old/reno-3.0.1/reno/linter.py       2020-04-01 21:32:27.000000000 +0200
+++ new/reno-3.1.0/reno/linter.py       2020-05-14 18:12:18.000000000 +0200
@@ -10,8 +10,6 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-from __future__ import print_function
-
 import glob
 import logging
 import os.path
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/lister.py 
new/reno-3.1.0/reno/lister.py
--- old/reno-3.0.1/reno/lister.py       2020-04-01 21:32:27.000000000 +0200
+++ new/reno-3.1.0/reno/lister.py       2020-05-14 18:12:18.000000000 +0200
@@ -10,8 +10,6 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-from __future__ import print_function
-
 import logging
 
 from reno import loader
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/loader.py 
new/reno-3.1.0/reno/loader.py
--- old/reno-3.0.1/reno/loader.py       2020-04-01 21:32:27.000000000 +0200
+++ new/reno-3.1.0/reno/loader.py       2020-05-14 18:12:18.000000000 +0200
@@ -11,6 +11,7 @@
 # under the License.
 
 import collections
+from datetime import datetime
 import logging
 import os.path
 
@@ -55,6 +56,7 @@
         self._cache = None
         self._scanner = None
         self._scanner_output = None
+        self._tags_to_dates = None
         self._cache_filename = get_cache_filename(conf)
 
         self._load_data()
@@ -76,9 +78,14 @@
                     (n['version'], n['files'])
                     for n in self._cache['notes']
                 )
+                self._tags_to_dates = collections.OrderedDict(
+                    (n['version'], n['date'])
+                    for n in self._cache['dates']
+                )
         else:
             self._scanner = scanner.Scanner(self._config)
             self._scanner_output = self._scanner.get_notes_by_version()
+            self._tags_to_dates = self._scanner.get_version_dates()
 
     @property
     def versions(self):
@@ -89,6 +96,13 @@
         "Return data about the files that should go into a given version."
         return self._scanner_output[version]
 
+    def get_version_date(self, version):
+        "Return release data for a version."
+        if version in self._tags_to_dates.keys():
+            date = datetime.fromtimestamp(self._tags_to_dates[version])
+            return date.strftime("%Y-%m-%d")
+        return "Unknown"
+
     def parse_note_file(self, filename, sha):
         """Return the data structure encoded in the note file.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/report.py 
new/reno-3.1.0/reno/report.py
--- old/reno-3.0.1/reno/report.py       2020-04-01 21:32:27.000000000 +0200
+++ new/reno-3.1.0/reno/report.py       2020-05-14 18:12:18.000000000 +0200
@@ -10,8 +10,6 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-from __future__ import print_function
-
 from reno import formatter
 from reno import loader
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/scanner.py 
new/reno-3.1.0/reno/scanner.py
--- old/reno-3.0.1/reno/scanner.py      2020-04-01 21:32:27.000000000 +0200
+++ new/reno-3.1.0/reno/scanner.py      2020-05-14 18:12:18.000000000 +0200
@@ -10,8 +10,6 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-from __future__ import print_function
-
 import collections
 import fnmatch
 import logging
@@ -391,6 +389,7 @@
     # Populated by _load_tags().
     _all_tags = None
     _shas_to_tags = None
+    _tags_to_dates = None
 
     def _get_commit_from_tag(self, tag, tag_sha):
         """Return the commit referenced by the tag and when it was tagged."""
@@ -434,9 +433,11 @@
             if k.startswith(b'refs/tags/')
         }
         self._shas_to_tags = {}
+        self._tags_to_dates = {}
         for tag, tag_sha in self._all_tags.items():
             tagged_sha, date = self._get_commit_from_tag(tag, tag_sha)
             self._shas_to_tags.setdefault(tagged_sha, []).append((tag, date))
+            self._tags_to_dates[tag] = date
 
     def get_tags_on_commit(self, sha):
         "Return the tag(s) on a commit, in application order."
@@ -659,13 +660,13 @@
                     c.commit.sha().hexdigest().encode('ascii'))
                 if tags:
                     return tags[-1]
-                else:
-                    # Naughty, naughty, branching without tagging.
-                    LOG.info(
-                        ('There is no tag on commit %s at the base of %s. '
-                         'Branch scan short-cutting is disabled.'),
-                        c.commit.sha().hexdigest(), branch)
-                    return None
+
+        # Naughty, naughty, branching without tagging.
+        LOG.info(
+            'There is no tag on commit %s at the base of %s. '
+            'Branch scan short-cutting is disabled.',
+            c.commit.sha().hexdigest(), branch,
+        )
         return None
 
     def _topo_traversal(self, branch):
@@ -759,8 +760,8 @@
                     # later, as long as we haven't already processed
                     # it.
                     first_parent = entry.commit.parents[0]
-                    if (first_parent not in todo and
-                            first_parent not in emitted):
+                    if (first_parent not in todo
+                            and first_parent not in emitted):
                         todo.appendleft(first_parent)
                     continue
 
@@ -917,6 +918,12 @@
                 return candidate
         return None
 
+    def get_version_dates(self):
+        "Return a dict mapping versions to dates."
+        if self._repo._tags_to_dates is not None:
+            return self._repo._tags_to_dates.copy()
+        return {}
+
     def get_notes_by_version(self, branch=None):
         """Return an OrderedDict mapping versions to lists of notes files.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/setup_command.py 
new/reno-3.1.0/reno/setup_command.py
--- old/reno-3.0.1/reno/setup_command.py        2020-04-01 21:32:27.000000000 
+0200
+++ new/reno-3.1.0/reno/setup_command.py        2020-05-14 18:12:18.000000000 
+0200
@@ -20,6 +20,8 @@
 - https://github.com/pypa/setuptools/blob/v36.0.0/setuptools/command/sdist.py
 """
 
+import typing
+
 from distutils import cmd
 from distutils import errors
 from distutils import log
@@ -102,7 +104,7 @@
     # unicode, causing finalize_options to fail if invoked again. Workaround
     # for http://bugs.python.org/issue19570
     def _ensure_stringlike(self, option, what, default=None):
-        # type: (unicode, unicode, Any) -> Any
+        # type: (typing.unicode, typing.unicode, typing.Any) -> typing.Any
         val = getattr(self, option)
         if val is None:
             setattr(self, option, default)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/sphinxext.py 
new/reno-3.1.0/reno/sphinxext.py
--- old/reno-3.0.1/reno/sphinxext.py    2020-04-01 21:32:27.000000000 +0200
+++ new/reno-3.1.0/reno/sphinxext.py    2020-05-14 18:12:18.000000000 +0200
@@ -9,18 +9,16 @@
 # 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 __future__ import unicode_literals
-
 import os.path
 
 from docutils import nodes
 from docutils.parsers import rst
 from docutils.parsers.rst import directives
 from docutils import statemachine
+from dulwich import repo
 from sphinx.util import logging
 from sphinx.util.nodes import nested_parse_with_titles
 
-from dulwich import repo
 import reno
 from reno import config
 from reno import defaults
@@ -50,16 +48,35 @@
         'unreleased-version-title': directives.unchanged,
     }
 
-    def run(self):
-        title = ' '.join(self.content)
-        branch = self.options.get('branch')
-        reporoot_opt = self.options.get('reporoot', '.')
+    def _find_reporoot(self, reporoot_opt, relnotessubdir_opt):
+        """Find root directory of project."""
         reporoot = os.path.abspath(reporoot_opt)
         # When building on RTD.org the root directory may not be
         # the current directory, so look for it.
-        reporoot = repo.Repo.discover(reporoot).path
-        relnotessubdir = self.options.get('relnotessubdir',
-                                          defaults.RELEASE_NOTES_SUBDIR)
+        try:
+            return repo.Repo.discover(reporoot).path
+        except Exception:
+            pass
+
+        for root in ('.', '..', '../..'):
+            if os.path.exists(os.path.join(root, relnotessubdir_opt)):
+                return root
+
+        raise Exception(
+            'Could not discover root directory; tried: %s' % ', '.join([
+                os.path.abspath(root) for root in ('.', '..', '../..')
+            ])
+        )
+
+    def run(self):
+        title = ' '.join(self.content)
+        branch = self.options.get('branch')
+        relnotessubdir = self.options.get(
+            'relnotessubdir', defaults.RELEASE_NOTES_SUBDIR,
+        )
+        reporoot = self._find_reporoot(
+            self.options.get('reporoot', '.'), relnotessubdir,
+        )
         ignore_notes = [
             name.strip()
             for name in self.options.get('ignore-notes', '').split(',')
@@ -126,6 +143,6 @@
     app.add_directive('release-notes', ReleaseNotesDirective)
     metadata_dict = {
         'version': reno.__version__,
-        'parallel_read_safe': False
+        'parallel_read_safe': True
     }
     return metadata_dict
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/tests/test_cache.py 
new/reno-3.1.0/reno/tests/test_cache.py
--- old/reno-3.0.1/reno/tests/test_cache.py     2020-04-01 21:32:27.000000000 
+0200
+++ new/reno-3.1.0/reno/tests/test_cache.py     2020-05-14 18:12:18.000000000 
+0200
@@ -13,10 +13,11 @@
 # under the License.
 
 import collections
+from unittest import mock
+
 import fixtures
 import textwrap
 
-import mock
 
 from reno import cache
 from reno import config
@@ -58,12 +59,19 @@
     def _get_note_body(self, filename, sha):
         return self.note_bodies.get(filename, '')
 
+    def _get_dates(self):
+        return {'1.0.0': 1547874431}
+
     def setUp(self):
         super(TestCache, self).setUp()
         self.useFixture(
             fixtures.MockPatch('reno.scanner.Scanner.get_file_at_commit',
                                new=self._get_note_body)
         )
+        self.useFixture(
+            fixtures.MockPatch('reno.scanner.Scanner.get_version_dates',
+                               new=self._get_dates)
+        )
         self.c = config.Config('.')
 
     @mock.patch('reno.scanner.Scanner.get_notes_by_version')
@@ -72,6 +80,7 @@
         mock_get_notes.side_effect = self.scanner_output
         mock_get_branches.return_value = ['stable/1.0']
         expected = {
+            'dates': [{'version': '1.0.0', 'date': 1547874431}],
             'notes': [
                 {'version': '0.0.0',
                  'files': [('note1', 'shaA')]},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/tests/test_config.py 
new/reno-3.1.0/reno/tests/test_config.py
--- old/reno-3.0.1/reno/tests/test_config.py    2020-04-01 21:32:27.000000000 
+0200
+++ new/reno-3.1.0/reno/tests/test_config.py    2020-05-14 18:12:18.000000000 
+0200
@@ -13,6 +13,7 @@
 # under the License.
 import argparse
 import os
+from unittest import mock
 
 import fixtures
 
@@ -21,8 +22,6 @@
 from reno import main
 from reno.tests import base
 
-import mock
-
 
 class TestConfig(base.TestCase):
     EXAMPLE_CONFIG = """
@@ -95,6 +94,14 @@
         config_path = self.tempdir.join('reno.yaml')
         self._test_load_file(config_path)
 
+    def test_load_file_empty(self):
+        config_path = self.tempdir.join('reno.yaml')
+        with open(config_path, 'w') as fd:
+            fd.write('# Add reno config here')
+        self.addCleanup(os.unlink, config_path)
+        c = config.Config(self.tempdir.path)
+        self.assertEqual(True, c.collapse_pre_releases)
+
     def test_get_default(self):
         d = config.Config.get_default('notesdir')
         self.assertEqual('notes', d)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/tests/test_create.py 
new/reno-3.1.0/reno/tests/test_create.py
--- old/reno-3.0.1/reno/tests/test_create.py    2020-04-01 21:32:27.000000000 
+0200
+++ new/reno-3.1.0/reno/tests/test_create.py    2020-05-14 18:12:18.000000000 
+0200
@@ -12,9 +12,10 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
+from unittest import mock
+
 import fixtures
 import io
-import mock
 
 from reno import create
 from reno.tests import base
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/tests/test_exts.py 
new/reno-3.1.0/reno/tests/test_exts.py
--- old/reno-3.0.1/reno/tests/test_exts.py      2020-04-01 21:32:27.000000000 
+0200
+++ new/reno-3.1.0/reno/tests/test_exts.py      2020-05-14 18:12:18.000000000 
+0200
@@ -100,7 +100,7 @@
         opt = config.Opt(
             'release_tag_re',
             textwrap.dedent('''\
-            ((?:[\d.ab]|rc)+)  # digits, a, b, and rc cover regular and
+            ((?:[\\d.ab]|rc)+)  # digits, a, b, and rc cover regular and
                                # pre-releases
             '''),
             textwrap.dedent("""\
@@ -120,7 +120,7 @@
 
           ::
 
-            ((?:[\d.ab]|rc)+)  # digits, a, b, and rc cover regular and
+            ((?:[\\d.ab]|rc)+)  # digits, a, b, and rc cover regular and
                                # pre-releases
         """)
         self.assertEqual(expected, actual)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/tests/test_formatter.py 
new/reno-3.1.0/reno/tests/test_formatter.py
--- old/reno-3.0.1/reno/tests/test_formatter.py 2020-04-01 21:32:27.000000000 
+0200
+++ new/reno-3.1.0/reno/tests/test_formatter.py 2020-05-14 18:12:18.000000000 
+0200
@@ -12,7 +12,7 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-import mock
+from unittest import mock
 
 from reno import config
 from reno import formatter
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/tests/test_loader.py 
new/reno-3.1.0/reno/tests/test_loader.py
--- old/reno-3.0.1/reno/tests/test_loader.py    2020-04-01 21:32:27.000000000 
+0200
+++ new/reno-3.1.0/reno/tests/test_loader.py    2020-05-14 18:12:18.000000000 
+0200
@@ -14,9 +14,9 @@
 
 import logging
 import textwrap
+from unittest import mock
 
 import fixtures
-import mock
 import yaml
 
 from reno import config
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/tests/test_scanner.py 
new/reno-3.1.0/reno/tests/test_scanner.py
--- old/reno-3.0.1/reno/tests/test_scanner.py   2020-04-01 21:32:27.000000000 
+0200
+++ new/reno-3.1.0/reno/tests/test_scanner.py   2020-05-14 18:12:18.000000000 
+0200
@@ -12,8 +12,6 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-from __future__ import unicode_literals
-
 import itertools
 import logging
 import os.path
@@ -21,11 +19,11 @@
 import subprocess
 import time
 import unittest
+from unittest import mock
 
 from dulwich import diff_tree
 from dulwich import objects
 import fixtures
-import mock
 from testtools.content import text_content
 
 from reno import config
@@ -68,7 +66,7 @@
     def setUp(self):
         super(GPGKeyFixture, self).setUp()
         tempdir = self.useFixture(fixtures.TempDir())
-        gnupg_version_re = re.compile('^gpg\s.*\s([\d+])\.([\d+])\.([\d+])')
+        gnupg_version_re = re.compile(r'^gpg\s.*\s([\d+])\.([\d+])\.([\d+])')
         gnupg_version = utils.check_output(['gpg', '--version'],
                                            cwd=tempdir.path)
         for line in gnupg_version.split('\n'):
@@ -1271,10 +1269,19 @@
         self.repo.git('tag', '-d', '2.0.0')
         self._add_notes_file('slug4')
         self.repo.git('checkout', 'master')
-        self.assertIsNone(
-            self.scanner._get_branch_base('not-master')
+        self.assertEqual(
+            '1.0.0',
+            self.scanner._get_branch_base('not-master'),
         )
 
+    def test_no_tags(self):
+        # remove all tags from before the branch
+        self.repo.git('tag', '-d', '2.0.0')
+        self.repo.git('tag', '-d', '1.0.0')
+        self._add_notes_file('slug4')
+        self.repo.git('checkout', 'master')
+        self.assertIsNone(self.scanner._get_branch_base('not-master'))
+
 
 class BranchTest(Base):
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno/tests/test_utils.py 
new/reno-3.1.0/reno/tests/test_utils.py
--- old/reno-3.0.1/reno/tests/test_utils.py     2020-04-01 21:32:27.000000000 
+0200
+++ new/reno-3.1.0/reno/tests/test_utils.py     2020-05-14 18:12:18.000000000 
+0200
@@ -12,7 +12,7 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-import mock
+from unittest import mock
 
 from reno.tests import base
 from reno import utils
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno.egg-info/PKG-INFO 
new/reno-3.1.0/reno.egg-info/PKG-INFO
--- old/reno-3.0.1/reno.egg-info/PKG-INFO       2020-04-01 21:33:22.000000000 
+0200
+++ new/reno-3.1.0/reno.egg-info/PKG-INFO       2020-05-14 18:13:05.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: reno
-Version: 3.0.1
+Version: 3.1.0
 Summary: RElease NOtes manager
 Home-page: https://docs.openstack.org/reno/latest/
 Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno.egg-info/SOURCES.txt 
new/reno-3.1.0/reno.egg-info/SOURCES.txt
--- old/reno-3.0.1/reno.egg-info/SOURCES.txt    2020-04-01 21:33:22.000000000 
+0200
+++ new/reno-3.1.0/reno.egg-info/SOURCES.txt    2020-05-14 18:13:05.000000000 
+0200
@@ -60,11 +60,13 @@
 releasenotes/notes/ignore-notes-option-9d0bde540fbcdf22.yaml
 releasenotes/notes/ignore-null-merges-56b7a8ed9b20859e.yaml
 releasenotes/notes/include-working-copy-d0aed2e77bb095e6.yaml
+releasenotes/notes/keep-scanning-past-branchpoint-61f72023c32cf0b3.yaml
 releasenotes/notes/log-levels-and-sphinx-161-6efe0d291718a657.yaml
 releasenotes/notes/no-show-source-option-ee02766b26fe53be.yaml
 releasenotes/notes/null-merge-infinite-loop-670367094ad83e19.yaml
 releasenotes/notes/optional-oslosphinx-55843a7f80a14e58.yaml
 releasenotes/notes/reference-name-mangling-3c845ebf88af6944.yaml
+releasenotes/notes/release-date-3a1dec42c91a3f0b.yaml
 releasenotes/notes/repodir-config-file-b6b8edc2975964fc.yaml
 releasenotes/notes/report-title-option-f0875bfdbc54dd7b.yaml
 releasenotes/notes/reverse-slug-order-4c5f94e72d4f6fb9.yaml
@@ -73,6 +75,7 @@
 releasenotes/notes/show-less-unreleased-802781a1a3bf110e.yaml
 releasenotes/notes/show-note-filename-in-report-a1118c917588b58d.yaml
 releasenotes/notes/sphinx-extension-4a092b4102370246.yaml
+releasenotes/notes/sphinx-with-tarballs-d3215fc6831c3516.yaml
 releasenotes/notes/stable-section-anchors-d99258b6df39c0fa.yaml
 releasenotes/notes/stop-scanning-branch-e5a8937c248acc99.yaml
 releasenotes/notes/stop-scanning-branch-option-6a0156b183814d7f.yaml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno.egg-info/pbr.json 
new/reno-3.1.0/reno.egg-info/pbr.json
--- old/reno-3.0.1/reno.egg-info/pbr.json       2020-04-01 21:33:22.000000000 
+0200
+++ new/reno-3.1.0/reno.egg-info/pbr.json       2020-05-14 18:13:05.000000000 
+0200
@@ -1 +1 @@
-{"git_version": "bd3886a", "is_release": true}
\ No newline at end of file
+{"git_version": "cc09e3d", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/reno.egg-info/requires.txt 
new/reno-3.1.0/reno.egg-info/requires.txt
--- old/reno-3.0.1/reno.egg-info/requires.txt   2020-04-01 21:33:22.000000000 
+0200
+++ new/reno-3.1.0/reno.egg-info/requires.txt   2020-05-14 18:13:05.000000000 
+0200
@@ -7,7 +7,6 @@
 docutils>=0.11
 
 [test]
-mock>=1.2
 coverage!=4.4,>=4.0
 python-subunit>=0.0.18
 openstackdocstheme>=1.11.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/test-requirements.txt 
new/reno-3.1.0/test-requirements.txt
--- old/reno-3.0.1/test-requirements.txt        2020-04-01 21:32:27.000000000 
+0200
+++ new/reno-3.1.0/test-requirements.txt        2020-05-14 18:12:18.000000000 
+0200
@@ -2,7 +2,6 @@
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
 
-mock>=1.2
 
 coverage!=4.4,>=4.0 # Apache-2.0
 python-subunit>=0.0.18
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/reno-3.0.1/tox.ini new/reno-3.1.0/tox.ini
--- old/reno-3.0.1/tox.ini      2020-04-01 21:32:27.000000000 +0200
+++ new/reno-3.1.0/tox.ini      2020-05-14 18:12:18.000000000 +0200
@@ -12,11 +12,11 @@
     -r{toxinidir}/test-requirements.txt
     .[sphinx]
 commands =
-    stestr run --slowest {posargs}
+    stestr run --slowest --suppress-attachments {posargs}
 
 [testenv:pep8]
 deps = {[testenv]deps}
-    hacking >= 1.1.0,<1.2.0
+    hacking >= 3.0.0,<3.1.0
 commands =
   flake8
   reno -q lint
@@ -53,8 +53,8 @@
 
 [flake8]
 # E123, E125 skipped as they are invalid PEP-8.
-
+# W503 line break before binary operator
 show-source = True
-ignore = E123,E125
+ignore = E123,E125,W503
 builtins = _
 exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build


Reply via email to