Hello community,

here is the log from the commit of package python-sphinx-feature-classification 
for openSUSE:Leap:15.2 checked in at 2020-03-02 13:23:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/python-sphinx-feature-classification 
(Old)
 and      
/work/SRC/openSUSE:Leap:15.2/.python-sphinx-feature-classification.new.26092 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-sphinx-feature-classification"

Mon Mar  2 13:23:08 2020 rev:11 rq:777162 version:0.4.1

Changes:
--------
--- 
/work/SRC/openSUSE:Leap:15.2/python-sphinx-feature-classification/python-sphinx-feature-classification.changes
      2020-01-15 15:53:21.315594874 +0100
+++ 
/work/SRC/openSUSE:Leap:15.2/.python-sphinx-feature-classification.new.26092/python-sphinx-feature-classification.changes
   2020-03-02 13:23:09.586374790 +0100
@@ -1,0 +2,47 @@
+Tue Sep 10 10:01:57 UTC 2019 - Tomáš Chvátal <[email protected]>
+
+- Update to 0.4.1:
+  * Minor fixes
+
+-------------------------------------------------------------------
+Fri May 24 20:07:37 UTC 2019 - Tomáš Chvátal <[email protected]>
+
+- Update to 0.4.0:
+  * OpenDev Migration Patch
+  * Fix the summary table border not rendering
+  * Copy the CSS into the built docs
+  * Fix deprecated add\_stylesheet with add\_css\_file
+  * Fix driver links rendering in the summary table
+  * releasenotes: Remove crud from 'conf.py'
+  * releasenotes: Switch to openstackdocstheme
+
+-------------------------------------------------------------------
+Fri Apr 26 13:34:05 UTC 2019 - Marketa Calabkova <[email protected]>
+
+- update to version 0.3.2
+  0.3.2
+  * Change openstack-dev to openstack-discuss
+  * Optimizing the safety of the http link site in HACKING.rst
+  0.3.1
+  * Handle ConfigParser.readfp deprecation
+  * add python 3.6 unit test job
+  0.3.0
+  * Parse 'driver-notes-XXX' values
+  * doc: Rework everything
+  0.2.0
+  * Update for Python 3 compatibility
+  * Driver usage example is not correct
+  * set default python to python3
+  * Add badges, description and fix links in README
+
+-------------------------------------------------------------------
+Tue Dec 18 23:27:57 UTC 2018 - Jan Engelhardt <[email protected]>
+
+- Use noun phrase in descriptions.
+
+-------------------------------------------------------------------
+Tue Dec  4 12:54:49 UTC 2018 - Matej Cepl <[email protected]>
+
+- Remove superfluous devel dependency for noarch package
+
+-------------------------------------------------------------------

Old:
----
  sphinx-feature-classification-0.1.0.tar.gz

New:
----
  sphinx-feature-classification-0.4.1.tar.gz

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

Other differences:
------------------
++++++ python-sphinx-feature-classification.spec ++++++
--- /var/tmp/diff_new_pack.HRQ7PC/_old  2020-03-02 13:23:09.862375339 +0100
+++ /var/tmp/diff_new_pack.HRQ7PC/_new  2020-03-02 13:23:09.862375339 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-sphinx-feature-classification
 #
-# 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,31 +12,34 @@
 # 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/
 #
 
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-sphinx-feature-classification
-Version:        0.1.0
+Version:        0.4.1
 Release:        0
-Summary:        Generate a matrix of pluggable drivers and their support to an 
API in Sphinx
+Summary:        Sphinx extension to generate a matrix of pluggable drivers
 License:        Apache-2.0
 Group:          Development/Languages/Python
-Url:            http://www.openstack.org/
+URL:            http://www.openstack.org/
 Source:         
https://files.pythonhosted.org/packages/source/s/sphinx-feature-classification/sphinx-feature-classification-%{version}.tar.gz
-BuildRequires:  %{python_module devel}
+BuildRequires:  %{python_module ddt >= 1.0.1}
+BuildRequires:  %{python_module docutils}
+BuildRequires:  %{python_module oslotest}
 BuildRequires:  %{python_module pbr >= 2.0}
+BuildRequires:  %{python_module pytest}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-docutils >= 0.11
 Requires:       python-pbr >= 2.0
 BuildArch:      noarch
-
 %python_subpackages
 
 %description
-Generate in sphinx a matrix of pluggable drivers and their support to an API.
+An extension to Sphinx to generate a matrix of pluggable drivers and
+their support to an API.
 
 %prep
 %setup -q -n sphinx-feature-classification-%{version}
@@ -48,8 +51,12 @@
 %python_install
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
 
+%check
+%pytest sphinx_feature_classification/tests
+
 %files %{python_files}
