You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm using sphinx-apidoc and autodoc to document a code base that makes extensive use of type hints, including typing.Literal which was introduced in Python 3.8. Unfortunately, this is being passed through sphinx.util.typing.restify which is throwing an AttributeError
To Reproduce
I've been able to reproduce this succinctly directly through the Python console:
$ .tox/docs/bin/python
Python 3.9.4 (default, Apr 20 2021, 15:51:38)
[GCC 10.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from sphinx.util.typing import restify
>>> from typing import Literal
>>> FooBar = Literal['foo', 'bar']
>>> restify(FooBar)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/jantman/manheim/git/MAN-Tooling/PanoParse/.tox/docs/lib/python3.9/site-packages/sphinx/util/typing.py", line 126, in restify
return _restify_py37(cls)
File "/home/jantman/manheim/git/MAN-Tooling/PanoParse/.tox/docs/lib/python3.9/site-packages/sphinx/util/typing.py", line 165, in _restify_py37
text += r"\ [%s]" % ", ".join(restify(a) for a in cls.__args__)
File "/home/jantman/manheim/git/MAN-Tooling/PanoParse/.tox/docs/lib/python3.9/site-packages/sphinx/util/typing.py", line 165, in <genexpr>
text += r"\ [%s]" % ", ".join(restify(a) for a in cls.__args__)
File "/home/jantman/manheim/git/MAN-Tooling/PanoParse/.tox/docs/lib/python3.9/site-packages/sphinx/util/typing.py", line 122, in restify
elif cls.__module__ in ('__builtin__', 'builtins'):
AttributeError: 'str' object has no attribute '__module__'
>>>
Alternatively, I've been able to reproduce this issue in multiple unrelated projects of mine, by creating a new module within my project called type_aliases.py with the following content:
fromtypingimportLiteral#: Type alias for valid LocationsLocation=Literal['shared', 'private', 'Predefined', '!!FAKE']
#: Type alias for valid AddressObject _typeAddressObjectType=Literal['ip-netmask', 'ip-range', 'fqdn']
#: Type alias for valid service protocolsValidProtos=Literal['tcp', 'udp', 'any', 'icmp', 'scps']
#: Valid firewall rule typesRuleType=Literal['universal', 'interzone']
#: Valid firewall rule actionsRuleAction=Literal['Allow', 'Deny']
Expected behavior
The Literal would be properly documented, and at least would not raise an exception.
Your project
Unfortunately, proprietary code. If needed, I can push the problematic module to a branch in one of my unrelated open source projects.
Describe the bug
I'm using sphinx-apidoc and autodoc to document a code base that makes extensive use of type hints, including typing.Literal which was introduced in Python 3.8. Unfortunately, this is being passed through
sphinx.util.typing.restify
which is throwing an AttributeErrorTo Reproduce
I've been able to reproduce this succinctly directly through the Python console:
Alternatively, I've been able to reproduce this issue in multiple unrelated projects of mine, by creating a new module within my project called
type_aliases.py
with the following content:Expected behavior
The Literal would be properly documented, and at least would not raise an exception.
Your project
Unfortunately, proprietary code. If needed, I can push the problematic module to a branch in one of my unrelated open source projects.
Environment info
Additional context
sphinx-apidoc
is run with-e -f -M
conf.py
includes:The text was updated successfully, but these errors were encountered: