when a syntax error is generated in py_compile.compile(), the wrong arguments are passed to the new PyCompileError exception which in turn passes the wrong args to traceback.format_exception_only() producing the wrong output. this was fixed in the py3k branch (Revision 56901) but is still broken in 2.6 and 2.7 the attached patch has the same fix but applied to the trunk. here's a simple test case.. f = open('broken.py','w') f.write("1 = a #<-- obvious syntax err\n") f.close() import py_compile py_compile.compile('broken.py')
Better late than never. Be nice if someone would contribute a test, but I'm not going let that hold things up for such a simple patch that is already in default with no test.