[Cython] redefining PyIndex_Check

mark florisson 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) &&
>>>> !PyComplex_Check(o))
>>>> +#endif
>>>> """
>>>>
>>>> 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
>>> it?
>>
>> +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

>> Stefan
>>
>> _______________________________________________
>> cython-devel mailing list
>> cython-devel at python.org
>> http://mail.python.org/mailman/listinfo/cython-devel


More information about the cython-devel mailing list