gh-122981: Fix inspect.getsource() for generated classes with Python base classes (GH-123001)

Look up __firstlineno__ only in the class' dict, without searching in
base classes.
This commit is contained in:
Serhiy Storchaka 2024-08-20 20:10:15 +03:00 committed by GitHub
parent bb1d30336e
commit f88c14d412
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 66 additions and 4 deletions

View file

@ -970,10 +970,10 @@ def findsource(object):
if isclass(object):
try:
firstlineno = object.__firstlineno__
except AttributeError:
firstlineno = vars(object)['__firstlineno__']
except (TypeError, KeyError):
raise OSError('source code not available')
return lines, object.__firstlineno__ - 1
return lines, firstlineno - 1
if ismethod(object):
object = object.__func__