Sun, 4 Jun 2000 23:25:04 +0100
> Should codecs be returned to the user as objects instead of tuples?
> Today we have:
> (UTF8_encode, UTF8_decode,
> UTF8_streamreader, UTF8_streamwriter) = codecs.lookup('UTF-8')
> output = UTF8_streamwriter( open( '/tmp/output', 'wb') )
> I think this would be a little simpler:
> output=codecs.lookup('UTF-8').stream_writer( open( '/tmp/output', 'wb')
> The object solution is more extensible, requires less "bogus"
> assignments and does not require the user to remember the order of the
> return values.
I suggested this a while back, for a different reason. Right now you get
four things back from lookup() relating to the given encoding. But in many
cases there may be other encoding-specific routines of great use, and
returning an object would give us a place to hang them; codec.repair(...)
and codec.validate(...), for example. There are accepted and useful bits of
code around to repair Shift-JIS or EUC data in which one or two bytes are
corrupt. We would also have a place to hang language-specific routines.
So I would be very, very happy to see codecs.lookup return a 'codec object'
with the four attributes encode, decode, streamreader() and streamwriter()
rather than a tuple.
- Andy Robinson