You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
doctest.DocTestFinder reports incorrect line numbers with exclude_empty=False #72436
[<DocTest example from example.py:5 (no examples)>,
<DocTest example.a from example.py:5 (no examples)>,
<DocTest example.b from example.py:5 (no examples)>,
<DocTest example.c from example.py:None (no examples)>]
whereas if one uncomments the docstrings of a and c the output is
[<DocTest example from example.py:1 (no examples)>,
<DocTest example.a from example.py:1 (no examples)>,
<DocTest example.b from example.py:5 (no examples)>,
<DocTest example.c from example.py:9 (no examples)>]
This bug is due to this line in doctest:
lineno=self._find_lineno(obj, source_lines)
The documentation of _find_lineno says this:
def_find_lineno(self, obj, source_lines):
""" Return a line number of the given object's docstring. Note: this method assumes that the object has a docstring. """
This assumption is violated by the call listed above, because of the exclude_empty=False parameter to DocTestFinder().
I guess lineno should just be None for all methods that do not have a docstring?
Activity
cpitclaudel commentedon Sep 22, 2016
Line numbers reported by the doctest module are wrong when a function does not include a docstring. With the attached example file, running
produces
whereas if one uncomments the docstrings of a and c the output is
This bug is due to this line in doctest:
The documentation of _find_lineno says this:
This assumption is violated by the call listed above, because of the exclude_empty=False parameter to DocTestFinder().
I guess lineno should just be None for all methods that do not have a docstring?
ambv commentedon May 19, 2022
This is now fixed.
ambv commentedon May 19, 2022
Thanks, Clément!