"file_mixed_ext": Unsupported,
    "image_png": Unsupported,
    "image_png_missing": Unsupported,
    "str_int_leading_zeros": Numeric,
    "str_float_non_leading_zeros": Numeric,
    "str_int_zeros": Numeric,
    "email_address_str": Categorical,
    "str_complex_nan": Categorical,
    "email_address": Unsupported,
    "email_address_missing": Unsupported,
}
if int(pd.__version__[0]) >= 1:
    inference_map["string_dtype_series"] = Categorical


@pytest.mark.parametrize(**get_inference_cases(series, inference_map, typeset))
def test_inference(series, type, typeset, difference):
    """Test the generated combinations for "inference(series) == type"

    Args:
        series: the series to test
        type: the type to test against
    """
    config["vars"]["num"]["low_categorical_threshold"].set(0)
    result, message = infers(series, type, typeset, difference)
    assert result, message


# Conversions in one single step
convert_map = [
    # Model type, Relation type
    "str_true_false_none": Boolean,
    "str_true_false_nan": Boolean,
    "somedate": DateTime,
    "empty": Unsupported,
    "list": Unsupported,
    "mixed": Unsupported,
    "dict": Unsupported,
    "tuple": Unsupported,
    "inf_only": Numeric,
    "nullable_int": Numeric,
    "catnum": Numeric,
}


@pytest.mark.parametrize(**patch_arg(
    get_inference_cases(series, inference_map, my_typeset), "inference_type"))
def test_inference(name, series, inference_type, typeset, difference):
    """Test the generated combinations for "inference(series) == type_"

    Args:
        series: the series to test
        type_: the type to test against
    """
    result, message = infers(name, series, inference_type, typeset, difference)
    assert result, message


# Conversions in one single step
convert_map = [
    # Model type, Relation type
    (
    "image_png_missing": Object,
    "str_int_leading_zeros": String,
    "str_float_non_leading_zeros": Float,
    "str_int_zeros": Integer,
    "email_address": Object,
    "email_address_missing": Object,
    "email_address_str": String,
    "all_null_none": Generic,
    "all_null_nan": Generic,
    "all_null_nat": Generic,
    "all_null_empty_str": String,
    "string_dtype_series": String,
}


@pytest.mark.parametrize(**get_inference_cases(array, inference_map, typeset))
def test_inference(name, series, inference_type, typeset, difference):
    """Test the generated combinations for "inference(array) == type"

    Args:
        series: the array to test
        inference_type: the type to test against
    """
    result, message = infers(name, series, inference_type, typeset, difference)
    assert result, message


# Conversions in one single step
convert_map = [
    # Model type, Relation type
    (Integer, Float, {"int_nan_series", "float_series2"}),
    "str_complex_nan": Categorical,
    "email_address": Unsupported,
    "email_address_missing": Unsupported,
    "all_null_nat": Unsupported,
    "all_null_empty_str": Categorical,
    "py_datetime_str": Categorical,
    "all_null_none": Unsupported,
    "complex_series_py_float": Numeric,
    "all_null_nan": Unsupported,
}
if int(pd.__version__[0]) >= 1:
    inference_map["string_dtype_series"] = Categorical


@pytest.mark.parametrize(**patch_arg(
    get_inference_cases(series, inference_map, my_typeset_default),
    "inference_type"))
def test_inference(name, series, inference_type, typeset, difference):
    """Test the generated combinations for "inference(series) == type"

    Args:
        series: the series to test
        inference_type: the type to test against
    """
    result, message = infers(name, series, inference_type, typeset, difference)
    assert result, message


# Conversions in one single step
convert_map = [
    # Model type, Relation type