Nick Coghlan added the comment:

If transform is a method, how do you plan to accept arbitrary buffer supporting 
types as input?

This is why I mentioned memoryview: it doesn't provide decode(), but there's no 
good reason you should have to copy the data from the view before decoding it. 
Similarly, you shouldn't have to make an unaltered copy before creating a 
compressed (or decompressed) copy.

With codecs.encode and codecs.decode as functions, supporting memoryview as an 
input for bytes->str decoding, binary->bytes encoding (e.g. gzip compression) 
and binary->bytes decoding (e.g. gzip decompression) is trivial. Ditto for 
array.array and anything else that supports the buffer protocol.

With transform/untransform as methods? No such luck.

And once you're using functions rather than methods, it's best to define the 
API as object -> object, and leave any type constraints up to the individual 
codecs (with the error handling improved to provide more context and a more 
meaningful exception type, as I described earlier in the thread)

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue7475>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to