With IPython 0.11 (Mac OS X Lion, installed via Fink) and Python 2.7, the print() function raises a strange SyntaxError:
In : from __future__ import print_function
In : print("Helloe", "lkj", sep="lkj")
File "<ipython-input-3-ff000ce1a53b>", line 1
print("Helloe", "lkj", sep="lkj")
SyntaxError: invalid syntax
The name print seems to be correctly defined:
In : print?
Base Class: <type 'builtin_function_or_method'>
String Form:<built-in function print>
Namespace: Python builtin
print(value, ..., sep=' ', end='\n', file=sys.stdout)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
I'm not sure whether this matters, but the failure happens with both autocall on and off.
Hmm, I think I can see where this is coming from. We parse the code with ast.parse before we compile it. __future__ imports from previous cells are stored as flags to pass to the compiler, but they're not passed to ast.parse, so it is still parsing print as a statement.
I think I can see a way round it - I'll hopefully have a go later today.
See PR #784. Sorry I didn't get round to it on Thursday - it's been a busy few days.
Parse user code to AST using compiler flags.
Thanks, that's great!