I'm not really worried by any of those problems, because it's kind of nonsense to uniqfy a dict or a set, so nonsense in, nonsense out. The case of Tuple is special, because it should be like builtin tuple, but it really isn't, so the only way to get a sensible behavior is to convert it to a list before passing it to uniq().