[Python-Dev] Buffer protocol for io.BytesIO? (original) (raw)

Stefan Behnel stefan_ml at behnel.de
Fri Sep 3 13:10:22 CEST 2010


Antoine Pitrou, 03.09.2010 12:56:

On Fri, 3 Sep 2010 20:44:01 +1000 Nick Coghlan wrote:

It actually strikes me as a fairly bad thing, so I think you're right to distrust it.

+1

It could not be resized, but it could be modified (same as what happens with bytearrays today). Actually, the buffer itself would be writable, and allow modifying the BytesIO contents.

You may need to be careful with reads and writes while the buffer is exposed (e.g. throwing an exception until the buffer is released again). Perhaps the buffer accessor should be a context manager so it is easy to enforce prompt release? That's an interesting idea. I was planning to return a memoryview object (in order to hide the intermediate object, and make it really minimal), so perhaps the context protocol should be enabled on memoryviews? (enter would be a no-op, and exit would release the internal buffer and render it invalid, a bit like closing a file)

I can't see a reason not to support that. Sounds a lot simpler than requiring to set the memory view reference to None in order to trigger a cleanup at an undefined point in time.

Stefan



More information about the Python-Dev mailing list