'If it is an instance of Exception, format it nicely (trying to emulate
the format that you see when an exception is actually raised, plus
bracketing \'<\'\'s).  If it is an instance of dict call self.repr_dict()
on it.  If it is an instance of list call self.repr_list() on it. Else
call Repr.repr_instance().'

def repr_instance(self, obj, level):

    if isinstance(obj, exceptions.Exception):
        tms = self.maxstring
        self.maxstring = max(512, (tms * 4))
        tml = self.maxlist
        self.maxlist = max(12, (tml * 4))
        try:
            if hasattr(obj, 'args'):
                if (len(obj.args) == 1):
                    return (((('<' + obj.__class__.__name__) + ':    ') + self.repr1(obj.args[0], (level - 1))) + '>')
                else:
                    return (((('<' + obj.__class__.__name__) + ':    ') + self.repr1(obj.args, (level - 1))) + '>')
            else:
                return (('<' + obj.__class__.__name__) + '>')
        finally:
            self.maxstring = tms
            self.maxlist = tml
    if isinstance(obj, dict):
        return self.repr_dict(obj, level)
    if isinstance(obj, list):
        return self.repr_list(obj, level)
    return Repr.repr_instance(self, obj, level)
