summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2021-01-16 21:40:34 +0900
committerGitHub <noreply@github.com>2021-01-16 21:40:34 +0900
commit90ab89311ff6f7f0074e6859f14805dc0ff0a082 (patch)
tree89b8183e147573e47d65645c9af1b2e788f63a93
parentd635d94eebbca0ebb1a5402aa07ed58c0464c6d3 (diff)
parenteaa86125676729612ac0a1258161544cc5ebeb7a (diff)
downloadsphinx-git-90ab89311ff6f7f0074e6859f14805dc0ff0a082.tar.gz
Merge pull request #8667 from tk0miya/8652_invalid_type_comments
Fix #8652: autodoc: variable comments are ignored if invalid type comments found
-rw-r--r--CHANGES2
-rw-r--r--sphinx/pycode/ast.py4
2 files changed, 6 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index 668947cc5..9fc0c40f7 100644
--- a/CHANGES
+++ b/CHANGES
@@ -43,6 +43,8 @@ Bugs fixed
* #8592: autodoc: ``:meta public:`` does not effect to variables
* #8594: autodoc: empty __all__ attribute is ignored
* #8315: autodoc: Failed to resolve struct.Struct type annotation
+* #8652: autodoc: All variable comments in the module are ignored if the module
+ contains invalid type comments
* #8306: autosummary: mocked modules are documented as empty page when using
:recursive: option
* #8618: html: kbd role produces incorrect HTML when compound-key separators (-,
diff --git a/sphinx/pycode/ast.py b/sphinx/pycode/ast.py
index d131ff4c1..65534f958 100644
--- a/sphinx/pycode/ast.py
+++ b/sphinx/pycode/ast.py
@@ -52,6 +52,10 @@ def parse(code: str, mode: str = 'exec') -> "ast.AST":
try:
# type_comments parameter is available on py38+
return ast.parse(code, mode=mode, type_comments=True) # type: ignore
+ except SyntaxError:
+ # Some syntax error found. To ignore invalid type comments, retry parsing without
+ # type_comments parameter (refs: https://github.com/sphinx-doc/sphinx/issues/8652).
+ return ast.parse(code, mode=mode)
except TypeError:
# fallback to ast module.
# typed_ast is used to parse type_comments if installed.