gh-117692: Fix AttributeError in DocTestFinder on wrapped builtin_or_method (#117699)

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
This commit is contained in:
Nikita Sobolev 2024-04-10 12:52:47 +03:00 • committed by GitHub
parent f90ff03672
commit 4bb7d121bc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 24 additions and 1 deletions

View file

@ -1140,7 +1140,14 @@ class DocTestFinder:
obj = obj.fget
if inspect.isfunction(obj) and getattr(obj, '__doc__', None):
# We don't use `docstring` var here, because `obj` can be changed.
obj = inspect.unwrap(obj).__code__
obj = inspect.unwrap(obj)
try:
obj = obj.__code__
except AttributeError:
# Functions implemented in C don't necessarily
# have a __code__ attribute.
# If there's no code, there's no lineno
return None
if inspect.istraceback(obj): obj = obj.tb_frame
if inspect.isframe(obj): obj = obj.f_code
if inspect.iscode(obj):