I've noticed an odd behavior with compile() and code that does not contain a trailing newline: if the last line is a comment inside of any block, a syntax error is thrown, but if the last line is a non- comment Python statement, there is no error. Here's an example (using 2.5.1 on OS X)

>>> txt = """
... def foo():
...   print 'bar' """
>>> compcode = compile(t.strip(), "", "exec")
>>> compcode
<code object <module> at 0x79608, file "", line 2>

>>> txt += "  # Comment on last line"
>>> compcode = compile(txt.strip(), "", "exec")
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "", line 4
   # Comment on last line
                       ^
SyntaxError: invalid syntax
>>> compcode = compile(txt.strip() + "\n", "", "exec")
>>> compcode
<code object <module> at 0x79a40, file "", line 2>

Obviously the easy workaround is to add a newline and all is well, so this isn't a show-stopper, but is this a bug?

-- Ed Leafe



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to