Hello community, here is the log from the commit of package python-os-api-ref for openSUSE:Leap:15.2 checked in at 2020-03-09 18:09:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/python-os-api-ref (Old) and /work/SRC/openSUSE:Leap:15.2/.python-os-api-ref.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-os-api-ref" Mon Mar 9 18:09:46 2020 rev:22 rq:776874 version:1.6.2 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/python-os-api-ref/python-os-api-ref.changes 2020-01-15 15:50:58.099512785 +0100 +++ /work/SRC/openSUSE:Leap:15.2/.python-os-api-ref.new.26092/python-os-api-ref.changes 2020-03-09 18:09:47.241060842 +0100 @@ -1,0 +2,48 @@ +Wed Oct 9 12:49:38 UTC 2019 - [email protected] + +- removed 0001-Add-support-for-Sphinx-2.0.patch +- removed 0001-Fix-microversion-test-handle-different-HTML-renderin.patch +- removed 0001-Add-support-for-Sphinx-v2.1.patch +- update to version 1.6.2 + - Add support for Sphinx 2.0 + - Update hacking version + - Generate stable targets rather than random + - Update Testing for Train + - Add support for Sphinx v2.1 + - Add Python 3 Train unit tests + - Remove support for py34 + - Replace git.openstack.org URLs with opendev.org URLs + - Fix microversion test: handle different HTML renderings + - trivial: Remove unused attribute + - OpenDev Migration Patch + +------------------------------------------------------------------- +Mon Jul 8 06:29:32 UTC 2019 - [email protected] + +- added 0001-Add-support-for-Sphinx-v2.1.patch +- added 0001-Add-support-for-Sphinx-2.0.patch + +------------------------------------------------------------------- +Mon Apr 8 11:40:47 UTC 2019 - [email protected] + +- 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: ---- os-api-ref-1.6.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-os-api-ref.spec ++++++ --- /var/tmp/diff_new_pack.5jAPwE/_old 2020-03-09 18:09:47.541061272 +0100 +++ /var/tmp/diff_new_pack.5jAPwE/_new 2020-03-09 18:09:47.541061272 +0100 @@ -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,46 @@ # 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.2 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.2.tar.gz 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-six >= 1.10.0 +BuildRequires: python2-sphinx-testing +BuildRequires: python2-stestr +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-six >= 1.10.0 +BuildRequires: python3-sphinx-testing +BuildRequires: python3-stestr +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 +Requires: python-six >= 1.10.0 BuildArch: noarch +%python_subpackages %description This project is a collection of sphinx stanzas that assist in building an API @@ -57,22 +66,22 @@ expand / collapse all sections. %prep -%autosetup -n %{sname}-%{version} +%autosetup -p1 -n os-api-ref-1.6.2 %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 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.5jAPwE/_old 2020-03-09 18:09:47.561061301 +0100 +++ /var/tmp/diff_new_pack.5jAPwE/_new 2020-03-09 18:09:47.565061306 +0100 @@ -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/train/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">[email protected]</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.2.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.2/.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.2/.stestr.conf 2019-07-05 14:47:06.000000000 +0200 @@ -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.2/.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.2/.zuul.yaml 2019-07-05 14:47:06.000000000 +0200 @@ -4,13 +4,17 @@ description: | Run the api-ref job against nova with proposed os-api-ref change. vars: - zuul_work_dir: src/git.openstack.org/openstack/nova + zuul_work_dir: src/opendev.org/openstack/nova required-projects: - openstack/nova - openstack/os-api-ref - project: - name: openstack/os-api-ref + templates: + - openstack-python-jobs + - openstack-python3-train-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.2/AUTHORS --- old/os-api-ref-1.5.0/AUTHORS 2018-01-18 15:23:16.000000000 +0100 +++ new/os-api-ref-1.6.2/AUTHORS 2019-07-05 14:47:48.000000000 +0200 @@ -1,27 +1,37 @@ Andreas Jaeger <[email protected]> Anne Gentle <[email protected]> Cao Xuan Hoang <[email protected]> +Corey Bryant <[email protected]> Daniel Gonzalez <[email protected]> Dirk Mueller <[email protected]> Dmitry Shachnev <[email protected]> +Doug Hellmann <[email protected]> Flavio Percoco <[email protected]> +Gergely Csatari <[email protected]> +Graham Hayes <[email protected]> Graham Hayes <[email protected]> Karen Bradshaw <[email protected]> +Luigi Toscano <[email protected]> Monty Taylor <[email protected]> Nam Nguyen Hoai <[email protected]> Ondřej Nový <[email protected]> Sean Dague <[email protected]> +Sean McGinnis <[email protected]> Stephen Finucane <[email protected]> +Telles Nobrega <[email protected]> Thomas Bechtold <[email protected]> Tony Breeds <[email protected]> Tony Xu <[email protected]> Tristan Cacqueray <[email protected]> Yuval Brik <[email protected]> -Zuul <[email protected]> +ZhijunWei <[email protected]> gengchc2 <[email protected]> ghanshyam <[email protected]> +jacky06 <[email protected]> +melissaml <[email protected]> ricolin <[email protected]> shangxiaobj <[email protected]> shashi.kant <[email protected]> tengqm <[email protected]> yanghuichan <[email protected]> +zhulingjie <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-api-ref-1.5.0/ChangeLog new/os-api-ref-1.6.2/ChangeLog --- old/os-api-ref-1.5.0/ChangeLog 2018-01-18 15:23:16.000000000 +0100 +++ new/os-api-ref-1.6.2/ChangeLog 2019-07-05 14:47:48.000000000 +0200 @@ -1,6 +1,47 @@ CHANGES ======= +1.6.2 +----- + +* Add Python 3 Train unit tests +* Add support for Sphinx v2.1 +* Update Testing for Train +* Replace git.openstack.org URLs with opendev.org URLs +* Add support for Sphinx 2.0 +* OpenDev Migration Patch +* trivial: Remove unused attribute + +1.6.1 +----- + +* Generate stable targets rather than random +* Fix microversion test: handle different HTML renderings +* Update hacking version +* Remove support for py34 + +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 +51,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.2/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.2/PKG-INFO 2019-07-05 14:47:48.000000000 +0200 @@ -1,12 +1,11 @@ Metadata-Version: 1.1 Name: os-api-ref -Version: 1.5.0 +Version: 1.6.2 Summary: Sphinx Extensions to support API reference sites in OpenStack Home-page: https://docs.openstack.org/os-api-ref/latest/ Author: OpenStack -Author-email: [email protected] +Author-email: [email protected] 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 [email protected] list + to discuss or send an email to the [email protected] list with [api] in the subject line. * Enhance documentation with more examples and best practices @@ -118,7 +117,7 @@ * Free software: Apache license * Documentation: https://docs.openstack.org/os-api-ref/latest/ - * Source: https://git.openstack.org/cgit/openstack/os-api-ref + * Source: https://opendev.org/openstack/os-api-ref Platform: UNKNOWN @@ -131,4 +130,5 @@ Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 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.2/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.2/README.rst 2019-07-05 14:47:06.000000000 +0200 @@ -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 [email protected] list +to discuss or send an email to the [email protected] list with [api] in the subject line. * Enhance documentation with more examples and best practices @@ -109,4 +109,4 @@ * Free software: Apache license * Documentation: https://docs.openstack.org/os-api-ref/latest/ -* Source: https://git.openstack.org/cgit/openstack/os-api-ref +* Source: https://opendev.org/openstack/os-api-ref 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.2/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.2/doc/requirements.txt 2019-07-05 14:47:06.000000000 +0200 @@ -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.2/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.2/doc/source/conf.py 2019-07-05 14:47:06.000000000 +0200 @@ -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.2/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.2/doc/source/index.rst 2019-07-05 14:47:06.000000000 +0200 @@ -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.2/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.2/os_api_ref/__init__.py 2019-07-05 14:47:06.000000000 +0200 @@ -11,6 +11,7 @@ # under the License. from collections import OrderedDict +import hashlib import os import re @@ -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,9 +32,7 @@ __version__ = pbr.version.VersionInfo( 'os_api_ref').version_string() -# This is to allow for a graceful swap from oslosphinx to openstackdocstheme -THEME = 'openstackdocstheme' - +LOG = logging.getLogger(__name__) """This provides a sphinx extension able to create the HTML needed for the api-ref website. @@ -166,8 +167,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 +195,11 @@ # 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'] + # SHA-1 is used even if collisions are possible, because + # they are still unlikely to occurr and it is way shorter + # than stronger SHAs. + node_hash = hashlib.sha1(str(node).encode('utf-8')).hexdigest() + temp_target = "%s-%s-selector" % (node['target'], node_hash) target = nodes.target(ids=[temp_target]) self.state.add_target(temp_target, '', target, lineno) section += node @@ -218,25 +221,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 +257,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 +278,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 +300,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 +318,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 +335,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 +380,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 +391,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 +419,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 +446,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 +638,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 +667,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.2/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.2/os_api_ref/http_codes.py 2019-07-05 14:47:06.000000000 +0200 @@ -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.2/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.2/os_api_ref/tests/test_basic_example.py 2019-07-05 14:47:06.000000000 +0200 @@ -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) @@ -76,7 +91,34 @@ def test_parameters(self): """Do we get some parameters table""" - table = """<table border="1" class="docutils"> + # TODO(stephenfin): Drop support for this once we drop support for both + # Python 2.7 and Sphinx < 2.0, likely in "U" + if sphinx.version_info >= (2, 0, 0): + table = """<table class="docutils align-{}"> +<colgroup> +<col style="width: 20%"/> +<col style="width: 10%"/> +<col style="width: 10%"/> +<col style="width: 60%"/> +</colgroup> +<thead> +<tr class="row-odd"><th class="head"><p>Name</p></th> +<th class="head"><p>In</p></th> +<th class="head"><p>Type</p></th> +<th class="head"><p>Description</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td><p>name</p></td> +<td><p>body</p></td> +<td><p>string</p></td> +<td><p>The name of things</p></td> +</tr> +</tbody> +</table>""".format('center' if sphinx.version_info < (2, 1, 0) + else 'default') + else: + table = """<table border="1" class="docutils"> <colgroup> <col width="20%"/> <col width="10%"/> @@ -103,7 +145,67 @@ def test_rest_response(self): - success_table = """table border="1" class="docutils"> + # TODO(stephenfin): Drop support for this once we drop support for both + # Python 2.7 and Sphinx < 2.0, likely in "U" + if sphinx.version_info >= (2, 0, 0): + success_table = """<table class="docutils align-{}"> +<colgroup> +<col style="width: 30%"/> +<col style="width: 70%"/> +</colgroup> +<thead> +<tr class="row-odd"><th class="head"><p>Code</p></th> +<th class="head"><p>Reason</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td><code>200 - OK</code></td> +<td><p>Request was successful.</p></td> +</tr> +<tr class="row-odd"><td><code>100 - Continue</code></td> +<td><p>An unusual code for an API</p></td> +</tr> +<tr class="row-even"><td><code>201 - Created</code></td> +<td><p>Resource was created and is ready to use.</p></td> +</tr> +</tbody> +</table>""".format('center' if sphinx.version_info < (2, 1, 0) + else 'default') + + error_table = """<table class="docutils align-{}"> +<colgroup> +<col style="width: 30%"/> +<col style="width: 70%"/> +</colgroup> +<thead> +<tr class="row-odd"><th class="head"><p>Code</p></th> +<th class="head"><p>Reason</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td><code>405 - Method Not Allowed</code></td> +<td><p>Method is not valid for this endpoint.</p></td> +</tr> +<tr class="row-odd"><td><code>403 - Forbidden</code></td> +<td><p>Policy does not allow current user to do this operation.</p></td> +</tr> +<tr class="row-even"><td><code>401 - Unauthorized</code></td> +<td><p>User must authenticate before making a request</p></td> +</tr> +<tr class="row-odd"><td><code>400 - Bad Request</code></td> +<td><p>Some content in the request was invalid</p></td> +</tr> +<tr class="row-even"><td><code>500 - Internal Server Error</code></td> +<td><p>Something went wrong inside the service.</p></td> +</tr> +<tr class="row-odd"><td><code>409 - Conflict</code></td> +<td><p>There is already a zone with this name.</p></td> +</tr> +</tbody> +</table>""".format('center' if sphinx.version_info < (2, 1, 0) + else 'default') + else: + success_table = """table border="1" class="docutils"> <colgroup> <col width="30%"/> <col width="70%"/> @@ -127,7 +229,7 @@ </table> """ - error_table = """<table border="1" class="docutils"> + error_table = """<table border="1" class="docutils"> <colgroup> <col width="30%"/> <col width="70%"/> @@ -159,5 +261,6 @@ </tbody> </table> """ + self.assertIn(success_table, self.content) self.assertIn(error_table, self.content) 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.2/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.2/os_api_ref/tests/test_microversions.py 2019-07-05 14:47:06.000000000 +0200 @@ -18,6 +18,7 @@ """ from bs4 import BeautifulSoup +import sphinx from sphinx_testing import with_app from os_api_ref.tests import base @@ -38,24 +39,65 @@ 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) 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""" - table = """<div class="api-detail collapse section" id="list-servers-detail"> + if sphinx.version_info >= (2, 0, 0): + table = """<div class="api-detail collapse section" id="list-servers-detail"> +<table class="docutils align-{}"> +<colgroup> +<col style="width: 20%"/> +<col style="width: 10%"/> +<col style="width: 10%"/> +<col style="width: 60%"/> +</colgroup> +<thead> +<tr class="row-odd"><th class="head"><p>Name</p></th> +<th class="head"><p>In</p></th> +<th class="head"><p>Type</p></th> +<th class="head"><p>Description</p></th> +</tr> +</thead> +<tbody> +<tr class="row-even"><td><p>name</p></td> +<td><p>body</p></td> +<td><p>string</p></td> +<td><p>The name of things</p></td> +</tr> +<tr class="rp_min_ver_2_11 row-odd"><td><p>name2</p></td> +<td><p>body</p></td> +<td><p>string</p></td> +<td><p>The name of things</p> +<p><strong>New in version 2.11</strong></p> +</td> +</tr> +<tr class="rp_max_ver_2_20 row-even"><td><p>name3</p></td> +<td><p>body</p></td> +<td><p>string</p></td> +<td><p>The name of things</p> +<p><strong>Available until version 2.20</strong></p> +</td> +</tr> +</tbody> +</table> +</div> +""".format('center' if sphinx.version_info < (2, 1, 0) else 'default') # noqa + else: + table = """<div class="api-detail collapse section" id="list-servers-detail"> <table border="1" class="docutils"> <colgroup> <col width="20%"/> @@ -94,6 +136,7 @@ </table> </div> """ # noqa + self.assertIn(table, self.content) def test_mv_selector(self): 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.2/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.2/os_api_ref/tests/test_warnings.py 2019-07-05 14:47:06.000000000 +0200 @@ -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) @@ -58,18 +58,18 @@ def test_missing_field(self): """Warning when missing type field in parameter file.""" self.assertIn( - ("WARNING: Failure on key: name, values: " - + "OrderedDict([('description'," - + " 'name_1 is missing type field.\\n'), ('in', 'body')," - + " ('required', True)]). " - + "'NoneType' object has no attribute 'split'"), + ("WARNING: Failure on key: name, values: " + + "OrderedDict([('description'," + + " 'name_1 is missing type field.\\n'), ('in', 'body')," + + " ('required', True)]). " + + "'NoneType' object has no attribute 'split'"), self.warning) def test_invalid_parameter_definition(self): """Warning when parameter definition is invalid.""" self.assertIn( - ("WARNING: Invalid parameter definition ``invalid_name``. " - + "Expected format: ``name: reference``. "), + ("WARNING: Invalid parameter definition ``invalid_name``. " + + "Expected format: ``name: reference``. "), self.warning) def test_empty_parameter_file(self): @@ -81,21 +81,21 @@ def test_no_parameters_set(self): """Error when parameters are not set in rest_parameters stanza.""" self.assertIn( - ("No parameters defined\n\n.." - + " rest_parameters:: parameters.yaml"), + ("No parameters defined\n\n.." + + " rest_parameters:: parameters.yaml"), self.warning) def test_parameter_file_not_exist(self): """Error when parameter file does not exist""" self.assertIn( - ("No parameters defined\n\n.." - + " rest_parameters:: no_parameters.yaml"), + ("No parameters defined\n\n.." + + " rest_parameters:: no_parameters.yaml"), self.warning) def test_missing_path_parameter_in_stanza(self): """Warning when path param not found in rest_parameter stanza.""" self.assertIn( - ("WARNING: No path parameter ``b_id`` found in" - + " rest_parameter stanza.\n"), + ("WARNING: No path parameter ``b_id`` found in" + + " rest_parameter stanza.\n"), self.warning) 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.2/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.2/os_api_ref.egg-info/PKG-INFO 2019-07-05 14:47:48.000000000 +0200 @@ -1,12 +1,11 @@ Metadata-Version: 1.1 Name: os-api-ref -Version: 1.5.0 +Version: 1.6.2 Summary: Sphinx Extensions to support API reference sites in OpenStack Home-page: https://docs.openstack.org/os-api-ref/latest/ Author: OpenStack -Author-email: [email protected] +Author-email: [email protected] 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 [email protected] list + to discuss or send an email to the [email protected] list with [api] in the subject line. * Enhance documentation with more examples and best practices @@ -118,7 +117,7 @@ * Free software: Apache license * Documentation: https://docs.openstack.org/os-api-ref/latest/ - * Source: https://git.openstack.org/cgit/openstack/os-api-ref + * Source: https://opendev.org/openstack/os-api-ref Platform: UNKNOWN @@ -131,4 +130,5 @@ Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 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.2/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.2/os_api_ref.egg-info/SOURCES.txt 2019-07-05 14:47:48.000000000 +0200 @@ -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.2/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.2/os_api_ref.egg-info/pbr.json 2019-07-05 14:47:48.000000000 +0200 @@ -1 +1 @@ -{"git_version": "cb41558", "is_release": true} \ No newline at end of file +{"git_version": "678238d", "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.2/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.2/os_api_ref.egg-info/requires.txt 2019-07-05 14:47:48.000000000 +0200 @@ -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.2/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.2/requirements.txt 2019-07-05 14:47:06.000000000 +0200 @@ -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.2/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.2/setup.cfg 2019-07-05 14:47:48.000000000 +0200 @@ -4,7 +4,7 @@ description-file = README.rst author = OpenStack -author-email = [email protected] +author-email = [email protected] home-page = https://docs.openstack.org/os-api-ref/latest/ classifier = Environment :: OpenStack @@ -16,7 +16,8 @@ Programming Language :: Python :: 2 Programming Language :: Python :: 2.7 Programming Language :: Python :: 3 - Programming Language :: Python :: 3.4 + Programming Language :: Python :: 3.6 + Programming Language :: Python :: 3.7 [files] packages = 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.2/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.2/test-requirements.txt 2019-07-05 14:47:06.000000000 +0200 @@ -2,12 +2,12 @@ # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. -hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 +hacking>=1.1.0,<1.2.0 # Apache-2.0 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.2/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.2/tox.ini 2019-07-05 14:47:06.000000000 +0200 @@ -1,6 +1,6 @@ [tox] minversion = 2.0 -envlist = py27,pep8,docs +envlist = py27,py37,pep8,docs skipsdist = True [testenv] @@ -8,29 +8,36 @@ VIRTUAL_ENV={envdir} install_command = pip install -U {opts} {packages} deps = - -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} + -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/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://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} + -r{toxinidir}/requirements.txt + -r{toxinidir}/doc/requirements.txt +commands = sphinx-build -W -b html -d doc/build/doctrees 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 = _
