[Python-Dev] Decoding incomplete unicode
M.-A. Lemburg
mal at egenix.com
Thu Aug 19 18:06:46 CEST 2004
Walter Dörwald wrote:
> Martin v. Löwis wrote:
>
>> Walter Dörwald wrote:
>>
>>> They will not, because StreamReader.decode() already is a feed
>>> style API (but with state amnesia).
>>>
>>> Any stream decoder that I can think of can be (and most are)
>>> implemented by overwriting decode().
>>
>>
>> I consider that an unfortunate implementation artefact. You
>> either use the stateless encode/decode that you get from
>> codecs.get(encoder/decoder) or you use the file API on
>> the streams. You never ever use encode/decode on streams.
>
>
> That is exactly the problem with the current API.
> StreamReader mixes two concepts:
>
> 1) The stateful API, which allows decoding a byte input
> in chunk and the state of the decoder is kept between
> calls.
> 2) A file API where the chunks to be decoded are read
> from a byte stream.
>
>> I would have preferred if the default .write implementation
>> would have called self._internal_encode, and the Writer
>> would *contain* a Codec, rather than inheriting from Codec.
>
> This would separate the two concepts from above.
Note that StreamCodec only inherits from Codec for
convenience reasons (you can define a StreamCodec
using the stateless .encode() and .decode() methods
you get from Codec) and for logical reasons: a StreamCodec
happens to be a Codec as well, so isinstance(obj, Codec) should
be true for a StreamCodec as well.
There's nothing preventing you from overriding .encode()
and .decode() in a StreamReader or adding new methods that
implement a different approach to encode and decode.
Users should always use the file API of StreamReader
et al., not the .encode() and .decode() methods.
--
Marc-Andre Lemburg
eGenix.com
Professional Python Services directly from the Source (#1, Aug 19 2004)
>>> Python/Zope Consulting and Support ... http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,FreeBSD for free ! ::::
More information about the Python-Dev
mailing list