Mark Dickinson <dicki...@gmail.com> added the comment:

Nick, it sounds as though you have an idea of how you think things should be 
working here---perhaps you can help me out.  I'd really like to understand what 
the implementation should look like from the POV of a 3rd party module that 
defines some object exporting the buffer interface.

Here's a specific scenario I'd like to understand:  module foo defines a type 
Foo that implements the buffer protocol.  For simplicity, suppose it's 
exporting 1-dim buffers. When I do:

>>> from foo import Foo
>>> foo_object = Foo()
>>> m = memoryview(foo_object)
>>> n = m[::2]  # take a slice of m
>>> del m       # delete the objects, in whichever order.
>>> del n

what's the sequence of getbuffer and releasebuffer calls that foo_object should 
expect to see?

Q1. Does foo get 2 requests to getbuffer (and 2 to releasebuffer), or just one 
each?  I'm assuming at least that getbuffer and releasebuffer calls should be 
paired.

Q2. For each pair of getbuffer/releasebuffer calls, should the 'view' parameter 
passed into releasebuffer be identical to that provided to getbuffer?  Or is it 
acceptable for the actual Py_buffer* pointers to be distinct, but the 
pointed-to Py_buffers to be exact copies.  (The existence of the smalltable 
field complicates the notion of an exact copy a little bit, but I think that's 
a detail that can be ignored for these questions.)

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue10181>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to