[Cython] redefining PyIndex_Check
markflorisson88 at gmail.com
Sun Nov 11 15:51:48 CET 2012
On 11 November 2012 14:09, mark florisson <markflorisson88 at gmail.com> wrote:
> On 11 November 2012 13:04, Stefan Behnel <stefan_ml at behnel.de> wrote:
>> mark florisson, 11.11.2012 12:26:
>>> On 11 November 2012 08:12, Stefan Behnel wrote:
>>>> instead of overriding an existing definition of "PyIndex_Check" like this:
>>>> +#if PY_VERSION_HEX < 0x02050000
>>>> + /* NumPy headers define PyIndex_Check incorrectly */
>>>> + #undef PyIndex_Check
>>>> + #define PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) &&
>>>> which may or may not have come from NumPy, shouldn't we be using our own
>>>> definition of a "__Pyx_PyIndex_Check" in our code instead?
>>> I thought about that, but then people do expect PyIndex_Check to work
>>> when they cimport it from cpython. But this fix doesn't really address
>>> that either, it just works if you use memoryviews (it's more of a
>>> quick and dirty hack, this fix needs to be associated with the cimport
>>> of numpy).
>>> Maybe we should use __Pyx_PyIndex_Check internally, and define
>>> PyIndex_Check like we do now for user convenience, and let numpy break
>> +1 for all three points. Cython's own code should always be safe, users
>> won't normally use that function anyway and NumPy would only break their
>> code in Py2.4, which is sufficiently rarely used.
> Great, I'm on it. On second consideration, it's better to not break it
> at all, and just define it to __Pyx_PyIndex_Check in the pxd.
>> BTW, has anyone brought this to the attention of the NumPy developers yet?
>> They might want to fix their definition.
> I haven't yet, maybe I'll just do a PR for such a trivial fix --
> although maybe they have a reason for their definition.
Great, Pauli fixed it a while back: https://github.com/numpy/numpy/pull/307
>> cython-devel mailing list
>> cython-devel at python.org
More information about the cython-devel