Starting with tox 4.0.0, we get the following failure: this blocks the gate.
$ tox -redocs
docs: remove tox env folder /home/cyril/openstack/python-glanceclient/.tox/docs
docs: install_deps> python -I -m pip install -r /home/cyril/openstack/python-glanceclient/doc/requirements.txt
docs: commands[0]> sphinx-build -W -b html doc/source doc/build/html
Running Sphinx v6.1.3
[openstackdocstheme] version: 3.0.1
[openstackdocstheme] connecting html-page-context event handler
[openstackdocstheme] overriding configured project name (python-glanceclient) with name extracted from the package (python-glanceclient); you can disable this behavior with the 'openstackdocs_auto_name' option
[openstackdocstheme] using theme from /home/cyril/openstack/python-glanceclient/.tox/docs/lib/python3.10/site-packages/openstackdocstheme/theme
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.client.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.exc.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.shell.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.common.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.common.exceptions.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.common.http.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.common.https.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.common.progressbar.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.common.utils.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v1.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v1.client.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v1.image_members.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v1.images.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v1.shell.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v1.versions.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v1.apiclient.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v1.apiclient.base.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v1.apiclient.exceptions.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v1.apiclient.utils.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.cache.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.client.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.image_members.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.image_schema.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.image_tags.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.images.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.info.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.metadefs.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.namespace_schema.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.resource_type_schema.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.schemas.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.shell.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.tasks.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/glanceclient.v2.versions.rst.
Creating file /home/cyril/openstack/python-glanceclient/doc/source/reference/api/modules.rst.
building [mo]: targets for 0 po files that are out of date
writing output...
building [html]: targets for 43 source files that are out of date
updating environment: [new config] 43 added, 0 changed, 0 removed
reading sources... [ 2%] cli/details
reading sources... [ 4%] cli/glance
reading sources... [ 6%] cli/index
reading sources... [ 9%] cli/property-keys
reading sources... [ 11%] index
reading sources... [ 13%] reference/api/glanceclient
reading sources... [ 16%] reference/api/glanceclient.client
reading sources... [ 18%] reference/api/glanceclient.common
reading sources... [ 20%] reference/api/glanceclient.common.exceptions
reading sources... [ 23%] reference/api/glanceclient.common.http
reading sources... [ 25%] reference/api/glanceclient.common.https
reading sources... [ 27%] reference/api/glanceclient.common.progressbar
reading sources... [ 30%] reference/api/glanceclient.common.utils
reading sources... [ 32%] reference/api/glanceclient.exc
reading sources... [ 34%] reference/api/glanceclient.shell
reading sources... [ 37%] reference/api/glanceclient.v1
reading sources... [ 39%] reference/api/glanceclient.v1.apiclient
reading sources... [ 41%] reference/api/glanceclient.v1.apiclient.base
reading sources... [ 44%] reference/api/glanceclient.v1.apiclient.exceptions
reading sources... [ 46%] reference/api/glanceclient.v1.apiclient.utils
reading sources... [ 48%] reference/api/glanceclient.v1.client
reading sources... [ 51%] reference/api/glanceclient.v1.image_members
reading sources... [ 53%] reference/api/glanceclient.v1.images
reading sources... [ 55%] reference/api/glanceclient.v1.shell
reading sources... [ 58%] reference/api/glanceclient.v1.versions
reading sources... [ 60%] reference/api/glanceclient.v2
reading sources... [ 62%] reference/api/glanceclient.v2.cache
reading sources... [ 65%] reference/api/glanceclient.v2.client
reading sources... [ 67%] reference/api/glanceclient.v2.image_members
reading sources... [ 69%] reference/api/glanceclient.v2.image_schema
reading sources... [ 72%] reference/api/glanceclient.v2.image_tags
reading sources... [ 74%] reference/api/glanceclient.v2.images
reading sources... [ 76%] reference/api/glanceclient.v2.info
reading sources... [ 79%] reference/api/glanceclient.v2.metadefs
reading sources... [ 81%] reference/api/glanceclient.v2.namespace_schema
reading sources... [ 83%] reference/api/glanceclient.v2.resource_type_schema
reading sources... [ 86%] reference/api/glanceclient.v2.schemas
reading sources... [ 88%] reference/api/glanceclient.v2.shell
reading sources... [ 90%] reference/api/glanceclient.v2.tasks
reading sources... [ 93%] reference/api/glanceclient.v2.versions
reading sources... [ 95%] reference/api/modules
reading sources... [ 97%] reference/apiv2
reading sources... [100%] reference/index
Warning, treated as error:
autodoc: failed to import module 'client' from module 'glanceclient'; the following exception was raised:
No module named 'oslo_utils'
docs: exit 2 (2.21 seconds) /home/cyril/openstack/python-glanceclient> sphinx-build -W -b html doc/source doc/build/html pid=1594171
docs: FAIL code 2 (10.61=setup[8.39]+cmd[2.21] seconds)
evaluation failed :( (10.68 seconds)
The issue here is that only the explicitely specified doc deps from doc/requirement s.txt are installed in the venv, while the glanceclient package itself is not installed (even though we set usedevelop=True).