sphinx-doc / sphinx-doc/sphinx

8.0.2: pytest fails in 7 units

Open
#12,751 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

extensions:autodoc type:bug
Dominant language
Python
Stars
8k
Forks
2.6k
PR merge metrics
No merged PRs in 30d

Description

Describe the bug

Looks like pytest test suite fails in 7 units related to typing checks.

How to Reproduce

I'm packaging your module as an rpm package so I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.

  • python3 -sBm build -w --no-isolation
  • because I'm calling build with --no-isolation I'm using during all processes only locally installed modules
  • install .whl file in </install/prefix> using installer module
  • run pytest with $PYTHONPATH pointing to sitearch and sitelib inside </install/prefix>
  • build is performed in env which is cut off from access to the public network (pytest is executed with -m "not network")
Here is pytest output:
+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-sphinx-8.0.2-2.fc37.x86_64/usr/lib64/python3.10/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-sphinx-8.0.2-2.fc37.x86_64/usr/lib/python3.10/site-packages
+ /usr/bin/pytest -ra -m 'not network'
============================= test session starts ==============================
platform linux -- Python 3.10.14, pytest-8.2.2, pluggy-1.5.0
libraries: Sphinx-8.0.2, docutils-0.20.1
base tmp_path: /tmp/pytest-of-tkloczko/pytest-27
rootdir: /home/tkloczko/rpmbuild/BUILD/sphinx-8.0.2
configfile: pyproject.toml
testpaths: tests
plugins: hypothesis-6.100.0, flaky-3.8.1
collected 2193 items

