Python Cython拒绝融合数据类型中的float32

Python Cython拒绝融合数据类型中的float32,python,c,numpy,cython,Python,C,Numpy,Cython,我正在尝试编写一个Cython函数,该函数能够使用包含float32的融合数据类型。但是,除非明确指定,否则它将拒绝输入。为什么? 例如: cimport numpy as cnp ctypedef fused floatdtype: cnp.npy_float32 @cy.boundscheck(False) @cy.wraparound(False) cpdef void test(floatdtype smth): print(smth) 然后在Python中,下面会

我正在尝试编写一个Cython函数,该函数能够使用包含float32的融合数据类型。但是,除非明确指定,否则它将拒绝输入。为什么?

例如:

cimport numpy as cnp

ctypedef fused floatdtype:
    cnp.npy_float32

@cy.boundscheck(False)
@cy.wraparound(False)
cpdef void test(floatdtype smth):
    print(smth)
然后在Python中,下面会引发“TypeError:未找到匹配的签名”错误:

但是,这很好:

cimport numpy as cnp

@cy.boundscheck(False)
@cy.wraparound(False)
cpdef void test( cnp.npy_float32 smth):
    print(smth)

我认为这可能是常数被解释为双精度,它寻找一个精确的匹配。fused类型的一个更典型的用法是同时定义float和double的类型。我认为可能是常量被解释为double,它寻找一个精确的匹配。熔合类型的一个更典型的用法是同时定义了float和double的类型。
cimport numpy as cnp

@cy.boundscheck(False)
@cy.wraparound(False)
cpdef void test( cnp.npy_float32 smth):
    print(smth)