[issue37166] inspect.findsource doesn't handle shortened files gracefully
Michael Bejda
report at bugs.python.org
Fri Jun 28 13:33:33 EDT 2019
Michael Bejda <mbejda at gmail.com> added the comment:
I do not believe it is specific to the way we package things:
$ cat a.py:
import inspect
def foo(): pass
inspect.getsource(foo)
$ python3 -m compileall -b a.py
$ black a.py # to remove the empty lines
$ python3 a.pyc # Index error
Traceback (most recent call last):
File "a.py", line 12, in <module>
File "/usr/local/fbcode/gcc-5-glibc-2.23/lib/python3.6/inspect.py", line 968, in getsource
lines, lnum = getsourcelines(object)
File "/usr/local/fbcode/gcc-5-glibc-2.23/lib/python3.6/inspect.py", line 955, in getsourcelines
lines, lnum = findsource(object)
File "/usr/local/fbcode/gcc-5-glibc-2.23/lib/python3.6/inspect.py", line 828, in findsource
if pat.match(lines[lnum]): break
IndexError: list index out of range
You are correct, the heuristic may not return the correct function. However, if we are, for any reason, unable to detect the source mismatch, it would be better to return 0 line (for the beginning of the module) or raise a SystemError instead of an IndexError (which the user does not expect).
----------
nosy: +mib
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue37166>
_______________________________________
More information about the Python-bugs-list
mailing list