Issue 769569: weird/buggy inspect.getsource behavious (original) (raw)
Using python 2.2.2 on a mandrake 9.1 with the inspect.py of python 2.2.3 (correction for lambda keyword), I run the following code """ import inspect
a = [ None, lambda x: x>1 and x<0, None] print "Ok",inspect.getsource(a[1])
if 1: a = [ None, lambda x: x>1 and x<0, None]
print "Ko",inspect.getsource(a[1])
"""
Two weird behaviours occurs
The line "print "Ok",inspect.getsource(a[1])" prints Ok lambda x: x>1 and x<0, None] It prints a superfluous line.
The line "print "Ko",inspect.getsource(a[1])" raises an exception Ko Traceback (most recent call last): File "bug-inspect.py", line 13, in ? print "Ko",inspect.getsource(a[1]) File "/usr/lib/python2.2/inspect.py", line 523, in getsource lines, lnum = getsourcelines(object) File "/usr/lib/python2.2/inspect.py", line 515, in getsourcelines else: return getblock(lines[lnum:]), lnum + 1 File "/usr/lib/python2.2/inspect.py", line 498, in getblock tokenize.tokenize(ListReader(lines).readline, BlockFinder().tokeneater) File "/usr/lib/python2.2/tokenize.py", line 138, in tokenize tokenize_loop(readline, tokeneater) File "/usr/lib/python2.2/tokenize.py", line 144, in tokenize_loop for token_info in generate_tokens(readline): File "/usr/lib/python2.2/tokenize.py", line 218, in generate_tokens raise TokenError, ("EOF in multi-line statement", (lnum, 0)) tokenize.TokenError: ('EOF in multi-line statement', (7, 0))