mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
inspect.getfile: Don't crash on classes without '__module__' attribute #20372
Some classes defined in C may not have the '__module__' attribute, so we now handle this case to avoid having unexepected AttributeError.
This commit is contained in:
parent
32970b8dec
commit
2eed8b7da0
2 changed files with 14 additions and 3 deletions
|
@ -516,9 +516,10 @@ def getfile(object):
|
|||
return object.__file__
|
||||
raise TypeError('{!r} is a built-in module'.format(object))
|
||||
if isclass(object):
|
||||
object = sys.modules.get(object.__module__)
|
||||
if hasattr(object, '__file__'):
|
||||
return object.__file__
|
||||
if hasattr(object, '__module__'):
|
||||
object = sys.modules.get(object.__module__)
|
||||
if hasattr(object, '__file__'):
|
||||
return object.__file__
|
||||
raise TypeError('{!r} is a built-in class'.format(object))
|
||||
if ismethod(object):
|
||||
object = object.__func__
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue