Don't document module level class attribute assignments

Fixes #341
pull/362/head
Ashley Whetter 2 years ago
parent 0963c6d8a7
commit 94295a48cd

@ -14,6 +14,9 @@ Bug Fixes
^^^^^^^^^
* `#330 <https://github.com/readthedocs/sphinx-autoapi/issues/330>`: (Python)
Render tuple values as tuples, not lists.
* `#341 <https://github.com/readthedocs/sphinx-autoapi/issues/341>`: (Python)
Fix module level assignments to class attributes being documented as
module level attributes.
Trivial/Internal Changes
^^^^^^^^^^^^^^^^^^^^^^^^

@ -49,9 +49,20 @@ class Parser:
)
def parse_annassign(self, node):
return self.parse_assign(node)
# Don't document module level assignments to class attributes
if isinstance(node.target, astroid.nodes.AssignAttr):
return []
return self._parse_assign(node)
def parse_assign(self, node):
# Don't document module level assignments to class attributes
if any(isinstance(target, astroid.nodes.AssignAttr) for target in node.targets):
return []
return self._parse_assign(node)
def _parse_assign(self, node):
doc = ""
doc_node = node.next_sibling()
if isinstance(doc_node, astroid.nodes.Expr) and isinstance(
@ -187,7 +198,7 @@ class Parser:
if node.name == "__init__":
for child in node.get_children():
if isinstance(child, (astroid.nodes.Assign, astroid.nodes.AnnAssign)):
child_data = self.parse_assign(child)
child_data = self._parse_assign(child)
result.extend(data for data in child_data if data["doc"])
return result

@ -105,6 +105,9 @@ class Foo(object):
return "google"
Foo.bar = "dinglebop"
def decorator_okay(func):
"""This decorator should parse okay."""

@ -109,6 +109,10 @@ class TestSimpleModule:
# Lists should be rendered as lists, not tuples
assert "['c', 'd']" in example_file
# Assigning a class level attribute at the module level
# should not get documented as a module level attribute.
assert "dinglebop" not in example_file
index_path = "_build/text/index.txt"
with io.open(index_path, encoding="utf8") as index_handle:
index_file = index_handle.read()

Loading…
Cancel
Save