[New-bugs-announce] [issue13881] Stream encoder for zlib_codec doesn't use the incremental encoder
report at bugs.python.org
Thu Jan 26 20:40:49 CET 2012
New submission from Andrew McNabb <amcnabb at mcnabbs.org>:
The stream encoder for the zlib_codec doesn't use the incremental encoder, so it has limited usefulness in practice. This is easiest to show with an example.
Here is the behavior with the stream encoder:
>>> filelike = io.BytesIO()
>>> wrapped = codecs.getwriter('zlib_codec')(filelike)
However, this is the behavior of the incremental encoder:
>>> ienc = codecs.getincrementalencoder('zlib_codec')()
>>> ienc.encode(b'x', final=True)
The stream encoder is apparently encoding each write as an individual block, but the incremental encoder buffers until it gets a block that's large enough to be meaningfully compressed.
Fixing this may require addressing a separate issue with stream encoders. Unlike with the GzipFile module, closing a stream encoder closes the underlying file. If this underlying file is a BytesIO, then closing makes it free its buffer, making it impossible to get at the completed file.
title: Stream encoder for zlib_codec doesn't use the incremental encoder
versions: Python 3.2
Python tracker <report at bugs.python.org>
More information about the New-bugs-announce