Dag Sverre Seljebotn wrote:
> Robert Bradshaw wrote:
>> On Jun 23, 2009, at 1:40 AM, Jon Olav Vik wrote:
>>
>>> I have a Cython extension class that wraps the N_Vector type [1]  
>>> from the
>>> Sundials solver suite for differential equations. (Thanks to Dag  
>>> Sverre
>>> Seljebotn for guidance [2].) However, I have problems using the  
>>> class outside
>>> of the module where it was defined (cynvector.pyx).
>>>
>>> The following couple of trivial operations work when included at  
>>> the end of
>>> cynvector.pyx:
>>>
>>> cdef CythonNVector v = CythonNVector(2) # allocates empty N_Vector  
>>> of length 2
>>> cdef N_Vector p = v.nvector # alias to an attribute of the  
>>> CythonNVector
>>>
>>> (I've learned that both v and p need to have their type specified by
>>> "cdef ...", otherwise they default to generic Python objects and  
>>> the "nvector"
>>> attribute isn't recognized.)
>>>
>>> However, the same statements fail if I move them to another file, say
>>> test_cynvector.pyx:
>>>
>>> from sundials cimport * # sundials.pxd contains type declaration  
>>> for N_Vector
>>> from cynvector import *
>>> cdef CythonNVector v = CythonNVector(2) # allocates empty N_Vector  
>>> of length 2
>>> cdef N_Vector p = v.nvector # alias to an attribute of the  
>>> CythonNVector
>>>
>>> fails with:
>>>
>>> cdef CythonNVector v = CythonNVector(2)
>>>     ^
>>> 'CythonNVector' is not a type identifier
>>>
>>> Why isn't type CythonNVector recognized outside of cynvector.pyx? A  
>>> similar
>>> error results if I try "from cynvector cimport CythonNVector"; then  
>>> I get "Name
>>> 'CythonNVector' not declared in module 'cynvector'".
>> What does your cynvector.pxd look like? You probably need to declare  
>> CythonNVector there so other modules can cimport it.
> 
> Actually there probably is no -- it says import, not cimport.
> 
> So you need a cynvector.pxd as well, and cimport in in addition to the 
> normal import.
> 
> (There's a wishlist item for automatically deducing this from pyx files, 
> but it isn't there yet.)
> 
> http://docs.cython.org/docs/sharing_declarations.html
> 

BTW as reported the necesarry pxd files in my tutorial examples are 
missing from the upload and I haven't got around to uploading them yet; 
in case you looked at the tutorial for inspiration and got confused by that.

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

Reply via email to