[Python-Dev] Buffer protocol for io.BytesIO?

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