[Python-Dev] Which direction is UnTransform? / Unicode is different

Walter Dörwald walter at livinglogic.de
Wed Nov 20 14:38:46 CET 2013


On 20.11.13 02:28, Jim J. Jewett wrote:

> [...]
> Instead of relying on introspection of .decodes_to and .encodes_to, it
> would be useful to have charsetcodecs and tranformcodecs as entirely
> different modules, with their own separate registries.  I will even
> note that the existing help(codecs) seems more appropriate for
> charsetcodecs than it does for the current conjoined module.

I don't understand how a registry of transformation functions would 
simplify code. Without the transform() method I would write:

    >>> import binascii
    >>> binascii.hexlify(b'foo')
    b'666f6f'

With the transform() method I should be able to write:

    >>> b'foo'.transform("hex")

However how does the hex transformer get registered in the registry? If 
the hex transformer is not part of the stdlib, there must be some code 
that does the registration, but to get that code to execute, I'd have to 
import a module, so we're back to square one, as I'd have to write:

    >>> import hex_transformer
    >>> b'foo'.transform("hex")

A way around this would be some kind of import magic, but is this really 
neccessary to be able to avoid one import statement?

Furthermore different transformation functions might have different 
additional options. Supporting those is simple when we have simple 
transformation functions: The functions has arguments, and those are 
documented where the function is documented. If we want to support 
custom options for the .transform() method, transform() would have to 
pass along *args, **kwargs to the underlying transformer. However this 
is difficult to document in a way that makes it easy to find which 
options exist for a particular transformer.

Servus,
    Walter



More information about the Python-Dev mailing list