def METHOD_NAME(self, signature):
    """Parse a signature into an user and a timestamp."""
    user, reason, reason_sub, ts = None, None, None, None
    try:
        rest, ts_str = signature.split('@')
        user, reason = rest.split('#')
        if ' (hold' in reason:
            reason, reason_sub = reason.split(' (', 1)
            reason_sub = reason_sub.rstrip(')')
        ts = datetime.strptime(ts_str, '%Y-%m-%dT%H:%M:%S.%f')
    except (AttributeError, ValueError):
        pass
    return user, reason, reason_sub, ts