[Cython] Cython compiler directives: c_string_encoding
Hannes Röst
hroest_nospam2333 at quantentunnel.de
Wed Jul 17 14:45:28 CEST 2013
Dear mailing list
I am trying to compile a program with Cython using the compiler directives and
I am running into some trouble. Specifically, I am trying to port a Cython 0.18
program to Cython 0.19 and due to changes how char * and Python str are
handled, I need to set the c_string_encoding directive. Unfortunately, this
fails for my project and also in the following testcase when I try to do it
locally:
cimport cython
cdef class TestClass:
def foo(self):
with cython.c_string_encoding("ascii"):
return
If I replace the directive with "with cython.boundscheck(True):" the program
compiles fine. Also adding "#cython: c_string_encoding=ascii" as the first line
of the file works fine. However, adding a decorator
'@cython.c_string_encoding("ascii")' to foo also crashes the compiler. Finally,
compiling with "-X c_string_encoding=ascii" also works.
I was following the documentation provided here
http://docs.cython.org/src/reference/compilation.html . The error message that
I get is attached at the end. Did I do something wrong or can somebody point me
in the right direction?
Best regards
Hannes Roest
Error message:
inimalcase.pyx:6:13: Compiler crash in InterpretCompilerDirectives
ModuleNode.body = StatListNode(minimalcase.pyx:1:0)
StatListNode.stats[1] = StatListNode(minimalcase.pyx:3:5)
StatListNode.stats[0] = CClassDefNode(minimalcase.pyx:3:5,
as_name = u'TestClass',
class_name = u'TestClass',
module_name = '',
visibility = 'private')
CClassDefNode.body = StatListNode(minimalcase.pyx:5:4)
StatListNode.stats[0] = DefNode(minimalcase.pyx:5:4,
modifiers = [...]/0,
name = u'foo',
num_required_args = 1,
py_wrapper_required = True,
reqd_kw_flags_cname = '0')
DefNode.body = StatListNode(minimalcase.pyx:6:13)
StatListNode.stats[0] = WithStatNode(minimalcase.pyx:6:13)
Compiler crash traceback from this point on:
File "/home/hr/lib/Cython-0.19.1/Cython/Compiler/Visitor.py", line
168, in _visit
return handler_method(obj)
File "/home/hr/lib/Cython-0.19.1/Cython/Compiler/ParseTreeTransforms.py",
line 1002, in visit_WithStatNode
for directive in self.try_to_parse_directives(node.manager) or []:
File "/home/hr/lib/Cython-0.19.1/Cython/Compiler/ParseTreeTransforms.py",
line 861, in try_to_parse_directives
directives.append(self.try_to_parse_directive(optname, args, kwds,
node.function.pos))
File "/home/hr/lib/Cython-0.19.1/Cython/Compiler/ParseTreeTransforms.py",
line 913, in try_to_parse_directive
assert False
AssertionError:
More information about the cython-devel
mailing list