[Cython] Buffer interface to boolean arrays with cast=True on Python 2.5 failing

Dag Sverre Seljebotn d.s.seljebotn at astro.uio.no
Mon Oct 24 22:09:47 CEST 2011


On 10/24/2011 09:40 PM, Wes McKinney wrote:
> On Mon, Oct 24, 2011 at 3:37 PM, Dag Sverre Seljebotn
> <d.s.seljebotn at astro.uio.no>  wrote:
>> On 10/24/2011 09:26 PM, Wes McKinney wrote:
>>>
>>> I've been using
>>>
>>> ndarray[uint8_t, cast=True] bool_arr
>>>
>>> to work with dtype=bool arrays in Cython lately. When testing using
>>> Python 2.5 / NumPy 1.6.1 on Windows, I'm getting "unknown dtype code
>>> in numpy.pxd (0)". Everything works fine with Python 2.6/2.7 and NumPy
>>> 1.6.1. This is with Cython 0.15.1.
>>>
>>> Any advice or do I have to (very unhappily) work around this?
>>
>> Is this a recent bug in Cython? Try to bisect the the Cython release (and if
>> it turns out to be Cython, possible commit).
>>
>> Dag Sverre
>> _______________________________________________
>> cython-devel mailing list
>> cython-devel at python.org
>> http://mail.python.org/mailman/listinfo/cython-devel
>>
>
> I'll check the HEAD revision and bisect if I can, don't have a lot of
> time-- it's just strange that it's Python 2.5 only.

So the difference between Python 2.5 and 2.6 is that in 2.5 the 
__getbuffer__ in numpy.pxd will be called, whereas in Python 2.6, NumPy 
is able to do the job itself. (PEP 3118)

Which means...that there's likely a bug in __getbuffer__ in numpy.pxd. 
You can debug

If you do have time, that's the place to start inserting print 
statements etc. to debug this.

It's difficult to say more without a copy&paste directly from your terminal.

Dag Sverre


More information about the cython-devel mailing list