[Numpy-discussion] Testing the python buffer protocol (bf_getbuffer / tp_as_buffer)

Soeren Sonnenburg sonne at debian.org
Sat Dec 17 03:42:56 EST 2011


Doesn't work, complaining that the object has no __buffer__ attribute.

Digging into the numpy c code it seems numpy doesn't even support the
buffer protocol but only the deprecated (old) one
http://docs.python.org/c-api/objbuffer.html .

At least there is nowhere a PyObject_CheckBuffer() call but frombuffer
in the numpy C code checks for

(Py_TYPE(buf)->tp_as_buffer->bf_getwritebuffer == NULL                                    
            && Py_TYPE(buf)->tp_as_buffer->bf_getreadbuffer == NULL)                                 

.

So it needs bf_read/writebuffer to be set instead of bf_getbuffer and the array buffer protocol :-(

Soeren

On Sat, 2011-12-17 at 03:20 +0100, Torgil Svensson wrote:
> What happens if you use
> 
> y=numpy.frombuffer(x) ?
> 
> //Torgil
> 
> 
> On Sat, Dec 17, 2011 at 1:41 AM, Soeren Sonnenburg <sonne at debian.org> wrote:
> > Hi,
> >
> > I've implemented the buffer protocol
> > (http://www.python.org/dev/peps/pep-3118/) for some matrix class and
> > when I manually call PyObject_GetBuffer on that object I see that I get
> > the right matrix.
> >
> > Now I'd like to see numpy use the buffer protocol of my class. Does
> > anyone know how to test that? What do I need to write, just
> >
> > x=MyMatrix([1,2,3])
> > y=numpy.array(x)
> >
> > (that doesn't call the buffer function though - so it must be sth else)?
> >
> > Any ideas?
> > Soeren
> > --
> > For the one fact about the future of which we can be certain is that it
> > will be utterly fantastic. -- Arthur C. Clarke, 1962
> >
> > _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion at scipy.org
> > http://mail.scipy.org/mailman/listinfo/numpy-discussion
> >
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
> 

-- 
For the one fact about the future of which we can be certain is that it
will be utterly fantastic. -- Arthur C. Clarke, 1962
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20111217/8e70767e/attachment.sig>


More information about the NumPy-Discussion mailing list