def METHOD_NAME(
    type_str: str, min_value: NumberType, max_value: NumberType, num_class: type
) -> Tuple:
    lower, upper = get_int_bounds(type_str)
    min_final = lower if min_value is None else num_class(min_value)
    max_final = upper if max_value is None else num_class(max_value)
    if min_final < lower:
        raise ValueError(f"min_value '{min_value}' is outside allowable range for {type_str}")
    if max_final > upper:
        raise ValueError(f"max_value '{max_value}' is outside allowable range for {type_str}")
    if min_final > max_final:
        raise ValueError(f"min_value '{min_final}' is greater than max_value '{max_final}'")
    return min_final, max_final