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
1. The line "print "Ok",inspect.getsource(a[1])" prints
Ok lambda x: x>1 and x<0,
None]
It prints a superfluous line.
2. 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))
|