On 4/23/2013 12:49 PM, Stephen J. Turnbull wrote:
Which is an obnoxious API, since (1) you've now made it impossible to
use "transform" for
bytestring.transform(from='utf-8', to='iso-8859-1')
bytestring.transform(from='ulaw', to='mp3')
textstring.transform(from='rest', to='html')
without confusion, and (2) the whole world is going to wonder why you
don't use .encode and .decode instead of .transform and .untransform.
I think the unambiguous solution is to get rid of the notion of
'untransform' (which only means 'transform in the other direction'),
since it requires and presumes an asymmetry that is not always present.
It it precisely the lack of asymmetry in examples like the above that
makes the transform/untransform pair ambiguous as to which is which.
.transform should be explicit and always take two args, no implicit
defaults, the 'from form' and the 'to' form. They can labelled by
position in the natural order (from, to) or by keyword, as in your
examples. For text, the plain undifferentiated form which one might
think of as default could be called 'text' and that for bytes 'bytes'
(as you suggest) or 'ascii' as appropriate.
str.transform would always be unicode to unicode and bytes.transform
always bytes to bytes.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com