Tim Joseph Dumol wrote:
Hello,
On Tue, Jan 26, 2010 at 6:07 AM, msafiri <reich...@ifd.mavt.ethz.ch
<mailto:reich...@ifd.mavt.ethz.ch>> wrote:
Hello everyone,
ticket #7207 deals with "from __future__" imports resulting in syntax
errors in the SAGE notebook. The same is true when one tries to use
cython from the command line e.g. via cython_create_local_so(). This
is because the pyx_preparse() function in cython.py adds include
statements to the beginning of the source code.
This is probably not the correct platform to discuss bug-fixes, but
this short piece of code solves the aforementioned problem (at least
for my needs):
# ------------ in cython.py:
def parse_future_statements(s):
"""Looks for 'from __future__ import *' statements and moves them
to the
beginning of the string.
"""
i = s.find('from __future__')
if i != -1:
j = s.find('\n', i)
s = s[i:j+1] + s[0:i] + s[j+1:]
return s
# ---------------------------------
The function "pyx_preparse()" in cython.py needs to call the above
function just before it returns:
s = parse_future_statements(s)
Best,
Johannes
PS: Also, I've noticed that the source files to be "cythoned" really
need to have .spxy extention. When using a .pyx file instead, the
function "pyx_preparse()" will append the include directives in that
very file (also, regardless of whether they have already been appended
in a previous run).
--
To post to this group, send an email to
sage-devel@googlegroups.com <mailto:sage-devel@googlegroups.com>
To unsubscribe from this group, send an email to
sage-devel+unsubscr...@googlegroups.com
<mailto:sage-devel%2bunsubscr...@googlegroups.com>
For more options, visit this group at
http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org
My original patch was something like that, but William Stein pointed
out that it is easily tricked:
"""
from __future__ import division"""
[...]
will activate the code as well, which will result in a syntax error. I
used the AST parser to make sure no such thing happens, but I'm
certain it is possible to just use a less naive search.
I think a case can be made for *always* enabling the __future__ imports
that Cython provides, i.e. just add it to the pyx_preparse prefix
string. After all, really long-term (Python 3-land) they will be the
defaults anyway, and with Sage code true division already is the default
behaviour.
Or will that break too many worksheets?
Dag Sverre
--
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org