From fd3d654c17874d4cbffbd8e9379728f83a31b30b Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 12 Sep 2020 16:04:41 +0900 Subject: [PATCH] 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. --- CHANGES | 2 ++ sphinx/ext/autodoc/__init__.py | 5 +++++ tests/test_ext_autodoc_events.py | 3 ++- 3 files changed, 9 insertions(+), 1 deletion(-) 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', + '', ]