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 <di...@microsoft.com> wrote: >> 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/) _______________________________________________ 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/archive%40mail-archive.com