Skip to content

Commit

Permalink
Fix sphinx-doc#6220, sphinx-doc#6225: napoleon: AttributeError is rai…
Browse files Browse the repository at this point in the history
…sed for raised section having references
  • Loading branch information
tk0miya committed Mar 31, 2019
1 parent cbefc01 commit 97c558c
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 3 deletions.
3 changes: 3 additions & 0 deletions CHANGES
Expand Up @@ -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
--------

Expand Down
6 changes: 3 additions & 3 deletions sphinx/ext/napoleon/docstring.py
Expand Up @@ -100,7 +100,7 @@ class GoogleDocstring:
"""

_name_rgx = re.compile(r"^\s*(:(?P<role>\w+):`(?P<name>[a-zA-Z0-9_.-]+)`|"
_name_rgx = re.compile(r"^\s*((?::(?P<role>\S+):)?`(?P<name>[a-zA-Z0-9_.-]+)`|"
r" (?P<name2>[a-zA-Z0-9_.-]+))\s*", re.X)

def __init__(self, docstring, config=None, app=None, what='', name='',
Expand Down Expand Up @@ -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)
Expand Down
9 changes: 9 additions & 0 deletions tests/test_ext_napoleon_docstring.py
Expand Up @@ -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.
"""),
################################
("""
Expand Down

0 comments on commit 97c558c

Please sign in to comment.