By experimenting with Pyrex, i've discovered that foreward declarations must mention type ineritance, as following : cdef class A cdef class B(A) cdef class A: pass cdef class B(A): pass I think this should be mentioned in the documentation (in "Forward-declaring extension types" in chapter "Extension types") Jiba