[Cython] BUG?: __init__.py file messing up .pxd detection!!!

Brian Granger ellisonbg.net at gmail.com
Thu Jun 19 03:11:18 CEST 2008


HI,

I am running cython-devel and have defined a simple extension type.  I
am finding that:

IF:  there is a __init__.py file in the same directory as my pxd and pyx file

THEN: the pxd file is not processed and my extension type won't have
any attributes defined in the C code

This reproduces my problem:

$ cat shrubbing.pxd
cdef class Shrubbery:
    cdef int width
    cdef int length

$ cat shrubbing.pyx
cdef class Shrubbery:
    def __new__(self, int w, int l):
        self.width = w
        self.length = l

$ ls
__init__.py	shrubbing.pxd	shrubbing.pyx
$ cython shrubbing.pyx

This is what shrubbing.c has for the extension type struct:

struct __pyx_obj_4temp_9shrubbing_Shrubbery {
  PyObject_HEAD
};

Notice, there are no attributes!!!!

But not if I do:

$ rm __init__.py
$ ls
shrubbing.c	shrubbing.pxd	shrubbing.pyx
$ cython shrubbing.pyx

I get the attributes in the extension type:

struct __pyx_obj_9shrubbing_Shrubbery {
  PyObject_HEAD
  int width;
  int length;
};

I don't see how I could be doing something wrong.  I swear this code
was working just the other day (this is not really my code, but it
does the same thing).  The crazy thing is that I know sage uses
__init__.py files in directories that have pxd and pyx files just like
I am doing.

Brian


More information about the Cython-dev mailing list