tests/test_addnodes.py .                                                 [  0%]
tests/test_application.py ........                                       [  0%]
tests/test_builders/test_build.py ...........                            [  0%]
tests/test_builders/test_build_changes.py ..                             [  1%]
tests/test_builders/test_build_dirhtml.py .                              [  1%]
tests/test_builders/test_build_epub.py ..........s..                     [  1%]
tests/test_builders/test_build_gettext.py ...........                    [  2%]
tests/test_builders/test_build_html.py ................................. [  3%]
.............................                                            [  4%]
tests/test_builders/test_build_html_5_output.py ........................ [  6%]
........................................................................ [  9%]
.......................................................................  [ 12%]
tests/test_builders/test_build_html_assets.py .....                      [ 12%]
tests/test_builders/test_build_html_code.py ...                          [ 12%]
tests/test_builders/test_build_html_download.py ..                       [ 13%]
tests/test_builders/test_build_html_highlight.py ......                  [ 13%]
tests/test_builders/test_build_html_image.py ......                      [ 13%]
tests/test_builders/test_build_html_maths.py .......                     [ 13%]
tests/test_builders/test_build_html_numfig.py .......................... [ 15%]
........................................................................ [ 18%]
........................................................................ [ 21%]
.........................................................                [ 24%]
tests/test_builders/test_build_html_tocdepth.py ........................ [ 25%]
.................................                                        [ 26%]
tests/test_builders/test_build_latex.py ssssss.......................... [ 28%]
........................s..................s...........                  [ 30%]
tests/test_builders/test_build_linkcheck.py ............................ [ 32%]
.............                                                            [ 32%]
tests/test_builders/test_build_manpage.py ......                         [ 32%]
tests/test_builders/test_build_texinfo.py .........                      [ 33%]
tests/test_builders/test_build_text.py ...............                   [ 34%]
tests/test_builders/test_build_warnings.py ....                          [ 34%]
tests/test_builders/test_builder.py ..                                   [ 34%]
tests/test_config/test_config.py ....................................... [ 36%]
...........................                                              [ 37%]
tests/test_config/test_correct_year.py ...                               [ 37%]
tests/test_directives/test_directive_code.py ........................... [ 38%]
..............                                                           [ 39%]
tests/test_directives/test_directive_object_description.py ..            [ 39%]
tests/test_directives/test_directive_only.py .                           [ 39%]
tests/test_directives/test_directive_option.py ...                       [ 39%]
tests/test_directives/test_directive_other.py ..........                 [ 40%]
tests/test_directives/test_directive_patch.py ...                        [ 40%]
tests/test_directives/test_directives_no_typesetting.py ..............ss [ 40%]
.....ss.........sss..............                                        [ 42%]
tests/test_domains/test_domain_c.py ...................................  [ 44%]
tests/test_domains/test_domain_cpp.py .................................. [ 45%]
........................................................................ [ 48%]
..........                                                               [ 49%]
tests/test_domains/test_domain_js.py ...................                 [ 50%]
tests/test_domains/test_domain_py.py ................................... [ 51%]
..............                                                           [ 52%]
tests/test_domains/test_domain_py_canonical.py .....                     [ 52%]
tests/test_domains/test_domain_py_fields.py .......                      [ 52%]
tests/test_domains/test_domain_py_pyfunction.py ..............           [ 53%]
tests/test_domains/test_domain_py_pyobject.py .................          [ 54%]
tests/test_domains/test_domain_rst.py ........                           [ 54%]
tests/test_domains/test_domain_std.py ......................             [ 55%]
tests/test_environment/test_environment.py ....                          [ 55%]
tests/test_environment/test_environment_indexentries.py ........         [ 56%]
tests/test_environment/test_environment_record_dependencies.py .         [ 56%]
tests/test_environment/test_environment_toctree.py ............          [ 56%]
tests/test_errors.py ..                                                  [ 56%]
tests/test_events.py ...                                                 [ 57%]
tests/test_extensions/test_ext_apidoc.py ..........................      [ 58%]
tests/test_extensions/test_ext_autodoc.py .............................. [ 59%]
.............................F.........s.............                    [ 62%]
tests/test_extensions/test_ext_autodoc_autoattribute.py ..........F.     [ 62%]
tests/test_extensions/test_ext_autodoc_autoclass.py ........F.F......... [ 63%]
....                                                                     [ 63%]
tests/test_extensions/test_ext_autodoc_autodata.py ....F.                [ 64%]
tests/test_extensions/test_ext_autodoc_autofunction.py .........F....    [ 64%]
tests/test_extensions/test_ext_autodoc_automodule.py ......              [ 64%]
tests/test_extensions/test_ext_autodoc_autoproperty.py ......            [ 65%]
tests/test_extensions/test_ext_autodoc_configs.py ...................... [ 66%]
......F...                                                               [ 66%]
tests/test_extensions/test_ext_autodoc_events.py ......                  [ 66%]
tests/test_extensions/test_ext_autodoc_mock.py .......                   [ 67%]
tests/test_extensions/test_ext_autodoc_preserve_defaults.py ..           [ 67%]
tests/test_extensions/test_ext_autodoc_private_members.py .....          [ 67%]
tests/test_extensions/test_ext_autosectionlabel.py ...                   [ 67%]
tests/test_extensions/test_ext_autosummary.py .......................... [ 68%]
.                                                                        [ 68%]
tests/test_extensions/test_ext_autosummary_imports.py ..                 [ 69%]
tests/test_extensions/test_ext_coverage.py ....                          [ 69%]
tests/test_extensions/test_ext_doctest.py ......                         [ 69%]
tests/test_extensions/test_ext_duration.py .                             [ 69%]
tests/test_extensions/test_ext_extlinks.py ...                           [ 69%]
tests/test_extensions/test_ext_githubpages.py ...                        [ 69%]
tests/test_extensions/test_ext_graphviz.py .....                         [ 70%]
tests/test_extensions/test_ext_ifconfig.py ..                            [ 70%]
tests/test_extensions/test_ext_imgconverter.py s                         [ 70%]
tests/test_extensions/test_ext_imgmockconverter.py .                     [ 70%]
tests/test_extensions/test_ext_inheritance_diagram.py ......             [ 70%]
tests/test_extensions/test_ext_intersphinx.py .....................      [ 71%]
tests/test_extensions/test_ext_intersphinx_cache.py ....                 [ 71%]
tests/test_extensions/test_ext_math.py sss.......................        [ 72%]
tests/test_extensions/test_ext_napoleon.py .................             [ 73%]
tests/test_extensions/test_ext_napoleon_docstring.py ................... [ 74%]
.................................                                        [ 75%]
tests/test_extensions/test_ext_todo.py ...                               [ 76%]
tests/test_extensions/test_ext_viewcode.py ......                        [ 76%]
tests/test_extensions/test_extension.py .                                [ 76%]
tests/test_highlighting.py .....                                         [ 76%]
tests/test_intl/test_catalogs.py ...                                     [ 76%]
tests/test_intl/test_intl.py ........................................... [ 78%]
.................                                                        [ 79%]
tests/test_intl/test_locale.py ....                                      [ 79%]
tests/test_markup/test_markup.py .....................................   [ 81%]
tests/test_markup/test_metadata.py .                                     [ 81%]
tests/test_markup/test_parser.py .                                       [ 81%]
tests/test_markup/test_smartquotes.py ..........                         [ 81%]
tests/test_project.py .......                                            [ 82%]
tests/test_pycode/test_pycode.py .......                                 [ 82%]
tests/test_pycode/test_pycode_ast.py ................................... [ 84%]
...........                                                              [ 84%]
tests/test_pycode/test_pycode_parser.py ............................     [ 85%]
tests/test_quickstart.py ..........                                      [ 86%]
tests/test_roles.py .                                                    [ 86%]
tests/test_search.py .................                                   [ 87%]
tests/test_theming/test_html_theme.py ...                                [ 87%]
tests/test_theming/test_templating.py ...                                [ 87%]
tests/test_theming/test_theming.py .......................               [ 88%]
tests/test_toctree.py ...                                                [ 88%]
tests/test_transforms/test_transforms_move_module_targets.py ....        [ 88%]
tests/test_transforms/test_transforms_post_transforms.py ............... [ 89%]
.                                                                        [ 89%]
tests/test_transforms/test_transforms_post_transforms_code.py ...        [ 89%]
tests/test_transforms/test_transforms_post_transforms_images.py .        [ 89%]
tests/test_transforms/test_transforms_reorder_nodes.py ...               [ 89%]
tests/test_util/test_util.py ....                                        [ 90%]
tests/test_util/test_util_console.py ...                                 [ 90%]
tests/test_util/test_util_display.py .....                               [ 90%]
tests/test_util/test_util_docstrings.py ...                              [ 90%]
tests/test_util/test_util_docutils.py ...                                [ 90%]
tests/test_util/test_util_docutils_sphinx_directive.py ........          [ 91%]
tests/test_util/test_util_fileutil.py .....                              [ 91%]
tests/test_util/test_util_i18n.py .......                                [ 91%]
tests/test_util/test_util_images.py ....                                 [ 91%]
tests/test_util/test_util_inspect.py ................................... [ 93%]
............                                                             [ 93%]
tests/test_util/test_util_inventory.py .....                             [ 94%]
tests/test_util/test_util_logging.py ...................                 [ 95%]
tests/test_util/test_util_matching.py ...........                        [ 95%]
tests/test_util/test_util_nodes.py ...........................           [ 96%]
tests/test_util/test_util_rst.py ..........                              [ 97%]
tests/test_util/test_util_template.py ..                                 [ 97%]
tests/test_util/test_util_typing.py ..................................   [ 98%]
tests/test_versioning.py ..........                                      [ 99%]
tests/test_writers/test_api_translator.py ...........                    [ 99%]
tests/test_writers/test_docutilsconf.py ..                               [ 99%]
tests/test_writers/test_writer_latex.py .                                [100%]