-%doc AUTHORS ChangeLog LICENSE README.rst
+%license LICENSE
+%doc AUTHORS ChangeLog README.rst
 %{python_sitelib}/*
 
 %changelog

++++++ sphinx-feature-classification-0.1.0.tar.gz -> 
sphinx-feature-classification-0.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sphinx-feature-classification-0.1.0/.zuul.yaml 
new/sphinx-feature-classification-0.4.1/.zuul.yaml
--- old/sphinx-feature-classification-0.1.0/.zuul.yaml  1970-01-01 
01:00:00.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/.zuul.yaml  2019-09-04 
16:24:21.000000000 +0200
@@ -0,0 +1,6 @@
+- project:
+    templates:
+      - check-requirements
+      - publish-openstack-docs-pti
+      - openstack-python-jobs
+      - openstack-python3-train-jobs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sphinx-feature-classification-0.1.0/AUTHORS 
new/sphinx-feature-classification-0.4.1/AUTHORS
--- old/sphinx-feature-classification-0.1.0/AUTHORS     2018-03-19 
17:57:37.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/AUTHORS     2019-09-04 
16:24:58.000000000 +0200
@@ -1 +1,14 @@
+98k <[email protected]>
+Ben Nemec <[email protected]>
+Corey Bryant <[email protected]>
+Doug Hellmann <[email protected]>
+Jay S. Bryant <[email protected]>
+Michael Johnson <[email protected]>
 Mike Perez <[email protected]>
+Sean McGinnis <[email protected]>
+Stephen Finucane <[email protected]>
+Thierry Carrez <[email protected]>
+huang.zhiping <[email protected]>
+qingszhao <[email protected]>
+tonybrad <[email protected]>
+zhouxinyong <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sphinx-feature-classification-0.1.0/ChangeLog 
new/sphinx-feature-classification-0.4.1/ChangeLog
--- old/sphinx-feature-classification-0.1.0/ChangeLog   2018-03-19 
17:57:37.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/ChangeLog   2019-09-04 
16:24:58.000000000 +0200
@@ -1,6 +1,58 @@
 CHANGES
 =======
 
+0.4.1
+-----
+
+* Add Python 3 Train unit tests
+* Change the deps source
+
+0.4.0
+-----
+
+* OpenDev Migration Patch
+* Fix the summary table border not rendering
+* Copy the CSS into the built docs
+* Fix deprecated add\_stylesheet with add\_css\_file
+* Fix driver links rendering in the summary table
+* releasenotes: Remove crud from 'conf.py'
+* releasenotes: Switch to openstackdocstheme
+
+0.3.2
+-----
+
+* Change python3.5 job to python3.7 job on Stein+
+* Sort drivers listed under feature details
+* Update home-page
+* Change openstack-dev to openstack-discuss
+* Optimizing the safety of the http link site in HACKING.rst
+
+0.3.1
+-----
+
+* Handle ConfigParser.readfp deprecation
+* add python 3.6 unit test job
+* switch documentation job to new PTI
+* import zuul job settings from project-config
+
+0.3.0
+-----
+
+* Parse 'driver-notes-XXX' values
+* doc: Rework everything
+
+0.2.0
+-----
+
+* Update for Python 3 compatibility
+* change default python 3 env in tox to 3.5
+* fix tox python3 overrides
+* Trivial: update pypi url to new url
+* Driver usage example is not correct
+* set default python to python3
+* Fix constraints error in pep8 job
+* Add badges, description and fix links in README
+
 0.1.0
 -----
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sphinx-feature-classification-0.1.0/HACKING.rst 
new/sphinx-feature-classification-0.4.1/HACKING.rst
--- old/sphinx-feature-classification-0.1.0/HACKING.rst 2018-03-19 
17:54:56.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/HACKING.rst 2019-09-04 
16:24:21.000000000 +0200
@@ -1,4 +1,4 @@
 sphinx-feature-classification Style Commandments
 ================================================
 
-Read the OpenStack Style Commandments 
http://docs.openstack.org/developer/hacking/
+Read the OpenStack Style Commandments 
https://docs.openstack.org/hacking/latest/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sphinx-feature-classification-0.1.0/PKG-INFO 
new/sphinx-feature-classification-0.4.1/PKG-INFO
--- old/sphinx-feature-classification-0.1.0/PKG-INFO    2018-03-19 
17:57:38.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/PKG-INFO    2019-09-04 
16:24:58.000000000 +0200
@@ -1,26 +1,34 @@
 Metadata-Version: 1.1
 Name: sphinx-feature-classification
-Version: 0.1.0
+Version: 0.4.1
 Summary: Generate a matrix of pluggable drivers and their support to an API in 
Sphinx.
-Home-page: http://www.openstack.org/
+Home-page: https://docs.openstack.org/sphinx-feature-classification/latest/
 Author: OpenStack
-Author-email: [email protected]
+Author-email: [email protected]
 License: UNKNOWN
-Description: ===============================
-        sphinx-feature-classification
-        ===============================
+Description: ========================
+        Team and repository tags
+        ========================
         
-        Generate in sphinx a matrix of pluggable drivers and their support to 
an API.
+        .. image:: 
https://governance.openstack.org/tc/badges/sphinx-feature-classification.svg
+            :target: 
https://governance.openstack.org/tc/reference/tags/index.html
         
-        * Free software: Apache license
-        * Documentation: 
http://docs.openstack.org/developer/sphinx-feature-classification
-        * Source: 
http://git.openstack.org/cgit/openstack/sphinx-feature-classification
-        * Bugs: http://bugs.launchpad.net/sphinx-feature-classification
+        .. Change things from this point on
         
-        Features
-        --------
+        =============================
+        sphinx-feature-classification
+        =============================
         
-        * TODO
+        This is a Sphinx directive that allows creating matrices of drivers a 
project
+        contains and which features they support. The directive takes an INI 
file with
+        specific syntax explained in the usage documentation to generate the 
matrices,
+        in which projects have the authority to say what is supported within 
their own
+        repository.
+        
+        * Free software: Apache license
+        * Documentation: 
https://docs.openstack.org/sphinx-feature-classification/latest/
+        * Source: http://opendev.org/openstack/sphinx-feature-classification
+        * Bugs: https://storyboard.openstack.org/#!/project/921
         
         
 Platform: UNKNOWN
@@ -33,4 +41,5 @@
 Classifier: Programming Language :: Python :: 2
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sphinx-feature-classification-0.1.0/README.rst 
new/sphinx-feature-classification-0.4.1/README.rst
--- old/sphinx-feature-classification-0.1.0/README.rst  2018-03-19 
17:54:56.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/README.rst  2019-09-04 
16:24:21.000000000 +0200
@@ -1,15 +1,23 @@
-===============================
-sphinx-feature-classification
-===============================
+========================
+Team and repository tags
+========================
 
-Generate in sphinx a matrix of pluggable drivers and their support to an API.
+.. image:: 
https://governance.openstack.org/tc/badges/sphinx-feature-classification.svg
+    :target: https://governance.openstack.org/tc/reference/tags/index.html
 
-* Free software: Apache license
-* Documentation: 
http://docs.openstack.org/developer/sphinx-feature-classification
-* Source: http://git.openstack.org/cgit/openstack/sphinx-feature-classification
-* Bugs: http://bugs.launchpad.net/sphinx-feature-classification
+.. Change things from this point on
 
-Features
---------
+=============================
+sphinx-feature-classification
+=============================
 
-* TODO
+This is a Sphinx directive that allows creating matrices of drivers a project
+contains and which features they support. The directive takes an INI file with
+specific syntax explained in the usage documentation to generate the matrices,
+in which projects have the authority to say what is supported within their own
+repository.
+
+* Free software: Apache license
+* Documentation: 
https://docs.openstack.org/sphinx-feature-classification/latest/
+* Source: http://opendev.org/openstack/sphinx-feature-classification
+* Bugs: https://storyboard.openstack.org/#!/project/921
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/doc/source/contributing.rst 
new/sphinx-feature-classification-0.4.1/doc/source/contributing.rst
--- old/sphinx-feature-classification-0.1.0/doc/source/contributing.rst 
2018-03-19 17:54:56.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/doc/source/contributing.rst 
1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-============
-Contributing
-============
-.. include:: ../../CONTRIBUTING.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/doc/source/contributor/index.rst 
new/sphinx-feature-classification-0.4.1/doc/source/contributor/index.rst
--- old/sphinx-feature-classification-0.1.0/doc/source/contributor/index.rst    
1970-01-01 01:00:00.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/doc/source/contributor/index.rst    
2019-09-04 16:24:21.000000000 +0200
@@ -0,0 +1,5 @@
+============
+Contributing
+============
+
+.. include:: ../../../CONTRIBUTING.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/doc/source/index.rst 
new/sphinx-feature-classification-0.4.1/doc/source/index.rst
--- old/sphinx-feature-classification-0.1.0/doc/source/index.rst        
2018-03-19 17:54:56.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/doc/source/index.rst        
2019-09-04 16:24:21.000000000 +0200
@@ -1,25 +1,13 @@
-.. sphinx-feature-classification 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 sphinx-feature-classification's documentation!
-=========================================================
-
-Contents:
+=============================
+sphinx-feature-classification
+=============================
+
+.. include:: ../../README.rst
+   :start-line: 9
+   :end-line: -4
 
 .. toctree::
-   :maxdepth: 2
-
-   readme
-   installation
-   usage
-   contributing
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
 
+   contributor/index
+   install/index
+   user/index
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/doc/source/install/index.rst 
new/sphinx-feature-classification-0.4.1/doc/source/install/index.rst
--- old/sphinx-feature-classification-0.1.0/doc/source/install/index.rst        
1970-01-01 01:00:00.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/doc/source/install/index.rst        
2019-09-04 16:24:21.000000000 +0200
@@ -0,0 +1,7 @@
+============
+Installation
+============
+
+At the command line::
+
+    $ pip install sphinx-feature-classification
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/doc/source/installation.rst 
new/sphinx-feature-classification-0.4.1/doc/source/installation.rst
--- old/sphinx-feature-classification-0.1.0/doc/source/installation.rst 
2018-03-19 17:54:56.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/doc/source/installation.rst 
1970-01-01 01:00:00.000000000 +0100
@@ -1,12 +0,0 @@
-============
-Installation
-============
-
-At the command line::
-
-    $ pip install sphinx-feature-classification
-
-Or, if you have virtualenvwrapper installed::
-
-    $ mkvirtualenv sphinx-feature-classification
-    $ pip install sphinx-feature-classification
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/doc/source/readme.rst 
new/sphinx-feature-classification-0.4.1/doc/source/readme.rst
--- old/sphinx-feature-classification-0.1.0/doc/source/readme.rst       
2018-03-19 17:54:56.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/doc/source/readme.rst       
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-.. include:: ../../README.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/doc/source/usage.rst 
new/sphinx-feature-classification-0.4.1/doc/source/usage.rst
--- old/sphinx-feature-classification-0.1.0/doc/source/usage.rst        
2018-03-19 17:54:56.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/doc/source/usage.rst        
1970-01-01 01:00:00.000000000 +0100
@@ -1,92 +0,0 @@
-========
-Usage
-========
-
-Sphinx Configuration
-====================
-
-To use the extension, add ``'sphinx_feature_classification.support_matrix'`` to
-the ``extensions`` list in the ``conf.py`` file in your Sphinx project.
-
-Documenting Your Drivers
-========================
-
-1. This extension uses an ini file to render your driver matrix in Sphinx. You
-   can begin by creating the file support-matrix.ini file in your sphinx's
-   source directory.
-
-2. In the INI file, create driver sections that are prefixed with driver-. The
-   section has various options that can be specified.
-
-+------------+-----------+---------------------------------------+
-| Field Name | Mandatory | Description                           |
-+============+===========+=======================================+
-| title      | **Yes**   | Friendly name of the driver.          |
-+------------+-----------+---------------------------------------+
-| link       | No        | A link to documentation of the driver.|
-+------------+-----------+---------------------------------------+
-
-.. code-block:: INI
-
-  [driver.slow-driver]
-  title=Slow Driver
-  link=https://docs.openstack.org/foo/latest/some-slow-driver-doc
-
-  [driver.fast-driver]
-  title=Fast Driver
-  link=https://docs.openstack.org/foo/latest/some-fast-driver-doc
-
-
-3. Next we'll create a couple of feature sections to show which drivers support
-   them. Notice that a driver is only required to implement detach-volume if
-   they completed implementing attach-volume.
-
-.. code-block:: INI
-
-  [operation.attach-volume]
-  title=Attach block volume to instance
-  status=optional
-  notes=The attach volume operation provides a means to hotplug
-  additional block storage to a running instance.
-  cli=my-project attach-volume <instance> <volume>
-  driver-slow-driver=complete
-  driver-fast-driver=complete
-
-  [operation.detach-volume]
-  title=Detach block volume from instance
-  status=condition(operation.attach-volume==complete)
-  notes=The detach volume operation provides a means to remove additional block
-  storage from a running instance.
-  cli=my-project detach-volume <instance> <volume>
-  driver-slow-driver=complete
-  driver-fast-driver=complete
-
-The 'status' field takes possible values
-
-+---------------+------------------------------------------------------+
-| Status        | Description                                          |
-+===============+======================================================+
-| mandatory     | Unconditionally required to be implemented.          |
-+---------------+------------------------------------------------------+
-| optional      | Optional to support, nice to have.                   |
-+---------------+------------------------------------------------------+
-| choice(group) | At least one of the options within the named group   |
-|               | must be implemented.                                 |
-+---------------+------------------------------------------------------+
-| condition     | Required, if the referenced condition is met.        |
-+---------------+------------------------------------------------------+
-
-The value against each 'driver-XXXX' entry refers to the level
-of the implementation of the feature in that driver
-
-+---------------+------------------------------------------------------+
-| Status        | Description                                          |
-+===============+======================================================+
-| complete      | Fully implemented, expected to work at all times.    |
-+---------------+------------------------------------------------------+
-| partial       | Implemented, but with caveats about when it will     |
-|               | work eg some configurations or hardware or guest OS  |
-|               | may not support it.                                  |
-+---------------+------------------------------------------------------+
-| missing       | Not implemented at all.                              |
-+---------------+------------------------------------------------------+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/doc/source/user/index.rst 
new/sphinx-feature-classification-0.4.1/doc/source/user/index.rst
--- old/sphinx-feature-classification-0.1.0/doc/source/user/index.rst   
1970-01-01 01:00:00.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/doc/source/user/index.rst   
2019-09-04 16:24:21.000000000 +0200
@@ -0,0 +1,221 @@
+=====
+Usage
+=====
+
+Sphinx Configuration
+--------------------
+
+To use the extension, add ``'sphinx_feature_classification.support_matrix'`` to
+the ``extensions`` list in the ``conf.py`` file in your Sphinx project.
+
+.. code-block:: python
+   :caption: conf.py
+
+   extensions = [
+     'sphinx_feature_classification.support_matrix',
+     # ... other extensions
+   ]
+
+Once added, include the ``support_matrix`` directive in your chosen document.
+The directive takes a single argument: a relative path to the INI file in which
+the driver matrix is defined.
+
+.. code-block:: rst
+   :caption: support-matrix.rst
+
+   .. support_matrix:: support-matrix.ini
+
+See below for more details on the format of this file.
+
+
+Drivers vs. Features vs. Implementations
+----------------------------------------
+
+Drivers
+  Drivers are *backends* that are used to implement a set of features. What a
+  driver actually is depends entirely on the project being documented. For a
+  project like OpenStack Compute (nova), this could be a virtualization driver
+  (*libvirt*, *Hyper-V*, *PowerVM*, etc.). For a project like OpenStack
+  Storage, this could be a block storage driver (*LVM*, *NFS*, *RBD*, etc.). It
+  is entirely project-specific.
+
+Features
+  Features are more clear cut. Features are something that your project should
+  support (or *must* support). For a project like OpenStack Compute (nova),
+  this could be the ability to restart an instance. For a project like
+  OpenStack Storage (cinder), this could be the ability to create a snapshot of
+  a volume.
+
+Implementation
+  Implementations refer to the state of a feature within a given driver. As not
+  all features are required, not all drivers may implement them.
+
+
+Documenting Your Drivers
+------------------------
+
+This extension uses an INI file to render your driver matrix in Sphinx. For
+example, you may wish to call this file ``support-matrix.ini``. This file
+should be placed somewhere within your Sphinx source directory. Within the INI
+file, there are multiple sections.
+
+Driver Sections
+~~~~~~~~~~~~~~~
+
+Driver sections are prefixed with ``driver.``. You can specify as many of them
+as you need for your project. The section has various options that can be
+specified.
+
+``title``
+  :Mandatory: **Yes**
+
+  Friendly name of the driver.
+
+``link``
+  :Mandatory: No
+
+  A link to documentation of the driver.
+
+For example:
+
+.. code-block:: INI
+   :caption: support-matrix.ini
+
+   [driver.slow-driver]
+   title=Slow Driver
+   link=https://docs.openstack.org/foo/latest/some-slow-driver-doc
+
+   [driver.fast-driver]
+   title=Fast Driver
+   link=https://docs.openstack.org/foo/latest/some-fast-driver-doc
+
+Feature Sections
+~~~~~~~~~~~~~~~~
+
+Feature sections are prefixed with ``operation.``. As with driver sections, you
+can specify as many of them as you need for your project. These sections are
+also used to describe the feature and indicate the implementation status of the
+feature among the various drivers, as seen below. These sections have the
+following options:
+
+``title``
+  :Mandatory: **Yes**
+
+  Friendly name of the feature.
+
+``status``
+  :Mandatory: **Yes**
+
+  The importance of the feature or whether it's required. One of:
+
+  ``mandatory``
+    Unconditionally required to be implemented.
+
+  ``optional``
+    Optional to support; nice to have.
+
+  ``choice(group)``
+    At least one of the options within the named group must be implemented.
+
+  ``condition``
+    Required, if the referenced condition is met.
+
+``notes``
+  :Mandatory: No
+
+  Additional information about the feature.
+
+``cli``
+  :Mandatory: No
+
+  A sample CLI command that can be used to utilize the feature.
+
+In addition, there are some driver specific options that should be repeated
+for every driver defined earlier in the file.
+
+``driver.XXX``
+  :Mandatory: **Yes** (for each driver)
+
+  The level of implementation of this feature in driver ``XXX``. One of:
+
+  ``complete``
+    Fully implemented, expected to work at all times.
+
+  ``partial``
+    Implemented, but with caveats about when it will work. For example, some
+    configurations, hardware or guest OS' may not support it.
+
+  ``missing``
+    Not implemented at all.
+
+``driver-notes.XXX``
+  :Mandatory: No
+
+  Additional information about the implementation of this feature in driver
+  ``XXX``. While this is optional, it is highly recommended for implementations
+  in the ``partial`` state.
+
+For example:
+
+.. code-block:: INI
+   :caption: support-matrix.ini
+
+   [operation.attach-volume]
+   title=Attach block volume to instance
+   status=optional
+   notes=The attach volume operation provides a means to hotplug additional
+       block storage to a running instance.
+   cli=my-project attach-volume <instance> <volume>
+   driver.slow-driver=complete
+   driver.fast-driver=complete
+
+   [operation.detach-volume]
+   title=Detach block volume from instance
+   status=condition(operation.attach-volume==complete)
+   notes=The detach volume operation provides a means to remove additional
+       block storage from a running instance.
+   cli=my-project detach-volume <instance> <volume>
+   driver.slow-driver=complete
+   driver-notes.slow-driver=Works without issue if instance is off. When
+       hotplugging, requires version foo of the driver.
+   driver.fast-driver=complete
+
+Notice that a driver is only required to implement detach-volume if they
+completed implementing ``attach-volume``.
+
+
+Example
+-------
+
+This is simply the combined example from above.
+
+.. code-block:: INI
+   :caption: support-matrix.ini
+
+   [driver.slow-driver]
+   title=Slow Driver
+   link=https://docs.openstack.org/foo/latest/some-slow-driver-doc
+
+   [driver.fast-driver]
+   title=Fast Driver
+   link=https://docs.openstack.org/foo/latest/some-fast-driver-doc
+
+   [operation.attach-volume]
+   title=Attach block volume to instance
+   status=optional
+   notes=The attach volume operation provides a means to hotplug additional
+       block storage to a running instance.
+   cli=my-project attach-volume <instance> <volume>
+   driver.slow-driver=complete
+   driver.fast-driver=complete
+
+   [operation.detach-volume]
+   title=Detach block volume from instance
+   status=condition(operation.attach-volume==complete)
+   notes=The detach volume operation provides a means to remove additional
+       block storage from a running instance.
+   cli=my-project detach-volume <instance> <volume>
+   driver.slow-driver=complete
+   driver-notes.slow-driver=Works without issue if instance is off. When
+       hotplugging, requires version foo of the driver.
+   driver.fast-driver=complete
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/releasenotes/notes/copy-css-to-static-938b35b03a568abc.yaml
 
new/sphinx-feature-classification-0.4.1/releasenotes/notes/copy-css-to-static-938b35b03a568abc.yaml
--- 
old/sphinx-feature-classification-0.1.0/releasenotes/notes/copy-css-to-static-938b35b03a568abc.yaml
 1970-01-01 01:00:00.000000000 +0100
+++ 
new/sphinx-feature-classification-0.4.1/releasenotes/notes/copy-css-to-static-938b35b03a568abc.yaml
 2019-09-04 16:24:21.000000000 +0200
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Adds a handler to copy the CSS file into the _static directory on build.
+    Previously the CSS file was not being copied over into the built docs.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/releasenotes/notes/fix-css-handling-e17f37c98d80b76e.yaml
 
new/sphinx-feature-classification-0.4.1/releasenotes/notes/fix-css-handling-e17f37c98d80b76e.yaml
--- 
old/sphinx-feature-classification-0.1.0/releasenotes/notes/fix-css-handling-e17f37c98d80b76e.yaml
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/sphinx-feature-classification-0.4.1/releasenotes/notes/fix-css-handling-e17f37c98d80b76e.yaml
   2019-09-04 16:24:21.000000000 +0200
@@ -0,0 +1,4 @@
+---
+fixes:
+  - |
+    Updated the CSS handling to use add_css_file instead of add_stylesheet.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/releasenotes/notes/fix-driver-links-18528dcdbcc9f007.yaml
 
new/sphinx-feature-classification-0.4.1/releasenotes/notes/fix-driver-links-18528dcdbcc9f007.yaml
--- 
old/sphinx-feature-classification-0.1.0/releasenotes/notes/fix-driver-links-18528dcdbcc9f007.yaml
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/sphinx-feature-classification-0.4.1/releasenotes/notes/fix-driver-links-18528dcdbcc9f007.yaml
   2019-09-04 16:24:21.000000000 +0200
@@ -0,0 +1,4 @@
+---
+fixes:
+  - |
+    Fixed driver links to render in the summary table.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/releasenotes/notes/support-driver-notes-b73d5b185f05db7f.yaml
 
new/sphinx-feature-classification-0.4.1/releasenotes/notes/support-driver-notes-b73d5b185f05db7f.yaml
--- 
old/sphinx-feature-classification-0.1.0/releasenotes/notes/support-driver-notes-b73d5b185f05db7f.yaml
       1970-01-01 01:00:00.000000000 +0100
+++ 
new/sphinx-feature-classification-0.4.1/releasenotes/notes/support-driver-notes-b73d5b185f05db7f.yaml
       2019-09-04 16:24:21.000000000 +0200
@@ -0,0 +1,14 @@
+---
+features:
+  - |
+    You can now specify ``driver-notes.XXX`` values. These are useful to
+    provide additional context for features with a status of ``partial``. For
+    example::
+
+        [operation.Cool_Feature]
+        title=Cool Feature
+        status=optional
+        notes=A pretty darn cool feature.
+        driver.foo=complete
+        driver.bar=partial
+        driver-notes.bar=Requires hardware support.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/releasenotes/source/conf.py 
new/sphinx-feature-classification-0.4.1/releasenotes/source/conf.py
--- old/sphinx-feature-classification-0.1.0/releasenotes/source/conf.py 
2018-03-19 17:54:56.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/releasenotes/source/conf.py 
2019-09-04 16:24:21.000000000 +0200
@@ -12,45 +12,16 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Glance Release Notes documentation build configuration file, created by
-# sphinx-quickstart on Tue Nov  3 17:40:50 2015.
-#
-# This file is execfile()d with the current directory set to its
-# containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-# sys.path.insert(0, os.path.abspath('.'))
-
 # -- General configuration ------------------------------------------------
 
-# If your documentation needs a minimal Sphinx version, state it here.
-# needs_sphinx = '1.0'
-
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 # ones.
 extensions = [
-    'oslosphinx',
+    'openstackdocstheme',
     'reno.sphinxext',
 ]
 
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix of source filenames.
-source_suffix = '.rst'
-
-# The encoding of source files.
-# source_encoding = 'utf-8-sig'
-
 # The master toctree document.
 master_doc = 'index'
 
@@ -68,208 +39,12 @@
 # The short X.Y version.
 version = ''
 
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-# language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-# today = ''
-# Else, today_fmt is used as the format for a strftime call.
-# today_fmt = '%B %d, %Y'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-exclude_patterns = []
-
-# The reST default role (used for this markup: `text`) to use for all
-# documents.
-# default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-# add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-# add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-# show_authors = False
-
 # The name of the Pygments (syntax highlighting) style to use.
 pygments_style = 'sphinx'
 
-# A list of ignored prefixes for module index sorting.
-# modindex_common_prefix = []
-
-# If true, keep warnings as "system message" paragraphs in the built documents.
-# keep_warnings = False
-
 
 # -- Options for HTML output ----------------------------------------------
 
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
-html_theme = 'default'
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further.  For a list of options available for each theme, see the
-# documentation.
-# html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-# html_theme_path = []
-
-# The name for this set of Sphinx documents.  If None, it defaults to
-# "<project> v<release> documentation".
-# html_title = None
-
-# A shorter title for the navigation bar.  Default is the same as html_title.
-# html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-# html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-# html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
-
-# Add any extra paths that contain custom files (such as robots.txt or
-# .htaccess) here, relative to this directory. These files are copied
-# directly to the root of the documentation.
-# html_extra_path = []
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-# html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-# html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-# html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-# html_additional_pages = {}
-
-# If false, no module index is generated.
-# html_domain_indices = True
-
-# If false, no index is generated.
-# html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-# html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-# html_show_sourcelink = True
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-# html_show_sphinx = True
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-# html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it.  The value of this option must be the
-# base URL from which the finished HTML is served.
-# html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-# html_file_suffix = None
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'GlanceReleaseNotesdoc'
-
-
-# -- Options for LaTeX output ---------------------------------------------
-
-latex_elements = {
-    # The paper size ('letterpaper' or 'a4paper').
-    # 'papersize': 'letterpaper',
-
-    # The font size ('10pt', '11pt' or '12pt').
-    # 'pointsize': '10pt',
-
-    # Additional stuff for the LaTeX preamble.
-    # 'preamble': '',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title,
-#  author, documentclass [howto, manual, or own class]).
-latex_documents = [
-    ('index', 'GlanceReleaseNotes.tex', u'Glance Release Notes Documentation',
-     u'Glance Developers', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-# latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-# latex_use_parts = False
-
-# If true, show page references after internal links.
-# latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-# latex_show_urls = False
-
-# Documents to append as an appendix to all manuals.
-# latex_appendices = []
-
-# If false, no module index is generated.
-# latex_domain_indices = True
-
-
-# -- Options for manual page output ---------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
-    ('index', 'glancereleasenotes', u'Glance Release Notes Documentation',
-     [u'Glance Developers'], 1)
-]
-
-# If true, show URL addresses after external links.
-# man_show_urls = False
-
-
-# -- Options for Texinfo output -------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-#  dir menu entry, description, category)
-texinfo_documents = [
-    ('index', 'GlanceReleaseNotes', u'Glance Release Notes Documentation',
-     u'Glance Developers', 'GlanceReleaseNotes',
-     'One line description of project.',
-     'Miscellaneous'),
-]
-
-# Documents to append as an appendix to all manuals.
-# texinfo_appendices = []
-
-# If false, no module index is generated.
-# texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-# texinfo_show_urls = 'footnote'
-
-# If true, do not generate a @detailmenu in the "Top" node's menu.
-# texinfo_no_detailmenu = False
-
-# -- Options for Internationalization output ------------------------------
-locale_dirs = ['locale/']
+html_theme = 'openstackdocs'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sphinx-feature-classification-0.1.0/setup.cfg 
new/sphinx-feature-classification-0.4.1/setup.cfg
--- old/sphinx-feature-classification-0.1.0/setup.cfg   2018-03-19 
17:57:38.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/setup.cfg   2019-09-04 
16:24:58.000000000 +0200
@@ -4,8 +4,8 @@
 description-file = 
        README.rst
 author = OpenStack
-author-email = [email protected]
-home-page = http://www.openstack.org/
+author-email = [email protected]
+home-page = https://docs.openstack.org/sphinx-feature-classification/latest/
 classifier = 
        Environment :: OpenStack
        Intended Audience :: Information Technology
@@ -16,7 +16,8 @@
        Programming Language :: Python :: 2
        Programming Language :: Python :: 2.7
        Programming Language :: Python :: 3
-       Programming Language :: Python :: 3.5
+       Programming Language :: Python :: 3.6
+       Programming Language :: Python :: 3.7
 
 [files]
 packages = 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification/releasenotes/notes/update-summary-table-style-cb5a00eb45cce78a.yaml
 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification/releasenotes/notes/update-summary-table-style-cb5a00eb45cce78a.yaml
--- 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification/releasenotes/notes/update-summary-table-style-cb5a00eb45cce78a.yaml
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification/releasenotes/notes/update-summary-table-style-cb5a00eb45cce78a.yaml
   2019-09-04 16:24:21.000000000 +0200
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Fixed the summary table border not rendering and improved the table
+    font sizing.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification/support-matrix.css
 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification/support-matrix.css
--- 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification/support-matrix.css
    2018-03-19 17:54:56.000000000 +0100
+++ 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification/support-matrix.css
    2019-09-04 16:24:21.000000000 +0200
@@ -1,8 +1,12 @@
-
 .sp_feature_required {
     font-weight: bold;
 }
 
+.sp_feature_cells {
+    border: solid 1px black;
+    text-align: center;
+}
+
 .sp_impl_complete {
     color: rgb(0, 120, 0);
     font-weight: normal;
@@ -24,7 +28,7 @@
 }
 
 .sp_impl_summary {
-    font-size: 2em;
+    font-size: medium;
 }
 
 .sp_cli {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification/support_matrix.py
 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification/support_matrix.py
--- 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification/support_matrix.py
     2018-03-19 17:54:56.000000000 +0100
+++ 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification/support_matrix.py
     2019-09-04 16:24:21.000000000 +0200
@@ -19,10 +19,13 @@
 
 """
 
+from os import path
 import re
+import shutil
 
 from docutils import nodes
 from docutils.parsers import rst
+import six
 from six.moves import configparser
 
 KEY_PATTERN = re.compile("[^a-zA-Z0-9_]")
@@ -104,7 +107,13 @@
                     "one of (%s)" % (option, status, section, ", ".join(
                         Implementation.STATUS_ALL)))
 
-            impl = Implementation(status)
+            option_notes = ''.join([DRIVER_NOTES_PREFIX,
+                                    option[len(DRIVER_PREFIX):]])
+            notes = None
+            if cfg.has_option(section, option_notes):
+                notes = cfg.get(section, option_notes)
+
+            impl = Implementation(status=status, notes=notes)
             feature.implementations[option] = impl
 
             return feature
@@ -160,8 +169,9 @@
     STATUS_ALL = [STATUS_COMPLETE, STATUS_MISSING,
                   STATUS_PARTIAL, STATUS_UNKNOWN]
 
-    def __init__(self, status=STATUS_MISSING):
+    def __init__(self, status=STATUS_MISSING, notes=None):
         self.status = status
+        self.notes = notes
 
 
 STATUS_SYMBOLS = {
@@ -205,8 +215,14 @@
         env = self.state.document.settings.env
         fname = self.arguments[0]
         rel_fpath, fpath = env.relfn2path(fname)
+
+        # Handle deprecation of readfp in py3 for read_file that was not
+        # available in py2.
+        if six.PY2:
+            cfg.read_file = cfg.readfp
+
         with open(fpath) as fp:
-            cfg.readfp(fp)
+            cfg.read_file(fp)
 
         # This ensures that the docs are rebuilt whenever the
         # .ini file changes
@@ -234,7 +250,7 @@
         """
 
         summary_title = nodes.subtitle(text="Summary")
-        summary = nodes.table()
+        summary = nodes.table(classes=["sp_feature_cells"])
         cols = len(matrix.drivers.keys())
 
         # Add two columns for the Feature and Status columns.
@@ -255,22 +271,30 @@
         # This sets up all the column headers - two fixed
         # columns for feature name & status
         header = nodes.row()
-        blank = nodes.entry()
+        blank = nodes.entry(classes=["sp_feature_cells"])
         blank.append(nodes.emphasis(text="Feature"))
         header.append(blank)
-        blank = nodes.entry()
+        blank = nodes.entry(classes=["sp_feature_cells"])
         blank.append(nodes.emphasis(text="Status"))
         header.append(blank)
         summary_head.append(header)
 
         # then one column for each backend driver
-        impls = matrix.drivers.keys()
-        impls.sort()
+        impls = sorted(matrix.drivers,
+                       key=lambda x: matrix.drivers[x].title)
         for key in impls:
             driver = matrix.drivers[key]
-            implcol = nodes.entry()
+            implcol = nodes.entry(classes=["sp_feature_cells"])
             header.append(implcol)
-            implcol.append(nodes.strong(text=driver.title))
+            if driver.link:
+                uri = driver.link
+                target_ref = nodes.reference("", refuri=uri)
+                target_txt = nodes.inline()
+                implcol.append(target_txt)
+                target_txt.append(target_ref)
+                target_ref.append(nodes.strong(text=driver.title))
+            else:
+                implcol.append(nodes.strong(text=driver.title))
 
         # We now produce the body of the table, one row for
         # each feature to report on
@@ -281,7 +305,7 @@
             feature_id = re.sub(KEY_PATTERN, "_", feature.key)
 
             # first the fixed columns for title/status
-            key_col = nodes.entry()
+            key_col = nodes.entry(classes=["sp_feature_cells"])
             item.append(key_col)
             key_ref = nodes.reference(refid=feature_id)
             key_txt = nodes.inline()
@@ -289,18 +313,16 @@
             key_txt.append(key_ref)
             key_ref.append(nodes.strong(text=feature.title))
 
-            status_col = nodes.entry()
+            status_col = nodes.entry(classes=["sp_feature_cells"])
             item.append(status_col)
             status_col.append(nodes.inline(
                 text=feature.status,
                 classes=["sp_feature_" + feature.status]))
 
             # and then one column for each backend driver
-            impls = matrix.drivers.keys()
-            impls.sort()
             for key in impls:
                 impl = feature.implementations[key]
-                impl_col = nodes.entry()
+                impl_col = nodes.entry(classes=["sp_feature_cells"])
                 item.append(impl_col)
 
                 key_id = re.sub(KEY_PATTERN, "_",
@@ -362,7 +384,9 @@
             para_divers.append(nodes.strong(text="Driver Support:"))
             # A sub-list giving details of each backend driver
             impls = nodes.bullet_list()
-            for key in feature.implementations:
+            keys = sorted(feature.implementations,
+                          key=lambda x: matrix.drivers[x].title)
+            for key in keys:
                 driver = matrix.drivers[key]
                 impl = feature.implementations[key]
                 subitem = nodes.list_item()
@@ -377,6 +401,9 @@
                                   ids=[key_id]),
                 ]
 
+                if impl.notes is not None:
+                    subitem.append(self._create_notes_paragraph(impl.notes))
+
                 impls.append(subitem)
 
             para_divers.append(impls)
@@ -446,6 +473,15 @@
         return para
 
 
+def on_build_finished(app, exc):
+    if exc is None:
+        src = path.join(path.abspath(path.dirname(__file__)),
+                        'support-matrix.css')
+        dst = path.join(app.outdir, '_static', 'support-matrix.css')
+        shutil.copyfile(src, dst)
+
+
 def setup(app):
     app.add_directive('support_matrix', Directive)
-    app.add_stylesheet('support-matrix.css')
+    app.add_css_file('support-matrix.css')
+    app.connect('build-finished', on_build_finished)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification/tests/fakes/support-matrix.ini
 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification/tests/fakes/support-matrix.ini
--- 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification/tests/fakes/support-matrix.ini
        2018-03-19 17:54:56.000000000 +0100
+++ 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification/tests/fakes/support-matrix.ini
        2019-09-04 16:24:21.000000000 +0200
@@ -12,3 +12,4 @@
 notes=A pretty darn cool feature.
 driver.foo=complete
 driver.bar=partial
+driver-notes.bar=Requires hardware support.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification/tests/test_sphinx_feature_classification.py
 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification/tests/test_sphinx_feature_classification.py
--- 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification/tests/test_sphinx_feature_classification.py
   2018-03-19 17:54:56.000000000 +0100
+++ 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification/tests/test_sphinx_feature_classification.py
   2019-09-04 16:24:21.000000000 +0200
@@ -20,12 +20,13 @@
 """
 import os
 
-from sphinx_feature_classification import support_matrix
-from sphinx_feature_classification.tests import base
-
 import ddt
+import six
 from six.moves import configparser
 
+from sphinx_feature_classification import support_matrix
+from sphinx_feature_classification.tests import base
+
 
 @ddt.ddt
 class MatrixTestCase(base.TestCase):
@@ -37,8 +38,11 @@
         directory = os.path.dirname(os.path.abspath(__file__))
         config_file = os.path.join(directory, 'fakes', 'support-matrix.ini')
 
+        if six.PY2:
+            cfg.read_file = cfg.readfp
+
         with open(config_file) as fp:
-            cfg.readfp(fp)
+            cfg.read_file(fp)
 
         self.matrix = support_matrix.Matrix(cfg)
 
@@ -58,3 +62,13 @@
         fake_driver = self.matrix.drivers[key]
         self.assertEqual(title, fake_driver.title)
         self.assertEqual(link, fake_driver.link)
+
+    @ddt.unpack
+    @ddt.data({'key': 'driver.foo', 'status': 'complete',
+               'notes': None},
+              {'key': 'driver.bar', 'status': 'partial',
+               'notes': 'Requires hardware support.'})
+    def test_implementations_set(self, key, status, notes):
+        fake_implementation = self.matrix.features[0].implementations[key]
+        self.assertEqual(status, fake_implementation.status)
+        self.assertEqual(notes, fake_implementation.notes)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification.egg-info/PKG-INFO
 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification.egg-info/PKG-INFO
--- 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification.egg-info/PKG-INFO
     2018-03-19 17:57:37.000000000 +0100
+++ 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification.egg-info/PKG-INFO
     2019-09-04 16:24:58.000000000 +0200
@@ -1,26 +1,34 @@
 Metadata-Version: 1.1
 Name: sphinx-feature-classification
-Version: 0.1.0
+Version: 0.4.1
 Summary: Generate a matrix of pluggable drivers and their support to an API in 
Sphinx.
-Home-page: http://www.openstack.org/
+Home-page: https://docs.openstack.org/sphinx-feature-classification/latest/
 Author: OpenStack
-Author-email: [email protected]
+Author-email: [email protected]
 License: UNKNOWN
-Description: ===============================
-        sphinx-feature-classification
-        ===============================
+Description: ========================
+        Team and repository tags
+        ========================
         
-        Generate in sphinx a matrix of pluggable drivers and their support to 
an API.
+        .. image:: 
https://governance.openstack.org/tc/badges/sphinx-feature-classification.svg
+            :target: 
https://governance.openstack.org/tc/reference/tags/index.html
         
-        * Free software: Apache license
-        * Documentation: 
http://docs.openstack.org/developer/sphinx-feature-classification
-        * Source: 
http://git.openstack.org/cgit/openstack/sphinx-feature-classification
-        * Bugs: http://bugs.launchpad.net/sphinx-feature-classification
+        .. Change things from this point on
         
-        Features
-        --------
+        =============================
+        sphinx-feature-classification
+        =============================
         
-        * TODO
+        This is a Sphinx directive that allows creating matrices of drivers a 
project
+        contains and which features they support. The directive takes an INI 
file with
+        specific syntax explained in the usage documentation to generate the 
matrices,
+        in which projects have the authority to say what is supported within 
their own
+        repository.
+        
+        * Free software: Apache license
+        * Documentation: 
https://docs.openstack.org/sphinx-feature-classification/latest/
+        * Source: http://opendev.org/openstack/sphinx-feature-classification
+        * Bugs: https://storyboard.openstack.org/#!/project/921
         
         
 Platform: UNKNOWN
@@ -33,4 +41,5 @@
 Classifier: Programming Language :: Python :: 2
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification.egg-info/SOURCES.txt
 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification.egg-info/SOURCES.txt
--- 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification.egg-info/SOURCES.txt
  2018-03-19 17:57:38.000000000 +0100
+++ 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification.egg-info/SOURCES.txt
  2019-09-04 16:24:58.000000000 +0200
@@ -1,6 +1,7 @@
 .coveragerc
 .mailmap
 .testr.conf
+.zuul.yaml
 AUTHORS
 CONTRIBUTING.rst
 ChangeLog
@@ -14,12 +15,15 @@
 test-requirements.txt
 tox.ini
 doc/source/conf.py
-doc/source/contributing.rst
 doc/source/index.rst
-doc/source/installation.rst
-doc/source/readme.rst
-doc/source/usage.rst
+doc/source/contributor/index.rst
+doc/source/install/index.rst
+doc/source/user/index.rst
 releasenotes/notes/.placeholder
+releasenotes/notes/copy-css-to-static-938b35b03a568abc.yaml
+releasenotes/notes/fix-css-handling-e17f37c98d80b76e.yaml
+releasenotes/notes/fix-driver-links-18528dcdbcc9f007.yaml
+releasenotes/notes/support-driver-notes-b73d5b185f05db7f.yaml
 releasenotes/source/conf.py
 releasenotes/source/index.rst
 releasenotes/source/unreleased.rst
@@ -35,6 +39,7 @@
 sphinx_feature_classification.egg-info/pbr.json
 sphinx_feature_classification.egg-info/requires.txt
 sphinx_feature_classification.egg-info/top_level.txt
+sphinx_feature_classification/releasenotes/notes/update-summary-table-style-cb5a00eb45cce78a.yaml
 sphinx_feature_classification/tests/__init__.py
 sphinx_feature_classification/tests/base.py
 sphinx_feature_classification/tests/test_sphinx_feature_classification.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification.egg-info/pbr.json
 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification.egg-info/pbr.json
--- 
old/sphinx-feature-classification-0.1.0/sphinx_feature_classification.egg-info/pbr.json
     2018-03-19 17:57:37.000000000 +0100
+++ 
new/sphinx-feature-classification-0.4.1/sphinx_feature_classification.egg-info/pbr.json
     2019-09-04 16:24:58.000000000 +0200
@@ -1 +1 @@
-{"git_version": "6176884", "is_release": true}
\ No newline at end of file
+{"git_version": "acebe59", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sphinx-feature-classification-0.1.0/tox.ini 
new/sphinx-feature-classification-0.4.1/tox.ini
--- old/sphinx-feature-classification-0.1.0/tox.ini     2018-03-19 
17:54:56.000000000 +0100
+++ new/sphinx-feature-classification-0.4.1/tox.ini     2019-09-04 
16:24:21.000000000 +0200
@@ -1,34 +1,42 @@
 [tox]
 minversion = 2.0
-envlist = py34,py27,pypy,pep8
+envlist = py27,py37,pypy,pep8
 skipsdist = True
 
 [testenv]
 usedevelop = True
-install_command = pip install 
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
 {opts} {packages}
+install_command = pip install {opts} {packages}
 setenv =
    VIRTUAL_ENV={envdir}
    PYTHONWARNINGS=default::DeprecationWarning
-deps = -r{toxinidir}/test-requirements.txt
+deps =
+  
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+  -r{toxinidir}/test-requirements.txt
 commands = python setup.py test --slowest --testr-args='{posargs}'
 
 [testenv:pep8]
+basepython = python3
 commands = flake8 {posargs}
 
 [testenv:venv]
+basepython = python3
 commands = {posargs}
 
 [testenv:cover]
+basepython = python3
 commands = python setup.py test --coverage --testr-args='{posargs}'
 
 [testenv:docs]
+basepython = python3
 commands = python setup.py build_sphinx
 
 [testenv:releasenotes]
+basepython = python3
 commands =
   sphinx-build -a -E -W -d releasenotes/build/doctrees -b html 
releasenotes/source releasenotes/build/html
 
 [testenv:debug]
+basepython = python3
 commands = oslo_debug_helper {posargs}
 
 [flake8]


Reply via email to