[Cython] redefining PyIndex_Check

mark florisson markflorisson88 at gmail.com
Sun Nov 11 15:09:43 CET 2012

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.

> 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