=================================== FAILURES ===================================
__________________________ test_autodoc_GenericAlias ___________________________

app = <SphinxTestApp buildername='html'>

    @pytest.mark.sphinx('html', testroot='ext-autodoc')
    def test_autodoc_GenericAlias(app):
        options = {"members": None,
                   "undoc-members": None}
        actual = do_autodoc(app, 'module', 'target.genericalias', options)
>       assert list(actual) == [
            '',
            '.. py:module:: target.genericalias',
            '',
            '',
            '.. py:class:: Class()',
            '   :module: target.genericalias',
            '',
            '',
            '   .. py:attribute:: Class.T',
            '      :module: target.genericalias',
            '',
            '      A list of int',
            '',
            '      alias of :py:class:`~typing.List`\\ [:py:class:`int`]',
            '',
            '',
            '.. py:data:: L',
            '   :module: target.genericalias',
            '',
            '   A list of Class',
            '',
            '   alias of :py:class:`~typing.List`\\ '
            '[:py:class:`~target.genericalias.Class`]',
            '',
            '',
            '.. py:data:: T',
            '   :module: target.genericalias',
            '',
            '   A list of int',
            '',
            '   alias of :py:class:`~typing.List`\\ [:py:class:`int`]',
            '',
        ]
E       AssertionError: assert ['', '.. py:m...icalias', ...] == ['', '.. py:m...icalias', ...]
E
E         At index 13 diff: '      alias of :py:class:`list`\\ [:py:class:`int`]' != '      alias of :py:class:`~typing.List`\\ [:py:class:`int`]'
E         Right contains 5 more items, first extra item: ''
E         Use -v to get more diff

