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

Wes McKinney wesmckinn at gmail.com
Mon Oct 24 23:03:56 CEST 2011


On Mon, Oct 24, 2011 at 4:09 PM, Dag Sverre Seljebotn
<d.s.seljebotn at astro.uio.no> wrote:
> 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
> _______________________________________________
> cython-devel mailing list
> cython-devel at python.org
> http://mail.python.org/mailman/listinfo/cython-devel
>

I need pandas to build off of a released version of Cython so I am
just going to have to work around this by doing taking views of
boolean arrays as np.uint8. I wouldn't mind dropping Python 2.5
support altogether but some people might not like that.


More information about the cython-devel mailing list