Skip to content

Commit

Permalink
Merge pull request #8338 from mgeier/autodoc-slots-str
Browse files Browse the repository at this point in the history
autodoc: check whether __slots__ is a str
  • Loading branch information
tk0miya committed Oct 25, 2020
2 parents 746842f + 82c83ed commit 9188cba
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 1 deletion.
5 changes: 4 additions & 1 deletion sphinx/ext/autodoc/importer.py
Expand Up @@ -206,7 +206,10 @@ def get_object_members(subject: Any, objpath: List[str], attrgetter: Callable,
if isclass(subject) and getattr(subject, '__slots__', None) is not None:
from sphinx.ext.autodoc import SLOTSATTR

for name in subject.__slots__:
slots = subject.__slots__
if isinstance(slots, str):
slots = [slots]
for name in slots:
members[name] = Attribute(name, True, SLOTSATTR)

# other members
Expand Down
4 changes: 4 additions & 0 deletions tests/roots/test-ext-autodoc/target/slots.py
Expand Up @@ -2,6 +2,10 @@ class Foo:
__slots__ = ['attr']


class FooSingleString:
__slots__ = 'attr'


class Bar:
__slots__ = {'attr1': 'docstring of attr1',
'attr2': 'docstring of attr2',
Expand Down
8 changes: 8 additions & 0 deletions tests/test_ext_autodoc.py
Expand Up @@ -1205,6 +1205,14 @@ def test_slots(app):
' .. py:attribute:: Foo.attr',
' :module: target.slots',
'',
'',
'.. py:class:: FooSingleString()',
' :module: target.slots',
'',
'',
' .. py:attribute:: FooSingleString.attr',
' :module: target.slots',
'',
]


Expand Down

0 comments on commit 9188cba

Please sign in to comment.