On Tue, Apr 23, 2013 at 9:04 AM, M.-A. Lemburg <m...@egenix.com> wrote: > On 23.04.2013 17:47, Guido van Rossum wrote: >> On Tue, Apr 23, 2013 at 8:22 AM, M.-A. Lemburg <m...@egenix.com> wrote: >>> Just as reminder: we have the general purpose >>> encode()/decode() functions in the codecs module: >>> >>> import codecs >>> r13 = codecs.encode('hello world', 'rot-13') >>> >>> These interface directly to the codec interfaces, without >>> enforcing type restrictions. The codec defines the supported >>> input and output types. >> >> As an implementation mechanism I see nothing wrong with this. I hope >> the codecs module lets you introspect the input and output types of a >> codec given by name? > > At the moment there is no standard interface to access supported > input and output types... but then: regular Python functions or > methods also don't provide such functionality, so no surprise > there ;-)
Not quite the same though. Each function has its own unique behavior. But codecs support a standard interface, *except* that the input and output types sometimes vary. > It's mostly a matter of specifying the supported type > combinations in the codec documentation. > > BTW: What would be a use case where you'd want to > programmatically access such information before calling > the codec ? As you know, in Python 3, most code working with bytes doesn't also work with strings, and vice versa (except for a few cases where we've gone out of our way to write polymorphic code -- but users rarely do so, and any time you use a string or bytes literal you basically limit yourself to that type). Suppose I write a command-line utility that reads a file, runs it through a codec, and writes the result to another file. Suppose the name of the codec is a command-line argument (as well as the filenames). I need to know whether to open the files in text or binary mode based on the name of the codec. -- --Guido van Rossum (python.org/~guido) _______________________________________________ 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