[Python-Dev] Add a "transformdict" to collections

Antoine Pitrou solipsis at pitrou.net
Thu Sep 12 17:40:31 CEST 2013


Le Thu, 12 Sep 2013 08:05:44 -0700,
Ethan Furman <ethan at stoneleaf.us> a écrit :
> On 09/12/2013 07:43 AM, Antoine Pitrou wrote:
> >
> > Yeah, so this is totally silly. What you're basically saying is "we
> > don't need TransformDict since people can re-implement it
> > themselves".
> 
> No, what I'm saying is that the "case-preserving" aspect of
> transformdict is silly.  The main point of transformdict is to
> enable, for example, 'IBM', 'Ibm', and 'ibm' to all match up as the
> same key.  But why?  Because you don't trust the user data.  And if
> you don't trust the user data you have to add the correct version of
> the key yourself before you ever process that data, which means you
> already have the correct version stored somewhere.

That's assuming there is an a priori "correct" version. But there might
not be any. Keeping the original key is important for different reasons
depending on the use case:

- for case-insensitive dicts, you want to keep the original key for
  presentation, logging and debugging purposes (*)

- for identity dicts, the original key is mandatory because the id()
  value in itself is completely useless, it's just used for matching

(*) For a well-known example of such behaviour, think about Windows
filesystems.

Regards

Antoine.




More information about the Python-Dev mailing list