On 30 June 2010 15:08, Charles R Harris <charlesr.har...@gmail.com> wrote: > > > On Wed, Jun 30, 2010 at 10:57 AM, Lisandro Dalcin <dalc...@gmail.com> wrote: >> >> On 30 June 2010 02:48, Charles R Harris <charlesr.har...@gmail.com> wrote: >> > >> >> Oh! Sorry! Now I realize that! >> > > Do I detect a touch of sarcasm? >
No, no sarcasm at all! I just realized that PyCObject were (pending)deprecated in 2.7 ... Anyway. let me say I'm so annoyed and upset as you. >> >> > 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. >> > > That might work. The destructors are different between the two, but if you > just need access to the pointer things should be simpler. That's my point. I'm fine with numpy creating PyCapsule's in 2.7, as long as PyCObject's are still accepted. Given a cobject, NumPy only needs to get the pointer. > If you test it out > and put together a patch I don't see why it shouldn't be applied. If it > works. I'm a bit dubious about changing the check however. > Well, if the check is not modified to accept PyCObject's, the things will simply not work. NumPy uses NpyCapsule_Check in order to typecheck __array_struct__ attributes. That check should succeed for cobjects, then you know can call NpyCapsule_AsVoidPtr. >> >> 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. >> > > Yeah, but it is kind of ugly to have to deal with the warnings. > Yes, I understand. However, I'll insist about accepting PyCObject's, this will not make warnings show up. So, in short, if you accept that both NpyCapsule_Check() and NpyCapsule_AsVoidPtr() should accept PyCObject's for Py < 3.1, I can provide the patch... I can stress-test this because i'm using __array_struct__ in order to share memory between numpy arrays and PETSc vectors. -- 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 _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion