Hello community,

here is the log from the commit of package python-os-api-ref for 
openSUSE:Factory checked in at 2019-05-03 22:41:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-os-api-ref (Old)
 and      /work/SRC/openSUSE:Factory/.python-os-api-ref.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-os-api-ref"

Fri May  3 22:41:42 2019 rev:6 rq:692848 version:1.6.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-os-api-ref/python-os-api-ref.changes      
2018-03-19 23:35:22.243862917 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-os-api-ref.new.5148/python-os-api-ref.changes
    2019-05-03 22:41:43.639153138 +0200
@@ -1,0 +2,23 @@
+Mon Apr  8 11:40:47 UTC 2019 - cloud-de...@suse.de
+
+- update to version 1.6.0
+  - Change openstack-dev to openstack-discuss
+  - Fix UnicodeDecodeError
+  - readthedocs.io support
+  - Remove name from project stanza
+  - Use 'sphinx.util.logging'
+  - Update sphinx extension logging
+  - Raise warning if top-level value is not a dict
+  - Fix sphinx-build invocation
+  - Update the remained discuss email
+  - Fixing duplicate label issue.
+  - switch documentation job to new PTI
+  - General overhaul of testing setup
+  - tests: Support Sphinx 1.8+
+  - Use openstackdocstheme
+  - Updated from global requirements
+  - import zuul job settings from project-config
+  - docs: Remove broken link
+- add 0001-Fix-microversion-test-handle-different-HTML-renderin.patch
+
+-------------------------------------------------------------------

Old:
----
  os-api-ref-1.5.0.tar.gz

New:
----
  0001-Fix-microversion-test-handle-different-HTML-renderin.patch
  os-api-ref-1.6.0.tar.gz

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

Other differences:
------------------
++++++ python-os-api-ref.spec ++++++
--- /var/tmp/diff_new_pack.XGgOXj/_old  2019-05-03 22:41:44.535155024 +0200
+++ /var/tmp/diff_new_pack.XGgOXj/_new  2019-05-03 22:41:44.539155032 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-os-api-ref
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,37 +12,47 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
-%global sname os-api-ref
 Name:           python-os-api-ref
-Version:        1.5.0
+Version:        1.6.0
 Release:        0
 Summary:        Sphinx Extensions to support API reference sites in OpenStack
 License:        Apache-2.0
 Group:          Development/Languages/Python
-Url:            https://launchpad.net/%{sname}
-Source0:        
https://files.pythonhosted.org/packages/source/o/%{sname}/%{sname}-%{version}.tar.gz
+URL:            https://launchpad.net/%{sname}
+Source0:        
https://files.pythonhosted.org/packages/source/o/os-api-ref/os-api-ref-1.6.0.tar.gz
+# https://review.openstack.org/#/c/630146/
+Patch1:         0001-Fix-microversion-test-handle-different-HTML-renderin.patch
 BuildRequires:  openstack-macros
-BuildRequires:  python-PyYAML >= 3.10
-BuildRequires:  python-Sphinx
-BuildRequires:  python-beautifulsoup4 >= 4.6.0
-BuildRequires:  python-docutils >= 0.11
-BuildRequires:  python-openstackdocstheme >= 1.18.1
-BuildRequires:  python-oslosphinx >= 4.7.0
-BuildRequires:  python-pbr >= 2.0.0
-BuildRequires:  python-python-subunit >= 1.0.0
-BuildRequires:  python-sphinx-testing >= 0.7.2
-BuildRequires:  python-testrepository >= 0.0.18
-BuildRequires:  python-testtools >= 2.2.0
-Requires:       python-PyYAML >= 3.10
+BuildRequires:  python2-PyYAML >= 3.12
+BuildRequires:  python2-Sphinx
+BuildRequires:  python2-beautifulsoup4
+BuildRequires:  python2-openstackdocstheme >= 1.18.1
+BuildRequires:  python2-pbr >= 2.0.0
+BuildRequires:  python2-python-subunit
+BuildRequires:  python2-sphinx-testing
+BuildRequires:  python2-stestr
+BuildRequires:  python2-testrepository
+BuildRequires:  python2-testtools
+BuildRequires:  python3-PyYAML >= 3.12
+BuildRequires:  python3-Sphinx
+BuildRequires:  python3-beautifulsoup4
+BuildRequires:  python3-openstackdocstheme >= 1.18.1
+BuildRequires:  python3-pbr >= 2.0.0
+BuildRequires:  python3-python-subunit
+BuildRequires:  python3-sphinx-testing
+BuildRequires:  python3-stestr
+BuildRequires:  python3-testrepository
+BuildRequires:  python3-testtools
+Requires:       python-PyYAML >= 3.12
 Requires:       python-Sphinx
-Requires:       python-docutils >= 0.11
 Requires:       python-openstackdocstheme >= 1.18.1
 Requires:       python-pbr >= 2.0.0
 BuildArch:      noarch
+%python_subpackages
 
 %description
 This project is a collection of sphinx stanzas that assist in building an API
@@ -57,22 +67,22 @@
 expand / collapse all sections.
 
 %prep
-%autosetup -n %{sname}-%{version}
+%autosetup -p1 -n os-api-ref-1.6.0
 %py_req_cleanup
 
 %build
-%{py2_build}
+%{python_build}
 
 %install
