Skip to content
This repository

print(…, sep=…) raises SyntaxError #777

Closed
lebigot opened this Issue September 08, 2011 · 3 comments

2 participants

Eric O. LEBIGOT (EOL) Thomas Kluyver
Eric O. LEBIGOT (EOL)

With IPython 0.11 (Mac OS X Lion, installed via Fink) and Python 2.7, the print() function raises a strange SyntaxError:

In [2]: from __future__ import print_function
In [3]: 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 [6]: print?
Type:       builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form:<built-in function print>
Namespace:  Python builtin
Docstring:
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.

Thomas Kluyver
Collaborator

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.

Thomas Kluyver takluyver referenced this issue from a commit September 12, 2011
Commit has since been removed from the repository and is no longer available.
Thomas Kluyver
Collaborator

See PR #784. Sorry I didn't get round to it on Thursday - it's been a busy few days.

Thomas Kluyver takluyver closed this in e783b1c September 12, 2011
Eric O. LEBIGOT (EOL)

Thanks, that's great!

Brian E. Granger ellisonbg referenced this issue from a commit January 10, 2012
Commit has since been removed from the repository and is no longer available.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.