summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2020-09-12 16:04:41 +0900
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2020-09-12 16:04:41 +0900
commitfd3d654c17874d4cbffbd8e9379728f83a31b30b (patch)
tree67983225df23f8f0d224576a680f57c01e912800
parent31f26a0bbf5e4e53b340e10464fc7c4cca96f12a (diff)
downloadsphinx-git-fd3d654c17874d4cbffbd8e9379728f83a31b30b.tar.gz
Fix #8190: autodoc: parse error for docstring w/o ending blank lines
autodoc raises a parsing error if some extension generates a docstring not having blank lines at the tail. This appends a blank line if generated one does not contain it.
-rw-r--r--CHANGES2
-rw-r--r--sphinx/ext/autodoc/__init__.py5
-rw-r--r--tests/test_ext_autodoc_events.py3
3 files changed, 9 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index fde891098..c8de2d7e6 100644
--- a/CHANGES
+++ b/CHANGES
@@ -19,6 +19,8 @@ Bugs fixed
* #8085: i18n: Add support for having single text domain
* #8143: autodoc: AttributeError is raised when False value is passed to
autodoc_default_options
+* #8190: autodoc: parsing error is raised if some extension replaces docstring
+ by string not ending with blank lines
* #8093: The highlight warning has wrong location in some builders (LaTeX,
singlehtml and so on)
diff --git a/sphinx/ext/autodoc/__init__.py b/sphinx/ext/autodoc/__init__.py
index ed02c2c90..23fb43a4d 100644
--- a/sphinx/ext/autodoc/__init__.py
+++ b/sphinx/ext/autodoc/__init__.py
@@ -535,6 +535,11 @@ class Documenter:
self.env.app.emit('autodoc-process-docstring',
self.objtype, self.fullname, self.object,
self.options, docstringlines)
+
+ if docstringlines and docstringlines[-1] != '':
+ # append a blank line to the end of the docstring
+ docstringlines.append('')
+
yield from docstringlines
def get_sourcename(self) -> str:
diff --git a/tests/test_ext_autodoc_events.py b/tests/test_ext_autodoc_events.py
index 4e8348abc..7ddc952ab 100644
--- a/tests/test_ext_autodoc_events.py
+++ b/tests/test_ext_autodoc_events.py
@@ -28,7 +28,8 @@ def test_process_docstring(app):
'.. py:function:: func()',
' :module: target.process_docstring',
'',
- ' my docstring'
+ ' my docstring',
+ '',
]