sphinx-build executes code in Python modules with 3.0.2

Created on 22 Apr 2020  ·  3Comments  ·  Source: sphinx-doc/sphinx

Describe the bug
Running this command with 3.0.2 executes some of the Quart code that then crashes, with 3.0.1 and previous everything works fine.

To Reproduce
Steps to reproduce the behavior:

$ git clone https://github.com/pgjones/quart
$ cd quart
$ pip install tox
# Edit tox.ini to change the sphinx version pin
$ tox -e docs

Expected behavior
Not execute the quart code.

bug duplicate

Most helpful comment

I observe the same issue since the upgrade to sphinx 3.0.2.

Below is the crash log:

# Sphinx version: 3.0.2
# Python version: 3.7.3 (CPython)
# Docutils version: 0.15.2 release
# Jinja2 version: 2.10.3
# Last messages:
#   `sphinxcontrib_images_lightbox2.lightbox2:LightBox2`
#   construction en cours [mo]:cibles pour les fichiers po 0 qui sont périmées
#   construction [html]:cibles pour les fichiers sources 605 qui sont périmées
#   mise-à-jour de l'environnement :
#   [nouvelle configuration]
#   605 ajouté, 0 modifié, 0 supprimé
#   lecture des sources... [  0%] apidoc/modules
#   lecture des sources... [  0%] apidoc/swh
#   lecture des sources... [  0%] apidoc/swh.core
#   lecture des sources... [  0%] apidoc/swh.core.api
# Loaded extensions:
#   sphinx.ext.mathjax (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/mathjax.py
#   sphinxcontrib.applehelp (1.0.1) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/applehelp/__init__.py
#   sphinxcontrib.devhelp (1.0.1) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/devhelp/__init__.py
#   sphinxcontrib.htmlhelp (1.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/htmlhelp/__init__.py
#   sphinxcontrib.serializinghtml (1.1.3) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/serializinghtml/__init__.py
#   sphinxcontrib.qthelp (1.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/qthelp/__init__.py
#   alabaster (0.7.12) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/alabaster/__init__.py
#   sphinx.ext.autodoc.type_comment (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/autodoc/type_comment.py
#   sphinx.ext.autodoc (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py
#   sphinx.ext.napoleon (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/napoleon/__init__.py
#   sphinxcontrib.httpdomain (unknown version) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/httpdomain.py
#   sphinx.ext.extlinks (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/extlinks.py
#   sphinxcontrib.images (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/images.py
#   sphinxcontrib.programoutput (unknown version) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/programoutput/__init__.py
#   sphinx.ext.viewcode (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/viewcode.py
#   sphinx_tabs.tabs (unknown version) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx_tabs/tabs.py
#   sphinx_rtd_theme (unknown version) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx_rtd_theme/__init__.py
#   sphinx.ext.graphviz (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/graphviz.py
#   sphinx_click.ext (unknown version) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx_click/ext.py
Traceback (most recent call last):
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/cmd/build.py", line 280, in build_main
    app.build(args.force_all, filenames)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/application.py", line 348, in build
    self.builder.build_update()
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/builders/__init__.py", line 299, in build_update
    len(to_build))
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/builders/__init__.py", line 311, in build
    updated_docnames = set(self.read())
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/builders/__init__.py", line 418, in read
    self._read_serial(docnames)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/builders/__init__.py", line 439, in _read_serial
    self.read_doc(docname)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/builders/__init__.py", line 479, in read_doc
    doctree = read_doc(self.app, self.env, self.env.doc2path(docname))
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/io.py", line 221, in read_doc
    pub.publish()
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/core.py", line 217, in publish
    self.settings)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/io.py", line 126, in read
    self.parse()
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/readers/__init__.py", line 77, in parse
    self.parser.parse(self.input, document)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/parsers.py", line 102, in parse
    self.statemachine.run(inputlines, document, inliner=self.inliner)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 171, in run
    input_source=document['source'])
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/statemachine.py", line 239, in run
    context, state, transitions)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/statemachine.py", line 460, in check_line
    return method(match, context, next_state)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 2771, in underline
    self.section(title, source, style, lineno - 1, messages)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 327, in section
    self.new_subsection(title, lineno, messages)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 395, in new_subsection
    node=section_node, match_titles=True)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 282, in nested_parse
    node=node, match_titles=match_titles)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/statemachine.py", line 239, in run
    context, state, transitions)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/statemachine.py", line 460, in check_line
    return method(match, context, next_state)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 2771, in underline
    self.section(title, source, style, lineno - 1, messages)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 327, in section
    self.new_subsection(title, lineno, messages)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 395, in new_subsection
    node=section_node, match_titles=True)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 282, in nested_parse
    node=node, match_titles=match_titles)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/statemachine.py", line 239, in run
    context, state, transitions)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/statemachine.py", line 460, in check_line
    return method(match, context, next_state)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 2344, in explicit_markup
    nodelist, blank_finish = self.explicit_construct(match)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 2356, in explicit_construct
    return method(self, expmatch)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 2099, in directive
    directive_class, match, type_name, option_presets)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 2148, in run_directive
    result = directive_instance.run()
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/autodoc/directive.py", line 146, in run
    documenter.generate(more_content=self.content)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 775, in generate
    self.document_members(all_members)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 665, in document_members
    for (mname, member, isattr) in self.filter_members(members, want_all):
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 581, in filter_members
    if getattr(member, '__sphinx_mock__', False):
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/werkzeug/local.py", line 348, in __getattr__
    return getattr(self._get_current_object(), name)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/werkzeug/local.py", line 307, in _get_current_object
    return self.__local()
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/flask/globals.py", line 38, in _lookup_req_object
    raise RuntimeError(_request_ctx_err_msg)
