[Numpy-discussion] __array__struct__: about using PyCapsule instead of PyCObject for Python 2.7

Lisandro Dalcin dalcinl at gmail.com
Wed Jun 30 12:57:58 EDT 2010


On 30 June 2010 02:48, Charles R Harris <charlesr.harris at gmail.com> wrote:
>
>
> On Tue, Jun 29, 2010 at 8:21 PM, Lisandro Dalcin <dalcinl at gmail.com> wrote:
>>
>> Do we really need this for NumPy 2? What about using the old PyCObject
>> for all Py 2.x versions? If this is not done, perhaps NumPy 2 on top
>> of Py 2.x should still accept the __array_struct__ being a PyCObject?
>>
>> As reference, Cython still uses PyCObject for Py<3.1
>> http://hg.cython.org/cython-devel/rev/8a58f1544bd8#l1.33 .
>>
>
> Blame the Python 2.7 developers, those suckers deprecated the PyCObject.
>

Oh! Sorry! Now I realize that!

> Grrr... I didn't see the point, myself, I'm tempted to deprecate 2.7 just to
> get even. There are some routines in the numpy/core/src includes that you
> might want to copy, they will allow you to use a common interface for
> PyCObject and PyCapsule if you need to do that.
>

I've already fixed my code for PyCapsule. What's not clear to me is
how to build (i.e, use the old cobject or the new capsules)
__array_struct__ across NumPy and Python versions combinations. Will
NumPy 1.x series ever support Python 2.7? In such case, should I use
cobjects or capsules?

Still, I think NumPy should still accept cobjects from extension types
on a Python 2.x runtime, the fix for this support is trival: accept
cobjects in NpyCapsule_Check() and NpyCapsule_AsVoidPtr() for
PY_MAJOR_VERSION==2.

People can still live with PendingDeprecationWarning (remember, they
are shown if explicitly requested with -W), and such warning is
triggered when cobjects are created, not when they are accessed.

-- 
Lisandro Dalcin
---------------
CIMEC (INTEC/CONICET-UNL)
Predio CONICET-Santa Fe
Colectora RN 168 Km 472, Paraje El Pozo
Tel: +54-342-4511594 (ext 1011)
Tel/Fax: +54-342-4511169



More information about the NumPy-Discussion mailing list