Hi Greg,

Greg Ewing, 25.11.2009 21:04:
> The code in question works in Pyrex because the type of the
> default argument is checked dynamically at run time, just
> like in any other assignment. Cython appears to be making an
> excessively static determination of the type here.

Ah, right, that's due to the str/bytes/unicode separation in 0.12. Cython
now generates errors when you try to assign one to the other. I think that
strikes here, too, as the OP's code was trying to assign one of them to an
unrelated extension type.

This makes the behaviour appear more like a side-effect than a well
designed feature.


> Having full builtin declarations for all the standard types
> would be useful, but as long as external type definitions are
> allowed at all, you can't eliminate the possibility that the
> user will declare a type in a way that doesn't agree with
> reality. At some point you just have to trust the programmer,
> lest you cripple them unnecessarily.

This is sort of a grey area. Cython aims to optimise access to builtin
types, so I find it a good thing to generate errors when users try to
redefine them. Obviously, this only makes sense once Cython actually makes
the redeclarations completely redundant, which we haven't achieved yet.

We currently generate warnings when users redefine builtin types. I think
that's ok for the time being.

Stefan
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to