I usually append some extra newlines before passing a string to
compile(). That's the usual work-around. There's probably a subtle bug
in the tokenizer when reading from a string -- if you find it, please
upload a patch to the tracker!
--Guido
On Fri, May 29, 2009 at 5:52 PM, Dino Viehland
The 'single' mode, which is used for the REPL, is a bit different than 'exec', which is used for modules. This difference lets you insert "blank" lines of whitespace into a function definition without exiting the definition. Ending with a truly empty line does not cause the IndentationError, so the REPL can successfully compile the code, signaling that the user has finished typing the function.
Sorry, I probably should have mentioned this but it repros w/ compile(..., "exec") as well:
code = "def Foo():\n\n pass\n\n " compile(code, 'foo', 'exec') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "foo", line 5
IndentationError: unindent does not match any outer indentation level
It also repros when passing in PyCF_DONT_IMPLY_DEDENT for flags under single and exec. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/guido%40python.org
-- --Guido van Rossum (home page: http://www.python.org/~guido/)