[Cython] Some bugs found while testing cython on django

Stefan Behnel stefan_ml at behnel.de
Mon Jun 20 09:14:39 CEST 2011


Vitja Makarov, 19.06.2011 21:37:
> Trying to compile django I've found some problems:
>
> 1. It seems that cython currently doesn't support tuples inside args definition:
>
> def foo((a, b), c):
>
> Currently this gives missing argument name and crash inside
> CreateControlFlow graph
>
> cython -X binding=True django/contrib/gis/forms/fields.py -o
> django/contrib/gis/forms/fields.c

It may be valid Py2-only syntax, but I consider its usage a bug in Django.


> 2. Concatenating unicode and str isn't supported:
>
> I guess that this is mostly django problem
>
> Error compiling Cython file:
> ------------------------------------------------------------
> ...
>      default_error_messages = {
>          'no_geom' : _(u'No geometry value provided.'),
>          'invalid_geom' : _(u'Invalid geometry value.'),
>          'invalid_geom_type' : _(u'Invalid geometry type.'),
>          'transform_error' : _(u'An error occurred when transforming
> the geometry '
>                                'to the SRID of the geometry form field.'),
>                               ^
> ------------------------------------------------------------
>
> django/contrib/gis/forms/fields.py:21:30: Cannot mix string literals
> of different types, expected u'', got ''

That's a bug in Django. Worth submitting a patch to their bug tracker. It 
works in this case, but it's not what they want in their code:

     >>> u'abc\u1234'
     u'abc\u1234'
     >>> u'abc' '\u1234'
     u'abc\\u1234'


> 3.Reraise not inside except clause, here is simple example
>
> def foo():
>      print 'catched'
>      raise
> try:
>      raise IndexError
> except IndexError:
>      foo()

It would be possible to support this, given that we are compatible with 
CPython regarding the place where exceptions are stored while being 
handled. Despite of what I initially thought, this is a feature of both Py2 
and Py3, even though I expect it to be rarely used and somewhat error prone.

Stefan


More information about the cython-devel mailing list