[Python-Dev] cStringIO buffer interface

Jean-Paul Calderone exarkun at divmod.com
Wed Apr 30 20:38:04 CEST 2008


On Wed, 30 Apr 2008 09:51:25 -0700, Guido van Rossum <guido at python.org> wrote:
>On Wed, Apr 30, 2008 at 9:36 AM, Farshid Lashkari <flashk at gmail.com> wrote:
>>  I was just curious as to why cStringIO objects don't implement the
>>  buffer interface.  cStringIO objects seem similar to string and array
>>  objects, and those support the buffer protocol. Is there a reason
>>  against allowing cStringIO to support at least the read buffer
>>  interface, or is just that nobody has considered it until now?
>
>Well, for one, it would mean you could no longer exchange a StringIO
>instance for a cStringIO instance.

It would probably only mean that there is one further incompatibility
between cStringIO and StringIO - you already can't exchange them in a
number of cases.  They handle unicode differently, they have different
methods, etc.

Maybe making them diverge even further is a step in the wrong direction,
though.

>Also, what's the compelling use case you're thinking of?

I'm not sure what use-case Farshid Lashkari had.  For Twisted, it has
been considered as a way to reduce peak memory usage (by reducing the
need for memory copying, which also speeds things up).  I'm not sure
if anyone has benchmarked this yet, so I don't know if it's a real win
or not.  I think Thomas Hervé has a patch to cStringIO which implements
the feature, though.

For reference, <http://twistedmatrix.com/trac/ticket/3188>.

This isn't high on my priority list, but I thought I'd point out the
potential use-case.

Jean-Paul


More information about the Python-Dev mailing list