Ed Leafe wrote:
On Oct 13, 2008, at 8:35 AM, Fuzzyman wrote:

It is certainly an odd restriction, but the docs for compile [1] do
explicitly state that the input must be newline terminated.


Understood; what I found odd was that if the last non-newline-terminated statement was *not* a comment, no error was thrown.

It kind of lulls one to sleep, then WHAM.

As near as I can tell, 2.5.2 and 3.0c1 require the comment to be on a separate line to raise an exception.

>>> print (compile("def f():\n  pass #haha",'','exec'))
<code object <module> at 00AADAD0, file "", line 1>

>>> print (compile("def f():\n  pass\n#haha",'','exec')) # or
>>> print (compile("def f():\n  pass\n  #haha",'','exec'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "", line 3
    #haha

http://bugs.python.org/issue1479099
'compile' built-in function failures when missing EOL

Ideally, doc should match behavior. Consistent rejection would be better. Other implementations might do this.

I also included this issue in doc issue
As near as I can tell, for 2.5.2 and 3.0c1, the limitation on compile only applies when the last line only contains a comment.

>>> print (compile("def f():\n  pass #haha",'','exec'))
<code object <module> at 00AADAD0, file "", line 1>

>>> print (compile("def f():\n  pass\n#haha",'','exec')) # or
>>> print (compile("def f():\n  pass\n  #haha",'','exec'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "", line 3
    #haha

I would prefer more consistent behavior. I have opened a separate doc issue that includes the documentation of this issue.
http://bugs.python.org/issue4118

Terry Jan Reedy

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

Reply via email to