从 Cython 调用 PyArray_SearchSorted——3 或 4 个参数?
Calling PyArray_SearchSorted from Cython -- 3 or 4 arguments?
我正在尝试使用来自 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 NumPy and as defined 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.6 和 1.7 之间,在这个提交中:
我相信这绝对是一个错误,但不幸的是,即使有很高的勤奋标准,这种特殊的错误也很容易潜入。需要像严格的 ABI 一致性测试套件之类的东西才能始终如一地捕获这些。
我正在尝试使用来自 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 NumPy and as defined 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.6 和 1.7 之间,在这个提交中:
我相信这绝对是一个错误,但不幸的是,即使有很高的勤奋标准,这种特殊的错误也很容易潜入。需要像严格的 ABI 一致性测试套件之类的东西才能始终如一地捕获这些。