tries to make at least min(len(flag_list, n) items True in flag_list

    Args:
        flag_list (list): list of booleans
        n (int): number of items to ensure are True

    CommandLine:
        python -m utool.util_dev --test-make_at_least_n_items_valid

    Example:
        >>> # ENABLE_DOCTEST
        >>> from utool.util_dev import *  # NOQA
        >>> # build test data
        >>> flag_list = [False, True, False, False, False, False, False, True]
        >>> n = 5
        >>> # execute function
        >>> flag_list = make_at_least_n_items_valid(flag_list, n)
        >>> # verify results
        >>> result = str(flag_list)
        >>> print(result)
        [ True  True  True  True False False False  True]

def make_at_least_n_items_valid(flag_list, n):
    """
    tries to make at least min(len(flag_list, n) items True in flag_list

    Args:
        flag_list (list): list of booleans
        n (int): number of items to ensure are True

    CommandLine:
        python -m utool.util_dev --test-make_at_least_n_items_valid

    Example:
        >>> # ENABLE_DOCTEST
        >>> from utool.util_dev import *  # NOQA
        >>> # build test data
        >>> flag_list = [False, True, False, False, False, False, False, True]
        >>> n = 5
        >>> # execute function
        >>> flag_list = make_at_least_n_items_valid(flag_list, n)
        >>> # verify results
        >>> result = str(flag_list)
        >>> print(result)
        [ True  True  True  True False False False  True]
    """
    flag_list = np.array(flag_list)
    num_valid = flag_list.sum()
    # Find how many places we need to make true
    num_extra = min(len(flag_list) - num_valid, n - num_valid)
    # make_at_least_n_items_valid
    # Add in some extra daids to show if there are not enough
    for index in range(len(flag_list)):
        if num_extra <= 0:
            break
        if not flag_list[index]:
            flag_list[index] = True
            num_extra -= 1
    return flag_list