Michael Bejda <mbe...@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 <rep...@bugs.python.org> <https://bugs.python.org/issue37166> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com