Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Lib/doctest.py
Original file line number Diff line number Diff line change
Expand Up @@ -1140,6 +1140,8 @@ def _find_lineno(self, obj, source_lines):
obj = obj.fget
if inspect.isfunction(obj) and getattr(obj, '__doc__', None):
# We don't use `docstring` var here, because `obj` can be changed.
while hasattr(obj, "__wrapped__"):
obj = obj.__wrapped__
Comment thread
AlexWaygood marked this conversation as resolved.
Outdated
obj = obj.__code__
if inspect.istraceback(obj): obj = obj.tb_frame
if inspect.isframe(obj): obj = obj.f_code
Expand Down
10 changes: 10 additions & 0 deletions Lib/test/test_doctest/_support.py
Comment thread
AlexWaygood marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# This module is used in `doctest_lineno.py`.
import functools


def decorator(f):
@functools.wraps(f)
def inner():
return f()

return inner
9 changes: 9 additions & 0 deletions Lib/test/test_doctest/doctest_lineno.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,12 @@ def property_with_doctest(self):

# https://github.com/python/cpython/issues/99433
str_wrapper = object().__str__


# https://github.com/python/cpython/issues/115392
from test.test_doctest._support import decorator

@decorator
@decorator
def func_with_docstring_wrapped():
"""Some unrelated info."""
1 change: 1 addition & 0 deletions Lib/test/test_doctest/test_doctest.py
Original file line number Diff line number Diff line change
Expand Up @@ -685,6 +685,7 @@ def basics(): r"""
None test.test_doctest.doctest_lineno.MethodWrapper.method_without_docstring
61 test.test_doctest.doctest_lineno.MethodWrapper.property_with_doctest
4 test.test_doctest.doctest_lineno.func_with_docstring
77 test.test_doctest.doctest_lineno.func_with_docstring_wrapped
12 test.test_doctest.doctest_lineno.func_with_doctest
None test.test_doctest.doctest_lineno.func_without_docstring

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Fix a bug in :mod:`doctest` where incorrect line numbers would be
reported for decorated functions.