Jon Olav Vik wrote:
> Jon Olav Vik <jono...@...> writes:
>> == cynvector.pxd ==
>> from sundials cimport * # sundials.pxd defines N_Vector
>> cdef class CythonNVector:
>>     cdef N_Vector nvector
>>     cpdef toarray(self)
>> == cynvector.pyx ==
> [...]
>> cdef class CythonNVector:
>>     cdef N_Vector nvector # <-- ERROR
> [...]
> 
> Gotcha: When I copied declarations from cynvector.pyx to cynvector.pxd, I 
> should have removed the original "cdef N_Vector nvector" from the .pyx file. 
> As 
> it was, I got a "'nvector' redeclared" error when re-compiling my example. 
> The 
> reason I didn't see it at first is that I compiled cynvector.so just from 
> cynvector.pyx first, before creating cynvector.pxd.
> 
> To summarize: "Formal" declarations of object attributes in filename.pxd are 
> automatically available in filename.pyx and should not be repeated there. 
> (Functions and class definitions _are_ repeated, for implementation.)

This confused me a lot too when I met it the first time. Could we change 
this? That is, I think we should start silently accept/ignore repeating 
the declaration of cdef class fields (and module global variables?) in 
the pyx -- this should be backwards compatible.

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

Reply via email to