Skip to content

UnboundLocalError: local variable 'membername' referenced before assignment #11631

@MetRonnie

Description

@MetRonnie

Describe the bug

This seems to be a bug in sphinx autodoc that affects Sphinx 7.2.0 - 7.2.2. When building the docs I get

UnboundLocalError: local variable 'membername' referenced before assignment

How to Reproduce

git clone method I'm afraid

git clone https://github.com/cylc/cylc-doc.git

# (graphviz is needed by cylc-doc)
conda install graphviz

cd cylc-doc
pip install -e .[all]

make clean html SPHINXOPTS='-Wn'  # (calls sphinx-build, see Makefile for details)

Environment Information

# Platform:         linux; (Linux-3.10.0-1160.95.1.el7.x86_64-x86_64-with-glibc2.17)
# Sphinx version:   7.2.0
# Python version:   3.10.6 (CPython)
# Docutils version: 0.18.1
# Jinja2 version:   3.0.3
# Pygments version: 2.16.1

Also tested with 7.2.2 and faced the same bug

Sphinx extensions

# Loaded extensions:
#   sphinx.ext.mathjax (7.2.0)
#   alabaster (0.7.12)
#   sphinxcontrib.applehelp (1.0.7)
#   sphinxcontrib.devhelp (1.0.5)
#   sphinxcontrib.htmlhelp (2.0.4)
#   sphinxcontrib.serializinghtml (1.1.9)
#   sphinxcontrib.qthelp (1.0.6)
#   sphinx.ext.autodoc.preserve_defaults (7.2.0)
#   sphinx.ext.autodoc.type_comment (7.2.0)
#   sphinx.ext.autodoc.typehints (7.2.0)
#   sphinx.ext.autodoc (7.2.0)
#   sphinx.ext.autosummary (7.2.0)
#   sphinx.ext.doctest (7.2.0)
#   sphinx.ext.graphviz (7.2.0)
#   sphinx.ext.intersphinx (7.2.0)
#   sphinxcontrib.spelling (8.0.0)
#   hieroglyph (2.1.0)
#   sphinxcontrib.jquery (4.1)
#   sphinx_rtd_theme (unknown version)
#   autodoc_traits (unknown version)
#   database_diagram (1.0.0)
#   autodoc_enum_values (unknown version)
#   cylc.sphinx_ext.cylc_lang (1.0.0)
#   cylc.sphinx_ext.diff_selection (1.0.0)
#   cylc.sphinx_ext.grid_table (1.0.0)
#   cylc.sphinx_ext.hieroglyph_addons (1.0.0)
#   cylc.sphinx_ext.minicylc (1.0.0)
#   cylc.sphinx_ext.practical (1.0.0)
#   cylc.sphinx_ext.rtd_theme_addons (1.0.0)
#   cylc.sphinx_ext.sub_lang (1.0.0)
#   cylc.sphinx_ext.literal_sub_include (1.0.0)

Additional context

Full traceback

Traceback (most recent call last):
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py", line 681, in filter_members
    membername = obj.__name__
AttributeError: 'tuple' object has no attribute '__name__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/cmd/build.py", line 298, in build_main
    app.build(args.force_all, args.filenames)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/application.py", line 354, in build
    self.builder.build_update()
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/builders/__init__.py", line 293, in build_update
    self.build(to_build,
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/builders/__init__.py", line 313, in build
    updated_docnames = set(self.read())
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/builders/__init__.py", line 420, in read
    self._read_serial(docnames)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/builders/__init__.py", line 441, in _read_serial
    self.read_doc(docname)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/builders/__init__.py", line 498, in read_doc
    publisher.publish()
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/core.py", line 217, in publish
    self.document = self.reader.read(self.source, self.parser,
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/io.py", line 105, in read
    self.parse()
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/readers/__init__.py", line 78, in parse
    self.parser.parse(self.input, document)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/parsers.py", line 81, in parse
    self.statemachine.run(inputlines, document, inliner=self.inliner)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 170, in run
    results = StateMachineWS.run(self, input_lines, input_offset,
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/statemachine.py", line 240, in run
    context, next_state, result = self.check_line(
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/statemachine.py", line 452, in check_line
    return method(match, context, next_state)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2779, in underline
    self.section(title, source, style, lineno - 1, messages)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 327, in section
    self.new_subsection(title, lineno, messages)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 393, in new_subsection
    newabsoffset = self.nested_parse(
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 281, in nested_parse
    state_machine.run(block, input_offset, memo=self.memo,
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/statemachine.py", line 240, in run
    context, next_state, result = self.check_line(
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/statemachine.py", line 452, in check_line
    return method(match, context, next_state)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2354, in explicit_markup
    self.explicit_list(blank_finish)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2379, in explicit_list
    newline_offset, blank_finish = self.nested_list_parse(
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 318, in nested_list_parse
    state_machine.run(block, input_offset, memo=self.memo,
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/statemachine.py", line 240, in run
    context, next_state, result = self.check_line(
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/statemachine.py", line 452, in check_line
    return method(match, context, next_state)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2657, in explicit_markup
    nodelist, blank_finish = self.explicit_construct(match)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2364, in explicit_construct
    return method(self, expmatch)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2101, in directive
    return self.run_directive(
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2151, in run_directive
    result = directive_instance.run()
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/ext/autodoc/directive.py", line 139, in run
    documenter.generate(more_content=self.content)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py", line 1886, in generate
    return super().generate(more_content=more_content,
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py", line 950, in generate
    self.document_members(all_members)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py", line 1872, in document_members
    super().document_members(all_members)
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py", line 806, in document_members
    for (mname, member, isattr) in self.filter_members(members, want_all):
  File "~/.conda/envs/cylc8.1/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py", line 779, in filter_members
    self.name, membername, member, exc, type='autodoc')
UnboundLocalError: local variable 'membername' referenced before assignment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions