[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