DanielStutzbach / blist

A list-like type with better asymptotic performance and similar performance on small lists
Other
310 stars 36 forks source link

sorteddict.__repr__ should be sorted #44

Closed mattmccutchen-google closed 11 years ago

mattmccutchen-google commented 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})