-%{py2_install}
+%{python_install}
 
 %check
-%{__python2} setup.py testr
+%python_exec -m stestr.cli run
 
-%files
+%files %{python_files}
 %license LICENSE
 %doc README.rst ChangeLog
-%{python2_sitelib}/os_api_ref
-%{python2_sitelib}/*.egg-info
+%{python_sitelib}/os_api_ref
+%{python_sitelib}/*.egg-info
 
 %changelog

++++++ 0001-Fix-microversion-test-handle-different-HTML-renderin.patch ++++++
>From 4e56d09dafaa7e2b2dc9fd2cd1864ffe6c39e219 Mon Sep 17 00:00:00 2001
From: Luigi Toscano <ltosc...@redhat.com>
Date: Fri, 11 Jan 2019 11:58:11 +0100
Subject: [PATCH] Fix microversion test: handle different HTML renderings

The rendered HTML changes a bit between beautifulsoup4 4.6.3 and 4.7.1.
A regular expression can handle both cases.

Change-Id: I64d4c56b480d54b50e58141999636b91b5fb4f94
---
 os_api_ref/tests/test_microversions.py | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/os_api_ref/tests/test_microversions.py 
b/os_api_ref/tests/test_microversions.py
index b58f6a6..d58f673 100644
--- a/os_api_ref/tests/test_microversions.py
+++ b/os_api_ref/tests/test_microversions.py
@@ -45,13 +45,13 @@ class TestMicroversions(base.TestCase):
     def test_rest_method(self):
         """Test that min / max mv css class attributes are set"""
         content = self.soup.find_all(class_='rp_min_ver_2_17')
-        self.assertIn(
-            '<div class="operation-grp rp_min_ver_2_17 rp_max_ver_2_19 ">',
-            str(content[0]))
+        self.assertRegexpMatches(
+            str(content[0]),
+            '^<div class="operation-grp rp_min_ver_2_17 rp_max_ver_2_19 ?"')
         content = self.soup.find_all(class_='rp_max_ver_2_19')
-        self.assertIn(
-            '<div class="operation-grp rp_min_ver_2_17 rp_max_ver_2_19 ">',
-            str(content[0]))
+        self.assertRegexpMatches(
+            str(content[0]),
+            '^<div class="operation-grp rp_min_ver_2_17 rp_max_ver_2_19 ?"')
 
     def test_parameters_table(self):
         """Test that min / max mv css class attributes are set in params"""
-- 
2.21.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.XGgOXj/_old  2019-05-03 22:41:44.563155083 +0200
+++ /var/tmp/diff_new_pack.XGgOXj/_new  2019-05-03 22:41:44.563155083 +0200
@@ -1,8 +1,8 @@
 <services>
   <service mode="disabled" name="renderspec">
-    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/queens/openstack/os-api-ref/os-api-ref.spec.j2</param>
+    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/stein/openstack/os-api-ref/os-api-ref.spec.j2</param>
     <param name="output-name">python-os-api-ref.spec</param>
-    <param 
name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/queens/requirements.txt</param>
+    <param 
name="requirements">https://raw.githubusercontent.com/openstack/os-api-ref/master/requirements.txt</param>
     <param name="changelog-email">cloud-de...@suse.de</param>
     <param name="changelog-provider">gh,openstack,os-api-ref</param>
   </service>

++++++ os-api-ref-1.5.0.tar.gz -> os-api-ref-1.6.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/.stestr.conf 
new/os-api-ref-1.6.0/.stestr.conf
--- old/os-api-ref-1.5.0/.stestr.conf   1970-01-01 01:00:00.000000000 +0100
+++ new/os-api-ref-1.6.0/.stestr.conf   2018-12-12 11:53:22.000000000 +0100
@@ -0,0 +1,3 @@
+[DEFAULT]
+test_path=${OS_TEST_PATH:-./os_api_ref/tests}
+top_dir=./
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/.zuul.yaml 
new/os-api-ref-1.6.0/.zuul.yaml
--- old/os-api-ref-1.5.0/.zuul.yaml     2018-01-18 15:20:43.000000000 +0100
+++ new/os-api-ref-1.6.0/.zuul.yaml     2018-12-12 11:53:22.000000000 +0100
@@ -10,7 +10,12 @@
       - openstack/os-api-ref
 
 - project:
-    name: openstack/os-api-ref
+    templates:
+      - openstack-python-jobs
+      - openstack-python35-jobs
+      - openstack-python36-jobs
+      - check-requirements
+      - publish-openstack-docs-pti
     check:
       jobs:
         - os-api-ref-nova-src
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/AUTHORS new/os-api-ref-1.6.0/AUTHORS
--- old/os-api-ref-1.5.0/AUTHORS        2018-01-18 15:23:16.000000000 +0100
+++ new/os-api-ref-1.6.0/AUTHORS        2018-12-12 11:55:31.000000000 +0100
@@ -4,22 +4,28 @@
 Daniel Gonzalez <dan...@gonzalez-nothnagel.de>
 Dirk Mueller <d...@dmllr.de>
 Dmitry Shachnev <mity...@ubuntu.com>
+Doug Hellmann <d...@doughellmann.com>
 Flavio Percoco <flape...@gmail.com>
+Gergely Csatari <gergely.csat...@nokia.com>
+Graham Hayes <g...@ham.ie>
 Graham Hayes <graham.ha...@hpe.com>
 Karen Bradshaw <kbhaw...@gmail.com>
 Monty Taylor <mord...@inaugust.com>
 Nam Nguyen Hoai <na...@vn.fujitsu.com>
 Ondřej Nový <ondrej.n...@firma.seznam.cz>
 Sean Dague <s...@dague.net>
+Sean McGinnis <sean.mcgin...@gmail.com>
 Stephen Finucane <stephen...@redhat.com>
+Telles Nobrega <tenob...@redhat.com>
 Thomas Bechtold <tbecht...@suse.com>
 Tony Breeds <t...@bakeyournoodle.com>
 Tony Xu <hhkt...@gmail.com>
 Tristan Cacqueray <tdeca...@redhat.com>
 Yuval Brik <yu...@brik.org.il>
-Zuul <z...@review.openstack.org>
 gengchc2 <geng.changc...@zte.com.cn>
 ghanshyam <ghanshyamm...@gmail.com>
+jacky06 <zhang....@99cloud.net>
+melissaml <ma....@99cloud.net>
 ricolin <rico....@easystack.cn>
 shangxiaobj <shangxia...@inspur.com>
 shashi.kant <shashi.k...@nectechnologies.in>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/ChangeLog 
new/os-api-ref-1.6.0/ChangeLog
--- old/os-api-ref-1.5.0/ChangeLog      2018-01-18 15:23:16.000000000 +0100
+++ new/os-api-ref-1.6.0/ChangeLog      2018-12-12 11:55:31.000000000 +0100
@@ -1,6 +1,28 @@
 CHANGES
 =======
 
+1.6.0
+-----
+
+* Fixing duplicate label issue
+* readthedocs.io support
+* Update the remained discuss email
+* Change openstack-dev to openstack-discuss
+* Update sphinx extension logging
+* tests: Support Sphinx 1.8+
+* docs: Remove broken link
+* switch documentation job to new PTI
+* Fix sphinx-build invocation
+* import zuul job settings from project-config
+* Use 'sphinx.util.logging'
+* General overhaul of testing setup
+* Raise warning if top-level value is not a dict
+* Updated from global requirements
+* Updated from global requirements
+* Updated from global requirements
+* Use openstackdocstheme
+* Remove name from project stanza
+
 1.5.0
 -----
 
@@ -10,6 +32,7 @@
 * Add 'uuid' type
 * Fix Zuul jobs
 * Updated from global requirements
+* Fix UnicodeDecodeError
 * Updated from global requirements
 * doc: Remove deprecated call to sphinx.util.compat
 * Remove unconstraint package installation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/PKG-INFO 
new/os-api-ref-1.6.0/PKG-INFO
--- old/os-api-ref-1.5.0/PKG-INFO       2018-01-18 15:23:17.000000000 +0100
+++ new/os-api-ref-1.6.0/PKG-INFO       2018-12-12 11:55:31.000000000 +0100
@@ -1,12 +1,11 @@
 Metadata-Version: 1.1
 Name: os-api-ref
-Version: 1.5.0
+Version: 1.6.0
 Summary: Sphinx Extensions to support API reference sites in OpenStack
 Home-page: https://docs.openstack.org/os-api-ref/latest/
 Author: OpenStack
-Author-email: openstack-...@lists.openstack.org
+Author-email: openstack-disc...@lists.openstack.org
 License: UNKNOWN
-Description-Content-Type: UNKNOWN
 Description: ========================
         Team and repository tags
         ========================
@@ -52,7 +51,7 @@
         A list, in no particular order, of things we should do in this
         project. If you would like to contribute to any of these please show
         up in ``#openstack-dev`` on IRC and ask for ``sdague`` or ``mugsie``
-        to discuss or send an email to the openstack-...@lists.openstack.org 
list
+        to discuss or send an email to the 
openstack-disc...@lists.openstack.org list
         with [api] in the subject line.
         
         * Enhance documentation with more examples and best practices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/README.rst 
new/os-api-ref-1.6.0/README.rst
--- old/os-api-ref-1.5.0/README.rst     2018-01-18 15:20:43.000000000 +0100
+++ new/os-api-ref-1.6.0/README.rst     2018-12-12 11:53:22.000000000 +0100
@@ -43,7 +43,7 @@
 A list, in no particular order, of things we should do in this
 project. If you would like to contribute to any of these please show
 up in ``#openstack-dev`` on IRC and ask for ``sdague`` or ``mugsie``
-to discuss or send an email to the openstack-...@lists.openstack.org list
+to discuss or send an email to the openstack-disc...@lists.openstack.org list
 with [api] in the subject line.
 
 * Enhance documentation with more examples and best practices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/doc/requirements.txt 
new/os-api-ref-1.6.0/doc/requirements.txt
--- old/os-api-ref-1.5.0/doc/requirements.txt   1970-01-01 01:00:00.000000000 
+0100
+++ new/os-api-ref-1.6.0/doc/requirements.txt   2018-12-12 11:53:22.000000000 
+0100
@@ -0,0 +1,5 @@
+# The order of packages is significant, because pip processes them in the order
+# of appearance. Changing the order has an impact on the overall integration
+# process, which may cause wedges in the gate later.
+sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD
+openstackdocstheme>=1.18.1 # Apache-2.0
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/doc/source/conf.py 
new/os-api-ref-1.6.0/doc/source/conf.py
--- old/os-api-ref-1.5.0/doc/source/conf.py     2018-01-18 15:20:43.000000000 
+0100
+++ new/os-api-ref-1.6.0/doc/source/conf.py     2018-12-12 11:53:22.000000000 
+0100
@@ -22,9 +22,14 @@
 extensions = [
     'sphinx.ext.autodoc',
     #'sphinx.ext.intersphinx',
-    'oslosphinx'
+    'openstackdocstheme'
 ]
 
+# openstackdocstheme options
+repository_name = 'openstack/os-api-ref'
+bug_project = 'openstack-doc-tools'
+bug_tag = 'os-api-ref'
+
 # autodoc generation is a bit aggressive and a nuisance when doing heavy
 # text edit cycles.
 # execute "export SPHINX_DEBUG=1" in your terminal to disable
@@ -37,7 +42,7 @@
 
 # General information about the project.
 project = u'os-api-ref'
-copyright = u'2016, The contributors'
+copyright = u'2018, The contributors'
 
 # If true, '()' will be appended to :func: etc. cross-reference text.
 add_function_parentheses = True
@@ -57,9 +62,14 @@
 # html_theme = '_theme'
 # html_static_path = ['static']
 
+html_theme = 'openstackdocs'
+
 # Output file base name for HTML help builder.
 htmlhelp_basename = '%sdoc' % project
 
+# Must set this variable to include year, month, day, hours, and minutes.
+html_last_updated_fmt = '%Y-%m-%d %H:%M'
+
 # Grouping the document tree into LaTeX files. List of tuples
 # (source start file, target name, title, author, documentclass
 # [howto/manual]).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/doc/source/index.rst 
new/os-api-ref-1.6.0/doc/source/index.rst
--- old/os-api-ref-1.5.0/doc/source/index.rst   2018-01-18 15:20:43.000000000 
+0100
+++ new/os-api-ref-1.6.0/doc/source/index.rst   2018-12-12 11:53:22.000000000 
+0100
@@ -1,8 +1,3 @@
-.. os-api-ref documentation master file, created by
-   sphinx-quickstart on Tue Jul  9 22:26:36 2013.
-   You can adapt this file completely to your liking, but it should at least
-   contain the root `toctree` directive.
-
 ==============================================
 Welcome to os-api-ref developer documentation!
 ==============================================
@@ -19,5 +14,4 @@
 ==================
 
 * :ref:`genindex`
-* :ref:`modindex`
 * :ref:`search`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/os_api_ref/__init__.py 
new/os-api-ref-1.6.0/os_api_ref/__init__.py
--- old/os-api-ref-1.5.0/os_api_ref/__init__.py 2018-01-18 15:20:43.000000000 
+0100
+++ new/os-api-ref-1.6.0/os_api_ref/__init__.py 2018-12-12 11:53:25.000000000 
+0100
@@ -12,6 +12,7 @@
 
 from collections import OrderedDict
 import os
+import random
 import re
 
 from docutils import nodes
@@ -19,6 +20,8 @@
 from docutils.parsers.rst.directives.tables import Table
 from docutils.statemachine import ViewList
 import pbr.version
+import six
+from sphinx.util import logging
 from sphinx.util.osutil import copyfile
 import yaml
 
@@ -29,6 +32,8 @@
 __version__ = pbr.version.VersionInfo(
     'os_api_ref').version_string()
 
+LOG = logging.getLogger(__name__)
+
 # This is to allow for a graceful swap from oslosphinx to openstackdocstheme
 THEME = 'openstackdocstheme'
 
@@ -166,8 +171,6 @@
         lineno = self.state_machine.abs_line_number()
         target = nodes.target()
         section = nodes.section(classes=["detail-control"])
-        # env = self.state.document.settings.env
-        # env.app.info("Parent %s" % self.state.parent.attributes)
 
         node = rest_method()
 
@@ -196,7 +199,8 @@
 
         # We need to build a temporary target that we can replace
         # later in the processing to get the TOC to resolve correctly.
-        temp_target = "%s-selector" % node['target']
+        temp_target = "%s-%d-selector" % (node['target'],
+                                          random.randint(1, 1000))
         target = nodes.target(ids=[temp_target])
         self.state.add_target(temp_target, '', target, lineno)
         section += node
@@ -218,25 +222,22 @@
             return YAML_CACHE[fpath]
 
         lookup = {}
-        # self.app.info("Fpath: %s" % fpath)
         try:
             with open(fpath, 'r') as stream:
                 lookup = ordered_load(stream)
         except IOError:
-            self.app.warn(
-                "Parameters file %s not found" % fpath,
-                (self.env.docname, None))
+            LOG.warning("Parameters file not found, %s", fpath,
+                        location=(self.env.docname, None))
             return
         except yaml.YAMLError as exc:
-            self.app.warn(exc)
+            LOG.exception(exc_info=exc)
             raise
 
         if lookup:
             self._check_yaml_sorting(fpath, lookup)
         else:
-            self.app.warn(
-                "Parameters file is empty %s" % fpath,
-                (self.env.docname, None))
+            LOG.warning("Parameters file is empty, %s", fpath,
+                        location=(self.env.docname, None))
             return
 
         YAML_CACHE[fpath] = lookup
@@ -257,15 +258,18 @@
 
         last = None
         for key, value in yaml_data.items():
+            if not isinstance(value, dict):
+                raise Exception('Expected a dict for {0}; got {0}={1}).\n'
+                                'You probably have indentation typo in your'
+                                'YAML source'.format(key, value))
+
             # use of an invalid 'in' value
             if value['in'] not in sections:
-                self.app.warn(
-                    "``%s`` is not a valid value for 'in' (must be one of: %s)"
-                    ". (see ``%s``)" % (
-                        value['in'],
-                        ", ".join(sorted(sections.keys())),
-                        key)
-                    )
+                LOG.warning("``%s`` is not a valid value for 'in' (must be "
+                            "one of: %s). (see ``%s``)",
+                            value['in'],
+                            ", ".join(sorted(sections.keys())),
+                            key)
                 continue
 
             if last is None:
@@ -275,17 +279,13 @@
             current_section = value['in']
             last_section = last[1]['in']
             if sections[current_section] < sections[last_section]:
-                self.app.warn(
-                    "Section out of order. All parameters in section ``%s`` "
-                    "should be after section ``%s``. (see ``%s``)" % (
-                        last_section,
-                        current_section,
-                        last[0]))
+                LOG.warning("Section out of order. All parameters in section "
+                            "``%s`` should be after section ``%s``. (see "
+                            "``%s``)", last_section, current_section, last[0])
             if (sections[value['in']] == sections[last[1]['in']] and
                 key.lower() < last[0].lower()):
-                self.app.warn(
-                    "Parameters out of order ``%s`` should be after ``%s``" % (
-                        last[0], key))
+                LOG.warning("Parameters out of order ``%s`` should be after "
+                            "``%s``", last[0], key)
             last = (key, value)
 
     def yaml_from_file(self, fpath):
@@ -301,17 +301,14 @@
 
         content = "\n".join(self.content)
         parsed = yaml.safe_load(content)
-        # self.app.info("Params loaded is %s" % parsed)
-        # self.app.info("Lookup table looks like %s" % lookup)
         new_content = list()
         for paramlist in parsed:
             if not isinstance(paramlist, dict):
-                self.app.warn(
-                    ("Invalid parameter definition ``%s``. Expected "
-                     "format: ``name: reference``. "
-                     " Skipping." % paramlist),
-                    (self.state_machine.node.source,
-                     self.state_machine.node.line))
+                location = (self.state_machine.node.source,
+                            self.state_machine.node.line)
+                LOG.warning("Invalid parameter definition ``%s``. Expected "
+                            "format: ``name: reference``. Skipping.",
+                            paramlist, location=location)
                 continue
             for name, ref in paramlist.items():
                 if ref in lookup:
@@ -322,11 +319,10 @@
                     # used this way, however it does provide a way to
                     # track down where the parameters list is that is
                     # wrong. So it's good enough for now.
-                    self.app.warn(
-                        ("No field definition for ``%s`` found in ``%s``. "
-                         " Skipping." % (ref, fpath)),
-                        (self.state_machine.node.source,
-                         self.state_machine.node.line))
+                    location = (self.state_machine.node.source,
+                                self.state_machine.node.line)
+                    LOG.warning("No field definition for ``%s`` found in "
+                                "``%s``. Skipping.", ref, fpath)
 
                 # Check for path params in stanza
                 for i, param in enumerate(self.env.path_params):
@@ -340,19 +336,15 @@
             # Warn that path parameters are not set in rest_parameter
             # stanza and will not appear in the generated table.
             for param in self.env.path_params:
-                self.app.warn(
-                    ("No path parameter ``%s`` found in rest_parameter"
-                     " stanza.\n"
-                     % param.rstrip('}').lstrip('{')),
-                    (self.state_machine.node.source,
-                     self.state_machine.node.line))
+                location = (self.state_machine.node.source,
+                            self.state_machine.node.line)
+                LOG.warning("No path parameter ``%s`` found in rest_parameter"
+                            " stanza.\n", param.rstrip('}').lstrip('{'))
 
-        # self.app.info("New content %s" % new_content)
         self.yaml = new_content
 
     def run(self):
         self.env = self.state.document.settings.env
-        self.app = self.env.app
 
         # Make sure we have some content, which should be yaml that
         # defines some parameters.
@@ -389,7 +381,6 @@
             self.col_widths = self.col_widths[1]
         # Actually convert the yaml
         title, messages = self.make_title()
-        # self.app.info("Title %s, messages %s" % (title, messages))
         table_node = self.build_table()
         self.add_name(table_node)
         if title:
@@ -401,7 +392,7 @@
         groups = []
         trow = nodes.row()
         entry = nodes.entry()
-        para = nodes.paragraph(text=unicode(table_data))
+        para = nodes.paragraph(text=six.u(table_data))
         entry += para
         trow += entry
         rows.append(trow)
@@ -429,7 +420,6 @@
         rows = []
         groups = []
         try:
-            # self.app.info("Parsed content is: %s" % self.yaml)
             for key, values in self.yaml:
                 min_version = values.get('min_version', '')
                 max_version = values.get('max_version', '')
@@ -457,8 +447,8 @@
                 rows.append(trow)
         except AttributeError as exc:
             if 'key' in locals():
-                self.app.warn("Failure on key: %s, values: %s. %s" %
-                              (key, values, exc))
+                LOG.warning("Failure on key: %s, values: %s. %s",
+                            key, values, exc)
             else:
                 rows.append(self.show_no_yaml_error())
         return rows, groups
@@ -649,10 +639,11 @@
         'glyphicons-halflings-regular.ttf',
         'glyphicons-halflings-regular.woff'
     )
-    if app.builder.name != 'html' or exception:
+    builders = ('html', 'readthedocs', 'readthedocssinglehtmllocalmedia')
+    if app.builder.name not in builders or exception:
         return
-    app.info('Copying assets: %s' % ', '.join(assets))
-    app.info('Copying fonts: %s' % ', '.join(fonts))
+    LOG.info('Copying assets: %s', ', '.join(assets))
+    LOG.info('Copying fonts: %s', ', '.join(fonts))
     for asset in assets:
         dest = os.path.join(app.builder.outdir, '_static', asset)
         source = os.path.abspath(os.path.dirname(__file__))
@@ -677,12 +668,9 @@
     # TODO(sdague): if someone wants to support latex/pdf, or man page
     # generation using these stanzas, here is where you'd need to
     # specify content specific renderers.
-    app.add_node(rest_method,
-                 html=(rest_method_html, None))
-    app.add_node(rest_expand_all,
-                 html=(rest_expand_all_html, None))
-    app.add_node(http_code,
-                 html=(http_code_html, None))
+    app.add_node(rest_method, html=(rest_method_html, None))
+    app.add_node(rest_expand_all, html=(rest_expand_all_html, None))
+    app.add_node(http_code, html=(http_code_html, None))
 
     # This specifies all our directives that we're adding
     app.add_directive('rest_parameters', RestParametersDirective)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/os_api_ref/http_codes.py 
new/os-api-ref-1.6.0/os_api_ref/http_codes.py
--- old/os-api-ref-1.5.0/os_api_ref/http_codes.py       2018-01-18 
15:20:43.000000000 +0100
+++ new/os-api-ref-1.6.0/os_api_ref/http_codes.py       2018-12-12 
11:53:22.000000000 +0100
@@ -14,8 +14,11 @@
 from docutils.parsers.rst.directives.tables import Table
 from docutils.statemachine import ViewList
 from six.moves.http_client import responses
+from sphinx.util import logging
 import yaml
 
+LOG = logging.getLogger(__name__)
+
 # cache for file -> yaml so we only do the load and check of a yaml
 # file once during a sphinx processing run.
 HTTP_YAML_CACHE = {}
@@ -44,17 +47,17 @@
         if fpath in HTTP_YAML_CACHE:
             return HTTP_YAML_CACHE[fpath]
 
-        # self.app.info("Fpath: %s" % fpath)
+        # LOG.info("Fpath: %s" % fpath)
         try:
             with open(fpath, 'r') as stream:
                 lookup = yaml.safe_load(stream)
         except IOError:
-            self.app.warn(
+            LOG.warning(
                 "Parameters file %s not found" % fpath,
                 (self.env.docname, None))
             return
         except yaml.YAMLError as exc:
-            self.app.warn(exc)
+            LOG.warning(exc)
             raise
 
         HTTP_YAML_CACHE[fpath] = lookup
@@ -62,7 +65,6 @@
 
     def run(self):
         self.env = self.state.document.settings.env
-        self.app = self.env.app
 
         # Make sure we have some content, which should be yaml that
         # defines some parameters.
@@ -85,7 +87,7 @@
 
         self.status_defs = self._load_status_file(status_defs_file)
 
-        # self.app.info("%s" % str(self.status_defs))
+        # LOG.info("%s" % str(self.status_defs))
 
         if status_type not in self.status_types:
             error = self.state_machine.reporter.error(
@@ -109,7 +111,7 @@
             self.col_widths = self.col_widths[1]
         # Actually convert the yaml
         title, messages = self.make_title()
-        # self.app.info("Title %s, messages %s" % (title, messages))
+        # LOG.info("Title %s, messages %s" % (title, messages))
         table_node = self.build_table()
         self.add_name(table_node)
 
@@ -138,7 +140,7 @@
                             (code, self.status_defs[code][reason])
                         )
                 except KeyError:
-                    self.app.warn(
+                    LOG.warning(
                         "Could not find %s for code %s" % (reason, code))
                     new_content.append(
                         (code, self.status_defs[code]['default']))
@@ -191,7 +193,7 @@
         rows = []
         groups = []
         try:
-            # self.app.info("Parsed content is: %s" % self.yaml)
+            # LOG.info("Parsed content is: %s" % self.yaml)
             for code, desc in self.yaml:
 
                 h_code = http_code()
@@ -204,8 +206,8 @@
                 rows.append(trow)
         except AttributeError as exc:
             # if 'key' in locals():
-            self.app.warn("Failure on key: %s, values: %s. %s" %
-                          (code, desc, exc))
+            LOG.warning("Failure on key: %s, values: %s. %s" %
+                        (code, desc, exc))
             # else:
             #     rows.append(self.show_no_yaml_error())
         return rows, groups
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-api-ref-1.5.0/os_api_ref/tests/test_basic_example.py 
new/os-api-ref-1.6.0/os_api_ref/tests/test_basic_example.py
--- old/os-api-ref-1.5.0/os_api_ref/tests/test_basic_example.py 2018-01-18 
15:20:43.000000000 +0100
+++ new/os-api-ref-1.6.0/os_api_ref/tests/test_basic_example.py 2018-12-12 
11:53:22.000000000 +0100
@@ -18,11 +18,26 @@
 """
 
 from bs4 import BeautifulSoup
+import sphinx
 from sphinx_testing import with_app
 
 from os_api_ref.tests import base
 
 
+# FIXME(stephenfin): This is horrible. We're monkeypatching this to work around
+# the fact that Sphinx 1.8+ started called 'abspath' from within the
+# 'sphinx.application.Application' class [1]. This means our careful use of
+# 'sphinx_testing.path.path' for 'Application.outdir' etc. gets stomped on.
+# We're correcting that but we're doing so globally because mock doesn't work
+# for some reason and this is bound to have some side effects
+#
+# [1] https://github.com/sphinx-doc/sphinx/commit/3a85b3502f
+try:
+    sphinx.application.abspath = lambda x: x
+except ImportError:  # Sphinx < 1.8
+    pass
+
+
 class TestBasicExample(base.TestCase):
     """Test basic rendering.
 
@@ -38,7 +53,7 @@
         self.status = status
         self.warning = warning
         self.app.build()
-        self.html = (app.outdir / 'index.html').read_text()
+        self.html = (app.outdir / 'index.html').read_text(encoding='utf-8')
         self.soup = BeautifulSoup(self.html, 'html.parser')
         self.content = str(self.soup)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/os-api-ref-1.5.0/os_api_ref/tests/test_microversions.py 
new/os-api-ref-1.6.0/os_api_ref/tests/test_microversions.py
--- old/os-api-ref-1.5.0/os_api_ref/tests/test_microversions.py 2018-01-18 
15:20:43.000000000 +0100
+++ new/os-api-ref-1.6.0/os_api_ref/tests/test_microversions.py 2018-12-12 
11:53:22.000000000 +0100
@@ -38,7 +38,7 @@
         self.app.build()
         self.status = status.getvalue()
         self.warning = warning.getvalue()
-        self.html = (app.outdir / 'index.html').read_text()
+        self.html = (app.outdir / 'index.html').read_text(encoding='utf-8')
         self.soup = BeautifulSoup(self.html, 'html.parser')
         self.content = str(self.soup)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/os_api_ref/tests/test_warnings.py 
new/os-api-ref-1.6.0/os_api_ref/tests/test_warnings.py
--- old/os-api-ref-1.5.0/os_api_ref/tests/test_warnings.py      2018-01-18 
15:20:43.000000000 +0100
+++ new/os-api-ref-1.6.0/os_api_ref/tests/test_warnings.py      2018-12-12 
11:53:22.000000000 +0100
@@ -38,7 +38,7 @@
         self.app.build()
         self.status = status.getvalue()
         self.warning = warning.getvalue()
-        self.html = (app.outdir / 'index.html').read_text()
+        self.html = (app.outdir / 'index.html').read_text(encoding='utf-8')
         self.soup = BeautifulSoup(self.html, 'html.parser')
         self.content = str(self.soup)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/os_api_ref.egg-info/PKG-INFO 
new/os-api-ref-1.6.0/os_api_ref.egg-info/PKG-INFO
--- old/os-api-ref-1.5.0/os_api_ref.egg-info/PKG-INFO   2018-01-18 
15:23:16.000000000 +0100
+++ new/os-api-ref-1.6.0/os_api_ref.egg-info/PKG-INFO   2018-12-12 
11:55:31.000000000 +0100
@@ -1,12 +1,11 @@
 Metadata-Version: 1.1
 Name: os-api-ref
-Version: 1.5.0
+Version: 1.6.0
 Summary: Sphinx Extensions to support API reference sites in OpenStack
 Home-page: https://docs.openstack.org/os-api-ref/latest/
 Author: OpenStack
-Author-email: openstack-...@lists.openstack.org
+Author-email: openstack-disc...@lists.openstack.org
 License: UNKNOWN
-Description-Content-Type: UNKNOWN
 Description: ========================
         Team and repository tags
         ========================
@@ -52,7 +51,7 @@
         A list, in no particular order, of things we should do in this
         project. If you would like to contribute to any of these please show
         up in ``#openstack-dev`` on IRC and ask for ``sdague`` or ``mugsie``
-        to discuss or send an email to the openstack-...@lists.openstack.org 
list
+        to discuss or send an email to the 
openstack-disc...@lists.openstack.org list
         with [api] in the subject line.
         
         * Enhance documentation with more examples and best practices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/os_api_ref.egg-info/SOURCES.txt 
new/os-api-ref-1.6.0/os_api_ref.egg-info/SOURCES.txt
--- old/os-api-ref-1.5.0/os_api_ref.egg-info/SOURCES.txt        2018-01-18 
15:23:17.000000000 +0100
+++ new/os-api-ref-1.6.0/os_api_ref.egg-info/SOURCES.txt        2018-12-12 
11:55:31.000000000 +0100
@@ -1,5 +1,6 @@
 .coveragerc
 .mailmap
+.stestr.conf
 .testr.conf
 .zuul.yaml
 AUTHORS
@@ -17,6 +18,7 @@
 setup.py
 test-requirements.txt
 tox.ini
+doc/requirements.txt
 doc/source/conf.py
 doc/source/contributing.rst
 doc/source/http-status.yaml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/os_api_ref.egg-info/pbr.json 
new/os-api-ref-1.6.0/os_api_ref.egg-info/pbr.json
--- old/os-api-ref-1.5.0/os_api_ref.egg-info/pbr.json   2018-01-18 
15:23:16.000000000 +0100
+++ new/os-api-ref-1.6.0/os_api_ref.egg-info/pbr.json   2018-12-12 
11:55:31.000000000 +0100
@@ -1 +1 @@
-{"git_version": "cb41558", "is_release": true}
\ No newline at end of file
+{"git_version": "6fee36c", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/os_api_ref.egg-info/requires.txt 
new/os-api-ref-1.6.0/os_api_ref.egg-info/requires.txt
--- old/os-api-ref-1.5.0/os_api_ref.egg-info/requires.txt       2018-01-18 
15:23:16.000000000 +0100
+++ new/os-api-ref-1.6.0/os_api_ref.egg-info/requires.txt       2018-12-12 
11:55:31.000000000 +0100
@@ -1,5 +1,5 @@
 pbr!=2.1.0,>=2.0.0
-PyYAML>=3.10
+PyYAML>=3.12
 six>=1.10.0
-sphinx!=1.6.6,>=1.6.2
-openstackdocstheme>=1.17.0
+sphinx!=1.6.6,!=1.6.7,>=1.6.2
+openstackdocstheme>=1.18.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/requirements.txt 
new/os-api-ref-1.6.0/requirements.txt
--- old/os-api-ref-1.5.0/requirements.txt       2018-01-18 15:20:56.000000000 
+0100
+++ new/os-api-ref-1.6.0/requirements.txt       2018-12-12 11:53:22.000000000 
+0100
@@ -3,7 +3,7 @@
 # process, which may cause wedges in the gate later.
 
 pbr!=2.1.0,>=2.0.0 # Apache-2.0
-PyYAML>=3.10 # MIT
+PyYAML>=3.12 # MIT
 six>=1.10.0 # MIT
-sphinx!=1.6.6,>=1.6.2 # BSD
-openstackdocstheme>=1.17.0 # Apache-2.0
+sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD
+openstackdocstheme>=1.18.1 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/setup.cfg 
new/os-api-ref-1.6.0/setup.cfg
--- old/os-api-ref-1.5.0/setup.cfg      2018-01-18 15:23:17.000000000 +0100
+++ new/os-api-ref-1.6.0/setup.cfg      2018-12-12 11:55:31.000000000 +0100
@@ -4,7 +4,7 @@
 description-file = 
        README.rst
 author = OpenStack
-author-email = openstack-...@lists.openstack.org
+author-email = openstack-disc...@lists.openstack.org
 home-page = https://docs.openstack.org/os-api-ref/latest/
 classifier = 
        Environment :: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/test-requirements.txt 
new/os-api-ref-1.6.0/test-requirements.txt
--- old/os-api-ref-1.5.0/test-requirements.txt  2018-01-18 15:20:43.000000000 
+0100
+++ new/os-api-ref-1.6.0/test-requirements.txt  2018-12-12 11:53:22.000000000 
+0100
@@ -6,8 +6,8 @@
 
 coverage!=4.4,>=4.0 # Apache-2.0
 python-subunit>=1.0.0 # Apache-2.0/BSD
-oslosphinx>=4.7.0 # Apache-2.0
 testrepository>=0.0.18 # Apache-2.0/BSD
 testtools>=2.2.0 # MIT
 sphinx-testing>=0.7.2 # BSD License
 beautifulsoup4>=4.6.0 # MIT
+stestr>=2.0.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/os-api-ref-1.5.0/tox.ini new/os-api-ref-1.6.0/tox.ini
--- old/os-api-ref-1.5.0/tox.ini        2018-01-18 15:20:43.000000000 +0100
+++ new/os-api-ref-1.6.0/tox.ini        2018-12-12 11:53:22.000000000 +0100
@@ -1,6 +1,6 @@
 [tox]
 minversion = 2.0
-envlist = py27,pep8,docs
+envlist = py27,py35,pep8,docs
 skipsdist = True
 
 [testenv]
@@ -11,26 +11,33 @@
      
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
      -r{toxinidir}/requirements.txt
      -r{toxinidir}/test-requirements.txt
-commands = python setup.py test --slowest --no-parallel 
--testr-args='{posargs}'
+commands = stestr run {posargs}
 
 [testenv:pep8]
+basepython = python3
 commands = flake8 {posargs}
 
 [testenv:venv]
 commands = {posargs}
 
 [testenv:cover]
+basepython = python3
 commands = python setup.py test --coverage --testr-args='{posargs}'
 
 [testenv:docs]
-commands = python setup.py build_sphinx
+basepython = python3
+deps =
+    
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
+    -r{toxinidir}/requirements.txt
+    -r{toxinidir}/doc/requirements.txt
+commands = sphinx-build -W -b html doc/source doc/build/html
 
 [testenv:debug]
+basepython = python3
 commands = oslo_debug_helper {posargs}
 
 [flake8]
 # E123, E125 skipped as they are invalid PEP-8.
-
 show-source = True
 ignore = E123,E125,E129
 builtins = _


Reply via email to