RuntimeError: Working outside of request context.

This typically means that you attempted to use functionality that needed
an active HTTP request.  Consult the documentation on testing for
information about how to avoid this problem.

It seems the regression was introduced in https://github.com/sphinx-doc/sphinx/commit/841f1c7e766d623d5c071605650bedc834480fd2.

All 3 comments

Could you paste a crash log here please? It would be helpful for us.

I observe the same issue since the upgrade to sphinx 3.0.2.

Below is the crash log:

# Sphinx version: 3.0.2
# Python version: 3.7.3 (CPython)
# Docutils version: 0.15.2 release
# Jinja2 version: 2.10.3
# Last messages:
#   `sphinxcontrib_images_lightbox2.lightbox2:LightBox2`
#   construction en cours [mo]:cibles pour les fichiers po 0 qui sont périmées
#   construction [html]:cibles pour les fichiers sources 605 qui sont périmées
#   mise-à-jour de l'environnement :
#   [nouvelle configuration]
#   605 ajouté, 0 modifié, 0 supprimé
#   lecture des sources... [  0%] apidoc/modules
#   lecture des sources... [  0%] apidoc/swh
#   lecture des sources... [  0%] apidoc/swh.core
#   lecture des sources... [  0%] apidoc/swh.core.api
# Loaded extensions:
#   sphinx.ext.mathjax (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/mathjax.py
#   sphinxcontrib.applehelp (1.0.1) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/applehelp/__init__.py
#   sphinxcontrib.devhelp (1.0.1) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/devhelp/__init__.py
#   sphinxcontrib.htmlhelp (1.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/htmlhelp/__init__.py
#   sphinxcontrib.serializinghtml (1.1.3) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/serializinghtml/__init__.py
#   sphinxcontrib.qthelp (1.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/qthelp/__init__.py
#   alabaster (0.7.12) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/alabaster/__init__.py
#   sphinx.ext.autodoc.type_comment (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/autodoc/type_comment.py
#   sphinx.ext.autodoc (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py
#   sphinx.ext.napoleon (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/napoleon/__init__.py
#   sphinxcontrib.httpdomain (unknown version) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/httpdomain.py
#   sphinx.ext.extlinks (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/extlinks.py
#   sphinxcontrib.images (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/images.py
#   sphinxcontrib.programoutput (unknown version) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinxcontrib/programoutput/__init__.py
#   sphinx.ext.viewcode (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/viewcode.py
#   sphinx_tabs.tabs (unknown version) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx_tabs/tabs.py
#   sphinx_rtd_theme (unknown version) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx_rtd_theme/__init__.py
#   sphinx.ext.graphviz (3.0.2) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/graphviz.py
#   sphinx_click.ext (unknown version) from /home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx_click/ext.py
Traceback (most recent call last):
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/cmd/build.py", line 280, in build_main
    app.build(args.force_all, filenames)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/application.py", line 348, in build
    self.builder.build_update()
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/builders/__init__.py", line 299, in build_update
    len(to_build))
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/builders/__init__.py", line 311, in build
    updated_docnames = set(self.read())
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/builders/__init__.py", line 418, in read
    self._read_serial(docnames)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/builders/__init__.py", line 439, in _read_serial
    self.read_doc(docname)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/builders/__init__.py", line 479, in read_doc
    doctree = read_doc(self.app, self.env, self.env.doc2path(docname))
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/io.py", line 221, in read_doc
    pub.publish()
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/core.py", line 217, in publish
    self.settings)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/io.py", line 126, in read
    self.parse()
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/readers/__init__.py", line 77, in parse
    self.parser.parse(self.input, document)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/parsers.py", line 102, in parse
    self.statemachine.run(inputlines, document, inliner=self.inliner)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 171, in run
    input_source=document['source'])
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/statemachine.py", line 239, in run
    context, state, transitions)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/statemachine.py", line 460, in check_line
    return method(match, context, next_state)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 2771, in underline
    self.section(title, source, style, lineno - 1, messages)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 327, in section
    self.new_subsection(title, lineno, messages)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 395, in new_subsection
    node=section_node, match_titles=True)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 282, in nested_parse
    node=node, match_titles=match_titles)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/statemachine.py", line 239, in run
    context, state, transitions)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/statemachine.py", line 460, in check_line
    return method(match, context, next_state)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 2771, in underline
    self.section(title, source, style, lineno - 1, messages)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 327, in section
    self.new_subsection(title, lineno, messages)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 395, in new_subsection
    node=section_node, match_titles=True)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 282, in nested_parse
    node=node, match_titles=match_titles)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/statemachine.py", line 239, in run
    context, state, transitions)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/statemachine.py", line 460, in check_line
    return method(match, context, next_state)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 2344, in explicit_markup
    nodelist, blank_finish = self.explicit_construct(match)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 2356, in explicit_construct
    return method(self, expmatch)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 2099, in directive
    directive_class, match, type_name, option_presets)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/docutils/parsers/rst/states.py", line 2148, in run_directive
    result = directive_instance.run()
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/autodoc/directive.py", line 146, in run
    documenter.generate(more_content=self.content)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 775, in generate
    self.document_members(all_members)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 665, in document_members
    for (mname, member, isattr) in self.filter_members(members, want_all):
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 581, in filter_members
    if getattr(member, '__sphinx_mock__', False):
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/werkzeug/local.py", line 348, in __getattr__
    return getattr(self._get_current_object(), name)
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/werkzeug/local.py", line 307, in _get_current_object
    return self.__local()
  File "/home/antoine/.virtualenvs/swh/lib/python3.7/site-packages/flask/globals.py", line 38, in _lookup_req_object
    raise RuntimeError(_request_ctx_err_msg)
RuntimeError: Working outside of request context.

This typically means that you attempted to use functionality that needed
an active HTTP request.  Consult the documentation on testing for
information about how to avoid this problem.

It seems the regression was introduced in https://github.com/sphinx-doc/sphinx/commit/841f1c7e766d623d5c071605650bedc834480fd2.

@anlambert Thank you for comment. It seems it was already fixed (see: #7516).
Thanks,

Was this page helpful?
0 / 5 - 0 ratings