Closed mattmccutchen-google closed 11 years ago
Since one use case for sorted collections like sorteddict is to get reproducible behavior independent of hash randomization or the insertion order, it would be useful if sorteddict.repr sorted the keys as well.
Test case:
class Collider(object): def __init__(self, x): self.x = x def __repr__(self): return 'Collider(%r)' % self.x def __eq__(self, other): return self.__class__ == other.__class__ and self.x == other.x def __cmp__(self, other): if self.__class__ != other.__class__: return NotImplemented return cmp(self.x, other.x) def __hash__(self): return 42 >>> blist.sorteddict({Collider(1): 1, Collider(2): 2}) sorteddict({Collider(1): 1, Collider(2): 2}) >>> blist.sorteddict({Collider(2): 2, Collider(1): 1}) sorteddict({Collider(2): 2, Collider(1): 1}) # expected: sorteddict({Collider(1): 1, Collider(2): 2})
Since one use case for sorted collections like sorteddict is to get reproducible behavior independent of hash randomization or the insertion order, it would be useful if sorteddict.repr sorted the keys as well.
Test case: