From 97c558c0c256451f8df9f6189cd1b420ee396e82 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 31 Mar 2019 22:15:06 +0900 Subject: [PATCH] Fix #6220, #6225: napoleon: AttributeError is raised for raised section having references --- CHANGES | 3 +++ sphinx/ext/napoleon/docstring.py | 6 +++--- tests/test_ext_napoleon_docstring.py | 9 +++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index e97623ea66..ef568431a0 100644 --- a/CHANGES +++ b/CHANGES @@ -22,6 +22,9 @@ Bugs fixed - sphinx.application.CONFIG_FILENAME - :confval:`viewcode_import` +* #6220, #6225: napoleon: AttributeError is raised for raised section having + references + Testing -------- diff --git a/sphinx/ext/napoleon/docstring.py b/sphinx/ext/napoleon/docstring.py index 00a41afe81..c6b8bee9d6 100644 --- a/sphinx/ext/napoleon/docstring.py +++ b/sphinx/ext/napoleon/docstring.py @@ -100,7 +100,7 @@ class GoogleDocstring: """ - _name_rgx = re.compile(r"^\s*(:(?P\w+):`(?P[a-zA-Z0-9_.-]+)`|" + _name_rgx = re.compile(r"^\s*((?::(?P\S+):)?`(?P[a-zA-Z0-9_.-]+)`|" r" (?P[a-zA-Z0-9_.-]+))\s*", re.X) def __init__(self, docstring, config=None, app=None, what='', name='', @@ -700,8 +700,8 @@ def _parse_raises_section(self, section): fields = self._consume_fields(parse_type=False, prefer_type=True) lines = [] # type: List[str] for _name, _type, _desc in fields: - m = self._name_rgx.match(_type).groupdict() - if m['role']: + m = self._name_rgx.match(_type) + if m and m['name']: _type = m['name'] _type = ' ' + _type if _type else '' _desc = self._strip_empty(_desc) diff --git a/tests/test_ext_napoleon_docstring.py b/tests/test_ext_napoleon_docstring.py index 86ded7d89a..a333dc47b7 100644 --- a/tests/test_ext_napoleon_docstring.py +++ b/tests/test_ext_napoleon_docstring.py @@ -473,12 +473,21 @@ def test_raises_types(self): A setting wasn't specified, or was invalid. ValueError: Something something value error. + :py:class:`AttributeError` + errors for missing attributes. + ~InvalidDimensionsError + If the dimensions couldn't be parsed. + `InvalidArgumentsError` + If the arguments are invalid. """, """ Example Function :raises RuntimeError: A setting wasn't specified, or was invalid. :raises ValueError: Something something value error. +:raises AttributeError: errors for missing attributes. +:raises ~InvalidDimensionsError: If the dimensions couldn't be parsed. +:raises InvalidArgumentsError: If the arguments are invalid. """), ################################ ("""