<div class="gmail_quote">2012/6/5 Stephen J. Turnbull <span dir="ltr"><<a href="mailto:stephen@xemacs.org" target="_blank">stephen@xemacs.org</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div id=":1uf">I wouldn't object to a method with the semantics of reinitialization,<br>
but it should have a name implying reinitialization.  It probably<br>
should also error if the stream is open and has been written to.</div></blockquote></div><br>What do you think of the following method TextIOWrapper.reset_encoding?<div><div>(the assert statements should certainly be replaced by some IOError)<br>
<div><br></div><div>::<div><div>    def reset_encoding(self, encoding, errors='strict'):</div><div>        if self._decoder:</div><div>            # No decoded chars awaiting read</div><div>            assert self._decoded_chars_used == len(self._decoded_chars)</div>
<div>            # Nothing in the input buffer</div><div>            buf, flag = self._decoder.getstate()</div><div>            assert buf == b''</div><div>        if self._encoder:</div><div>            # Nothing in the output buffer</div>
<div>            buf = self._encoder.encode('', final=True)</div><div>            assert buf == b''</div><div>        # Reset the decoders</div><div>        self._decoder = None</div><div>        self._encoder = None</div>
<div>        # Now change the encoding</div><div>        self._encoding = encoding</div><div>        self._errors = errors</div><div><br></div><div><br></div>-- <br>Amaury Forgeot d'Arc<br>
</div></div></div></div>