Closes #5076: [ext/napoleon] explicitly catch StopIteration (#5119)

* Closes #5076: [ext/napoleon] explicitly catch StopIteration

Per PEP 479, Python 3.7 no longer allows bubbling up StopIteration
outside of a generator. Instead, wrap attribute parsing in a try
block and provide a sane default in case it raises an exception
([]).

* Fix mypy and flake8 issues
This commit is contained in:
Michel Alexandre Salim 2018-07-03 09:28:54 -07:00 committed by Rob Ruana
parent e78133a83e
commit b553c23ab1

View File

@ -527,7 +527,14 @@ class GoogleDocstring(UnicodeMixin):
self._parsed_lines = self._consume_empty()
if self._name and (self._what == 'attribute' or self._what == 'data'):
self._parsed_lines.extend(self._parse_attribute_docstring())
# Implicit stop using StopIteration no longer allowed in
# Python 3.7; see PEP 479
res = [] # type: List[unicode]
try:
res = self._parse_attribute_docstring()
except StopIteration:
pass
self._parsed_lines.extend(res)
return
while self._line_iter.has_next():