从Cython调用PyArray_SearchSorted - 3或4个参数?

时间:2015-01-28 03:36:35

标签: numpy cython

我尝试使用来自Cython的NumPy C API来使用PyArray_SearchSorted

当调用PyArray_SearchSorted(values, point, NPY_SEARCHLEFT)时,我收到GCC错误:error: too few arguments to function call, expected 4, have 3

另一方面,当我将其称为PyArray_SearchSorted(values, point, NPY_SEARCHLEFT, NULL)时,Cython会提供错误:Call with wrong number of arguments (expected 3, got 4)

仔细观察,功能签名currently defined in NumPydefined in Cython's includes之间似乎存在差异。

我知道searchsorted的sorter参数只出现在NumPy 1.7.0中,但不是向后兼容性与NumPy C API的保证之一吗?或者这只是一个Cython错误?

如果重要,我在OS X上使用来自conda的Cython 0.21.1,NumPy 1.9.1和Python 2.7。

1 个答案:

答案 0 :(得分:3)

在此提交中,版本1.6和1.7之间发生了此更改:

https://github.com/numpy/numpy/commit/313fe46046a7192cbdba2e679a104777301bc7cf#diff-70664f05e46e0882b0ebe8914bea85b4L1611

我相信这绝对是一个错误,但遗憾的是,即使是高标准的勤奋,这种特殊的错误也很容易陷入困境。需要像严格的ABI一致性测试套件那样一致地捕捉这些。