tests/test_extensions/test_ext_autodoc.py:2206: AssertionError
--------------------------- Captured stdout teardown ---------------------------
# testroot: root
# builder: html
# srcdir: /tmp/pytest-of-tkloczko/pytest-27/ext-autodoc
# outdir: /tmp/pytest-of-tkloczko/pytest-27/ext-autodoc/_build/html
# status:
Running Sphinx v8.0.2
loading translations [en]... done

# warning:

_______________________ test_autoattribute_GenericAlias ________________________

app = <SphinxTestApp buildername='html'>

    @pytest.mark.sphinx('html', testroot='ext-autodoc')
    def test_autoattribute_GenericAlias(app):
        actual = do_autodoc(app, 'attribute', 'target.genericalias.Class.T')
>       assert list(actual) == [
            '',
            '.. py:attribute:: Class.T',
            '   :module: target.genericalias',
            '',
            '   A list of int',
            '',
            '   alias of :py:class:`~typing.List`\\ [:py:class:`int`]',
            '',
        ]
E       AssertionError: assert ['', '.. py:a...int', '', ...] == ['', '.. py:a...int', '', ...]
E
E         At index 6 diff: '   alias of :py:class:`list`\\ [:py:class:`int`]' != '   alias of :py:class:`~typing.List`\\ [:py:class:`int`]'
E         Use -v to get more diff

tests/test_extensions/test_ext_autodoc_autoattribute.py:142: AssertionError
--------------------------- Captured stdout teardown ---------------------------
# testroot: root
# builder: html
# srcdir: /tmp/pytest-of-tkloczko/pytest-27/ext-autodoc
# outdir: /tmp/pytest-of-tkloczko/pytest-27/ext-autodoc/_build/html
# status:
Running Sphinx v8.0.2
loading translations [en]... done
loading pickled environment... done

# warning:

______________ test_show_inheritance_for_subclass_of_generic_type ______________

app = <SphinxTestApp buildername='html'>

    @pytest.mark.sphinx('html', testroot='ext-autodoc')
    def test_show_inheritance_for_subclass_of_generic_type(app):
        options = {'show-inheritance': None}
        actual = do_autodoc(app, 'class', 'target.classes.Quux', options)
>       assert list(actual) == [
            '',
            '.. py:class:: Quux(iterable=(), /)',
            '   :module: target.classes',
            '',
            '   Bases: :py:class:`~typing.List`\\ [:py:class:`int` | :py:class:`float`]',
            '',
            '   A subclass of List[Union[int, float]]',
            '',
        ]
E       AssertionError: assert ['', '.. py:c...t`]', '', ...] == ['', '.. py:c...t`]', '', ...]
E
E         At index 4 diff: '   Bases: :py:class:`list`\\ [:py:class:`int` | :py:class:`float`]' != '   Bases: :py:class:`~typing.List`\\ [:py:class:`int` | :py:class:`float`]'
E         Use -v to get more diff

tests/test_extensions/test_ext_autodoc_autoclass.py:273: AssertionError
--------------------------- Captured stdout teardown ---------------------------
# testroot: root
# builder: html
# srcdir: /tmp/pytest-of-tkloczko/pytest-27/ext-autodoc
# outdir: /tmp/pytest-of-tkloczko/pytest-27/ext-autodoc/_build/html
# status:
Running Sphinx v8.0.2
loading translations [en]... done
loading pickled environment... done

# warning:

__________________________ test_autodoc_process_bases __________________________

