[Cython] Bug report: compiler traceback instead of error message

Robert Bradshaw robertwb at gmail.com
Tue Jul 9 22:23:27 CEST 2013


Yes, we should be giving an error message here rather than crashing;
thanks for the report.

On Tue, Jul 9, 2013 at 7:36 AM, John Benediktsson <mrjbq7 at gmail.com> wrote:
> Hi,
>
> I had some trouble debugging a traceback that I got from Cython, which ended
> up being a simple typo in a .pyx file.  Below is a reduced example of this
> problem.
>
> If you have a foo.pxd file (specifying a variable "bar"):
>
>     $ cat foo.pxd
>     cdef class Tree:
>         cpdef build(self, int bar=*)
>
> And a foo.pyx file (accidentally calling the variable "baz"):
>
>     $ cat foo.pyx
>     cdef class Tree:
>         cpdef build(self, int baz=None):
>             print baz
>
> You get this nasty traceback when you try to cython it, which makes you
> think there is a bug in Cython instead of a bug in your code:
>
> $ cython foo.pyx
> Traceback (most recent call last):
>   File "/usr/local/bin/cython", line 9, in <module>
>     load_entry_point('Cython==0.19.1', 'console_scripts', 'cython')()
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/Main.py",
> line 618, in setuptools_main
>     return main(command_line = 1)
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/Main.py",
> line 635, in main
>     result = compile(sources, options)
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/Main.py",
> line 610, in compile
>     return compile_multiple(source, options)
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/Main.py",
> line 579, in compile_multiple
>     result = run_pipeline(source, options, context=context)
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/Main.py",
> line 425, in run_pipeline
>     err, enddata = Pipeline.run_pipeline(pipeline, source)
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/Pipeline.py",
> line 322, in run_pipeline
>     data = phase(data)
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/Pipeline.py",
> line 51, in generate_pyx_code_stage
>     module_node.process_implementation(options, result)
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/ModuleNode.py",
> line 111, in process_implementation
>     self.generate_c_code(env, options, result)
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/ModuleNode.py",
> line 342, in generate_c_code
>     self.body.generate_function_definitions(env, code)
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/Nodes.py",
> line 393, in generate_function_definitions
>     stat.generate_function_definitions(env, code)
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/Nodes.py",
> line 4267, in generate_function_definitions
>     self.body.generate_function_definitions(self.scope, code)
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/Nodes.py",
> line 393, in generate_function_definitions
>     stat.generate_function_definitions(env, code)
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/Nodes.py",
> line 1704, in generate_function_definitions
>     self.generate_argument_parsing_code(env, code)
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/Nodes.py",
> line 2297, in generate_argument_parsing_code
>     self.type.opt_arg_cname(declarator.name)))
>   File
> "/Library/Python/2.7/site-packages/Cython-0.19.1-py2.7-macosx-10.8-intel.egg/Cython/Compiler/PyrexTypes.py",
> line 2684, in opt_arg_cname
>     return self.op_arg_struct.base_type.scope.lookup(arg_name).cname
> AttributeError: 'NoneType' object has no attribute 'cname'
>
> Thanks,
> John.
>
> _______________________________________________
> cython-devel mailing list
> cython-devel at python.org
> http://mail.python.org/mailman/listinfo/cython-devel
>


More information about the cython-devel mailing list