Example using compfunc argument with PrettyDiff method sort
-----------------------------------------------------------

Say we have an instance of Foo and want to sort on property bar:

>>> class Foo:
...     def __init__(self, bar):
...         self.bar = bar
...     def __repr__(self):
...         return str(self.bar)
...     def __eq__(self, other):
...         return self.bar == other.bar
...     def __hash__(self):
...         return self.bar
...

Define a custom comparator:

>>> def mycompare(foo1, foo2):
...     return cmp(foo1.bar, foo2.bar)
...

Generate the PrettyDiff object and sort using the custome comparator:

>>> from xix.utils.diff import AbstractDiff, PrettyDiff
>>> src = set([Foo(1),Foo(4),Foo(6),Foo(7),Foo(8)])
>>> tgt = set([Foo(0),Foo(1),Foo(6),Foo(9),Foo(10)])
>>> added = tuple(tgt - src)
>>> missing = tuple(src - tgt)
>>> same = tuple(src.intersection(tgt))
>>> diff = AbstractDiff(same, missing, added)
>>> pretty_diff = PrettyDiff(diff)
>>> pretty_diff.sort(cmpfunc = mycompare)
>>> print pretty_diff
((None, 0), (1, 1), (4, None), (6, 6), (7, None), (8, None), (None, 9), (None, 10))


