def repr_assist(obj, remap=None):
    """Helper function to simplify ``__repr__`` methods.

    Args:
        obj: Object to pull argument values for
        remap (dict): Argument pairs to remap before output

    Returns:
        str: Self-documenting representation of ``value``
    """
    if not remap:
        remap = {}
    data = []
    for arg in inspect.getargspec(getattr(obj.__class__, '__init__'))[0]:
        if arg == 'self':
            continue
        elif arg in remap:
            value = remap[arg]
        else:
            try:
                value = getattr(obj, arg)
            except AttributeError:
                value = getattr(obj, '_%s' % arg)
        if isinstance(value, (type(None), list, basestring, datetime.date,
                              datetime.time)):
            data.append(repr(value))
        else:
            data.append(str(value))
    return "%s(%s)" % (obj.__class__.__name__, ', '.join(data))