app = <SphinxTestApp buildername='html'>, name = 'target.classes.Quux'
obj = <class 'target.classes.Quux'>
options = {'show-inheritance': True, 'members': []}
bases = [list[typing.Union[int, float]]]

    def autodoc_process_bases(app, name, obj, options, bases):
        assert name == 'target.classes.Quux'
        assert obj.__module__ == 'target.classes'
        assert obj.__name__ == 'Quux'
        assert options == {'show-inheritance': True,
                           'members': []}
>       assert bases == [typing.List[typing.Union[int, float]]]  # NoQA: UP006, UP007
E       assert [list[typing....[int, float]]] == [typing.List[...[int, float]]]
E
E         At index 0 diff: list[typing.Union[int, float]] != typing.List[typing.Union[int, float]]
E         Use -v to get more diff

tests/test_extensions/test_ext_autodoc_autoclass.py:307: AssertionError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.mark.sphinx('html', testroot='ext-autodoc')
    def test_autodoc_process_bases(app):
        def autodoc_process_bases(app, name, obj, options, bases):
            assert name == 'target.classes.Quux'
            assert obj.__module__ == 'target.classes'
            assert obj.__name__ == 'Quux'
            assert options == {'show-inheritance': True,
                               'members': []}
            assert bases == [typing.List[typing.Union[int, float]]]  # NoQA: UP006, UP007

            bases.pop()
            bases.extend([int, str])

        app.connect('autodoc-process-bases', autodoc_process_bases)

        options = {'show-inheritance': None}
>       actual = do_autodoc(app, 'class', 'target.classes.Quux', options)

tests/test_extensions/test_ext_autodoc_autoclass.py:315:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_extensions/autodoc_util.py:32: in do_autodoc
    documenter.generate()
