def check_is_valid_ds_name(value, raise_exception=True):
    """
    Check if the value is a valid Dataset name

    :param value: value to check
    :param raise_exception: Indicate if an exception shall be raised (True, default) or not (False)

    :type value: str
    :type raise_exception: bool

    :returns: the status of the check
    :rtype: bool

    :raises TypeError: if value is invalid
    :raises ValueError: if value is not well formatted
    """
    if not isinstance(value, str):
        if raise_exception:
            raise TypeError("Dataset shall be str, not %s" % type(value))
        return False
    if len(value) < 3:
        if raise_exception:
            raise ValueError("Dataset %s shall have characters" % value)
        return False
    if " " in value:
        if raise_exception:
            raise ValueError("Dataset %s shall not contains spaces" % value)
        return False
    return True