I wrote miscellaneous interactive interpreters and I fall on this. In Python 2.7 (understand Python > 2.6), a source code can be compiled with "native" '\r\n' as eol.
In Python 3.1, it does not seem to be the case. (Python 3.2.a/b not checked). Bug, regression, deliberate choice? >>> sys.version 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] >>> compile('if True:\n print 999\n', '<in>', 'exec') <code object <module> at 02858DA0, file "<in>", line 1> >>> compile('if True:\r\n print 999\r\n', '<in>', 'exec') <code object <module> at 02858E30, file "<in>", line 1> >>> exec(compile('if True:\r\n print 999\r\n', '<in>', 'exec')) 999 >>> sys.version '3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)]' compile('if True:\n print(999)\n', '<in>', 'exec') <code object <module> at 0x01FE5458, file "<in>", line 2> >>> exec(compile('if True:\n print(999)\n', '<in>', 'exec')) 999 >>> # this fails >>> compile('if True:\r\n print(999)\r\n', '<in>', 'exec') Traceback (most recent call last): File "<qsi last command>", line 1, in <module> File "<in>", line 1 if True: ^ SyntaxError: invalid syntax -- http://mail.python.org/mailman/listinfo/python-list