sphinx/ext/autodoc/__init__.py:1872: in generate
    return super().generate(more_content=more_content,
sphinx/ext/autodoc/__init__.py:933: in generate
    self.add_directive_header(sig)
sphinx/ext/autodoc/__init__.py:1707: in add_directive_header
    self.env.events.emit('autodoc-process-bases',
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7f38717f4b20>
name = 'autodoc-process-bases', allowed_exceptions = ()
args = ('target.classes.Quux', <class 'target.classes.Quux'>, {'show-inheritance': True, 'members': []}, [list[typing.Union[int, float]]])
results = []
listeners = [EventListener(id=66, handler=<function test_autodoc_process_bases.<locals>.autodoc_process_bases at 0x7f3876994820>, priority=500)]

    def emit(
        self, name: str, *args: Any, allowed_exceptions: tuple[type[Exception], ...] = ()
    ) -> list:
        """Emit a Sphinx event."""
        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter('priority'))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(
                    __('Handler %r for event %r threw an exception')
                    % (listener.handler, name),
                    exc,
                    modname=modname,
                ) from exc
E               sphinx.errors.ExtensionError: Handler <function test_autodoc_process_bases.<locals>.autodoc_process_bases at 0x7f3876994820> for event 'autodoc-process-bases' threw an exception (exception: assert [list[typing....[int, float]]] == [typing.List[...[int, float]]]
E
E                 At index 0 diff: list[typing.Union[int, float]] != typing.List[typing.Union[int, float]]
E                 Use -v to get more diff)

sphinx/events.py:111: ExtensionError
--------------------------- Captured stdout teardown ---------------------------
# testroot: root
# builder: html
# srcdir: /tmp/pytest-of-tkloczko/pytest-27/ext-autodoc
# outdir: /tmp/pytest-of-tkloczko/pytest-27/ext-autodoc/_build/html
# status:
Running Sphinx v8.0.2
loading translations [en]... done
loading pickled environment... done

# warning:

__________________________ test_autodata_GenericAlias __________________________

app = <SphinxTestApp buildername='html'>

    @pytest.mark.sphinx('html', testroot='ext-autodoc')
    def test_autodata_GenericAlias(app):
        actual = do_autodoc(app, 'data', 'target.genericalias.T')
>       assert list(actual) == [
            '',
            '.. py:data:: T',
            '   :module: target.genericalias',
            '',
            '   A list of int',
            '',
            '   alias of :py:class:`~typing.List`\\ [:py:class:`int`]',
            '',
        ]
E       AssertionError: assert ['', '.. py:d...int', '', ...] == ['', '.. py:d...int', '', ...]
E
E         At index 6 diff: '   alias of :py:class:`list`\\ [:py:class:`int`]' != '   alias of :py:class:`~typing.List`\\ [:py:class:`int`]'
E         Use -v to get more diff

tests/test_extensions/test_ext_autodoc_autodata.py:72: AssertionError
--------------------------- Captured stdout teardown ---------------------------
# testroot: root
# builder: html
# srcdir: /tmp/pytest-of-tkloczko/pytest-27/ext-autodoc
# outdir: /tmp/pytest-of-tkloczko/pytest-27/ext-autodoc/_build/html
# status:
Running Sphinx v8.0.2
loading translations [en]... done
loading pickled environment... done

# warning:

_____________________ test_wrapped_function_contextmanager _____________________

app = <SphinxTestApp buildername='html'>

    @pytest.mark.sphinx('html', testroot='ext-autodoc')
    def test_wrapped_function_contextmanager(app):
        actual = do_autodoc(app, 'function', 'target.wrappedfunction.feeling_good')
>       assert list(actual) == [
            '',
            '.. py:function:: feeling_good(x: int, y: int) -> ~typing.Generator',
            '   :module: target.wrappedfunction',
            '',
            "   You'll feel better in this context!",
            '',
        ]
E       assert ['', '.. py:f...context!", ''] == ['', '.. py:f...context!", '']
E
E         At index 1 diff: '.. py:function:: feeling_good(x: int, y: int) -> ~collections.abc.Generator' != '.. py:function:: feeling_good(x: int, y: int) -> ~typing.Generator'
E         Use -v to get more diff

tests/test_extensions/test_ext_autodoc_autofunction.py:159: AssertionError
--------------------------- Captured stdout teardown ---------------------------
# testroot: root
# builder: html
# srcdir: /tmp/pytest-of-tkloczko/pytest-27/ext-autodoc
# outdir: /tmp/pytest-of-tkloczko/pytest-27/ext-autodoc/_build/html
# status:
Running Sphinx v8.0.2
loading translations [en]... done
loading pickled environment... done

# warning:

_______ test_autodoc_typehints_format_fully_qualified_for_generic_alias ________

app = <SphinxTestApp buildername='html'>

    @pytest.mark.sphinx('html', testroot='ext-autodoc',
                        confoverrides={'autodoc_typehints_format': "fully-qualified"})
    def test_autodoc_typehints_format_fully_qualified_for_generic_alias(app):
        actual = do_autodoc(app, 'data', 'target.genericalias.L')
>       assert list(actual) == [
            '',
            '.. py:data:: L',
            '   :module: target.genericalias',
            '',
            '   A list of Class',
            '',
            '   alias of :py:class:`~typing.List`\\ [:py:class:`target.genericalias.Class`]',
            '',
        ]
E       AssertionError: assert ['', '.. py:d...ass', '', ...] == ['', '.. py:d...ass', '', ...]
E
E         At index 6 diff: '   alias of :py:class:`list`\\ [:py:class:`target.genericalias.Class`]' != '   alias of :py:class:`~typing.List`\\ [:py:class:`target.genericalias.Class`]'
E         Use -v to get more diff

tests/test_extensions/test_ext_autodoc_configs.py:1568: AssertionError
--------------------------- Captured stdout teardown ---------------------------
# testroot: root
# builder: html
# srcdir: /tmp/pytest-of-tkloczko/pytest-27/ext-autodoc
# outdir: /tmp/pytest-of-tkloczko/pytest-27/ext-autodoc/_build/html
# status:
Running Sphinx v8.0.2
loading translations [en]... done
loading pickled environment... done

# warning:

=========================== short test summary info ============================
SKIPPED [1] tests/test_builders/test_build_epub.py:375: Skipped because DO_EPUBCHECK is not set
SKIPPED [6] tests/test_builders/test_build_latex.py:107: not running latex, the required styles do not seem to be installed
SKIPPED [1] tests/test_builders/test_build_latex.py:1198: not running latex, the required styles do not seem to be installed
SKIPPED [1] tests/test_builders/test_build_latex.py:1612: not running latex, the required styles do not seem to be installed
SKIPPED [1] tests/test_directives/test_directives_no_typesetting.py:44: c:function does not support :no-index: option
SKIPPED [1] tests/test_directives/test_directives_no_typesetting.py:44: cpp:function does not support :no-index: option
SKIPPED [1] tests/test_directives/test_directives_no_typesetting.py:56: c:function does not support :no-index: option
SKIPPED [1] tests/test_directives/test_directives_no_typesetting.py:56: cpp:function does not support :no-index: option
SKIPPED [1] tests/test_directives/test_directives_no_typesetting.py:71: rst:directive does not support :no-index-entry: option
SKIPPED [1] tests/test_directives/test_directives_no_typesetting.py:71: cmdoption does not support :no-index-entry: option
SKIPPED [1] tests/test_directives/test_directives_no_typesetting.py:71: envvar does not support :no-index-entry: option
SKIPPED [1] tests/test_extensions/test_ext_autodoc.py:2536: cython is not installed
SKIPPED [1] tests/test_extensions/test_ext_imgconverter.py:22: image_converter "convert" is not available
SKIPPED [1] tests/test_extensions/test_ext_math.py:25: Requires dvipng" binary
SKIPPED [1] tests/test_extensions/test_ext_math.py:45: Requires dvisvgm" binary
SKIPPED [1] tests/test_extensions/test_ext_math.py:66: Requires dvisvgm" binary
FAILED tests/test_extensions/test_ext_autodoc.py::test_autodoc_GenericAlias
FAILED tests/test_extensions/test_ext_autodoc_autoattribute.py::test_autoattribute_GenericAlias
FAILED tests/test_extensions/test_ext_autodoc_autoclass.py::test_show_inheritance_for_subclass_of_generic_type
FAILED tests/test_extensions/test_ext_autodoc_autoclass.py::test_autodoc_process_bases
FAILED tests/test_extensions/test_ext_autodoc_autodata.py::test_autodata_GenericAlias
FAILED tests/test_extensions/test_ext_autodoc_autofunction.py::test_wrapped_function_contextmanager
FAILED tests/test_extensions/test_ext_autodoc_configs.py::test_autodoc_typehints_format_fully_qualified_for_generic_alias
============ 7 failed, 2165 passed, 21 skipped in 170.92s (0:02:50) ============
Environment Information

Python 3.10.14.

List of installed modules in build env:
Package                       Version
----------------------------- -----------
alabaster                     0.7.16
attrs                         24.2.0
Babel                         2.15.0
build                         1.2.1
charset-normalizer            3.3.2
defusedxml                    0.7.1
distro                        1.9.0
docutils                      0.20.1
exceptiongroup                1.1.3
filelock                      3.15.4
flaky                         3.8.1
html5lib                      1.1
hypothesis                    6.100.0
imagesize                     1.4.1
importlib_metadata            8.0.0
iniconfig                     2.0.0
installer                     0.7.0
Jinja2                        3.1.4
lxml                          5.2.2
MarkupSafe                    2.1.5
packaging                     24.0
pluggy                        1.5.0
Pygments                      2.18.0
pyproject_hooks               1.0.0
pytest                        8.2.2
python-dateutil               2.9.0.post0
requests                      2.32.3
setuptools                    70.2.0
snowballstemmer               2.2.0
sortedcontainers              2.4.0
Sphinx                        7.3.7
sphinxcontrib-applehelp       1.0.8
sphinxcontrib-devhelp         1.0.6
sphinxcontrib-htmlhelp        2.0.5
sphinxcontrib-jsmath          1.0.1
sphinxcontrib-qthelp          1.0.7
sphinxcontrib-serializinghtml 2.0.0
sphinxcontrib-websupport      1.2.7
tokenize_rt                   5.2.0
tomli                         2.0.1
typing_extensions             4.12.2
urllib3                       2.2.2
webencodings                  0.5.1
wheel                         0.44.0
zipp                          3.19.2
Sphinx extensions

N/A

Additional context

N/A

Please let me know if you need more details or want me to perform some diagnostics.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the non-network pytest command described in the issue and inspect the failures in tests/test_extensions/test_ext_autodoc.py and its autoattribute, autoclass, autodata, autofunction, and configs test files. Trace the typing-related failures to their reported behavior and confirm that all seven failing units pass without introducing new failures.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
documentation, testing
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.