def test_isintlike_returns_False_if_given_non_integer_float_string_padded_or_not(x, y, z):
    assume(not math.isnan(x))
    assume(not math.isinf(x))
    assume(not x.is_integer())
    y = ''.join(repeat(' ', y)) + repr(x) + ''.join(repeat(' ', z))
    assert not fastnumbers.isintlike(repr(x))
    assert not fastnumbers.isintlike(y)
Пример #2
0
def is_int_like(value):
    """
    Check if an object is an integer
    :param value:
    :return:
    """
    return fastnumbers.isintlike(value)
Пример #3
0
def check_data_type(dict_key, cell_value, data_types_dict):
    valid_type = type(data_types_dict[dict_key][0])
    if pd.isnull(cell_value) and data_types_dict[dict_key][1]:
        return "Mandatory field left empty."
    elif pd.isnull(cell_value) and not data_types_dict[dict_key][1]:
        return "Empty: potential error"
    elif data_types_dict[dict_key][0] == "datetime":
        try:
            parse(cell_value)
        except ValueError:
            return "Wrong data type - \"{}\" should be {} NOT {}".format(
                cell_value, datetime, type(cell_value))
    elif valid_type is not type(cell_value) and\
        valid_type is not type(fast_float(cell_value)) and\
        (valid_type is int) and not (isintlike(cell_value)) and\
        (valid_type is int) and not str(cell_value).isdigit():
        return "Wrong data type - \"{}\" should be {} NOT {}".format(
            cell_value, type(data_types_dict[dict_key][0]), type(cell_value))
    return "Success"
Пример #4
0
def _best_fitting_col_type(col):
    """
	visible: False

	desc:
		Determines the best fitting type for a column.
	"""

    from fastnumbers import isreal, isintlike

    if isinstance(col, _SeriesColumn):
        return SeriesColumn(depth=col.depth)
    if isinstance(col, (FloatColumn, IntColumn)):
        return type(col)
    if not all(isreal(val, allow_inf=True, allow_nan=True) for val in col):
        return MixedColumn
    if not all(isintlike(val) for val in col):
        return FloatColumn
    return IntColumn
def test_isintlike_given_unicode_non_numeral_returns_False(x):
    assert not fastnumbers.isintlike(x)
def test_isintlike_given_unicode_digit_numeral_returns_False(x):
    assume(unicodedata.numeric(x).is_integer())
    assert fastnumbers.isintlike(x)
    # Try padded as well
    assert fastnumbers.isintlike(u'   ' + x + u'   ')
def test_isintlike_given_unicode_digit_returns_True(x):
    assert fastnumbers.isintlike(x)
    # Try padded as well
    assert fastnumbers.isintlike(u'   ' + x + u'   ')
def test_isintlike_returns_False_if_given_string_and_num_only_is_True(x):
    assert not fastnumbers.isintlike(repr(x), num_only=True)
def test_isintlike():
    # 1. float number
    assert not fastnumbers.isintlike(-367.3268)
    assert fastnumbers.isintlike(-367.0)
    assert not fastnumbers.isintlike(-367.0, str_only=True)
    assert fastnumbers.isintlike(-367.0, num_only=True)
    # 2. signed float string
    assert not fastnumbers.isintlike("+367.3268")
    assert fastnumbers.isintlike("+367.0")
    assert fastnumbers.isintlike("+367.0", True)
    assert not fastnumbers.isintlike("+367.0", num_only=True)
    # 3. float string with exponents
    assert fastnumbers.isintlike("-367.3268e207")
    assert not fastnumbers.isintlike("145343E-4")
    assert fastnumbers.isintlike("14534.000000000e4")
    assert fastnumbers.isintlike("1400000E-4")
    assert not fastnumbers.isintlike("140E-4")
    assert fastnumbers.isintlike("14.E4")
    assert fastnumbers.isintlike("14E4")
    # 4. float string with padded whitespace
    assert not fastnumbers.isintlike("   -367.04   ")
    # 5. int number
    assert fastnumbers.isintlike(499)
    # 6. signed int string
    assert fastnumbers.isintlike("-499")
    # 7. int string with padded whitespace
    assert fastnumbers.isintlike("   +3001   ")
    # 8. long number
    assert fastnumbers.isintlike(35892482945872302493)
    # 9. long string
    if python_version_tuple()[0] == "2":
        assert fastnumbers.isintlike("35892482945872302493l")
        assert fastnumbers.isintlike("35892482945872302493L")
    assert fastnumbers.isintlike("35892482945872302493")
    # 10. return type
    assert fastnumbers.isintlike(4029) is True
    assert fastnumbers.isintlike(4029, str_only=True) is False
    assert fastnumbers.isintlike("4029") is True
    assert fastnumbers.isintlike("4029", True) is True
    assert fastnumbers.isintlike("4029.50") is False
    assert fastnumbers.isintlike(4029.50) is False
    # 11. TypeError for invalid input
    assert not fastnumbers.isintlike(["hey"])
    # 12. Invalid input string
    assert not fastnumbers.isintlike("not_a_number")
    # 13. Invalid input string with numbers
    assert not fastnumbers.isintlike("26.8 lb")
    # 14. Infinity
    assert not fastnumbers.isintlike("inf")
    # 15. NaN
    assert not fastnumbers.isintlike("nan")
    # 16. Sign/'e'/'.' only
    assert not fastnumbers.isintlike("+")
    assert not fastnumbers.isintlike("-")
    assert not fastnumbers.isintlike("e")
    assert not fastnumbers.isintlike(".")
    # 18. Unicode numbers
    assert fastnumbers.isintlike(u"⑦")
    assert fastnumbers.isintlike(u"⁸")
    assert not fastnumbers.isintlike(u"⅔")
    assert fastnumbers.isintlike(u"Ⅴ")
def test_isintlike_returns_False_for_nan_or_inf_string():
    assert not fastnumbers.isintlike('nan')
    assert not fastnumbers.isintlike('inf')
def test_isintlike_returns_False_if_given_int_and_str_only_is_True(x):
    assert not fastnumbers.isintlike(x, str_only=True)
def test_isintlike_returns_True_if_given_integer_float(x):
    assume(x.is_integer())
    assert fastnumbers.isintlike(x)
def test_isintlike_returns_False_if_given_non_integer_float(x):
    assume(not x.is_integer())
    assert not fastnumbers.isintlike(x)
def test_isintlike_returns_True_if_given_int(x):
    assert fastnumbers.isintlike(x)
    assert fastnumbers.isintlike(x, num_only=True)
def test_isintlike():
    # 1. float number
    assert not fastnumbers.isintlike(-367.3268)
    assert fastnumbers.isintlike(-367.0)
    assert not fastnumbers.isintlike(-367.0, str_only=True)
    assert fastnumbers.isintlike(-367.0, num_only=True)
    # 2. signed float string
    assert not fastnumbers.isintlike("+367.3268")
    assert fastnumbers.isintlike("+367.0")
    assert fastnumbers.isintlike("+367.0", True)
    assert not fastnumbers.isintlike("+367.0", num_only=True)
    # 3. float string with exponents
    assert fastnumbers.isintlike("-367.3268e207")
    assert not fastnumbers.isintlike("145343E-4")
    assert fastnumbers.isintlike("14534.000000000e4")
    assert fastnumbers.isintlike("1400000E-4")
    assert not fastnumbers.isintlike("140E-4")
    assert fastnumbers.isintlike("14.E4")
    assert fastnumbers.isintlike("14E4")
    # 4. float string with padded whitespace
    assert not fastnumbers.isintlike("   -367.04   ")
    # 5. int number
    assert fastnumbers.isintlike(499)
    # 6. signed int string
    assert fastnumbers.isintlike('-499')
    # 7. int string with padded whitespace
    assert fastnumbers.isintlike('   +3001   ')
    # 8. long number
    assert fastnumbers.isintlike(35892482945872302493)
    # 9. long string
    if python_version_tuple()[0] == '2':
        assert fastnumbers.isintlike("35892482945872302493l")
        assert fastnumbers.isintlike("35892482945872302493L")
    assert fastnumbers.isintlike("35892482945872302493")
    # 10. return type
    assert fastnumbers.isintlike(4029) is True
    assert fastnumbers.isintlike(4029, str_only=True) is False
    assert fastnumbers.isintlike("4029") is True
    assert fastnumbers.isintlike("4029", True) is True
    assert fastnumbers.isintlike("4029.50") is False
    assert fastnumbers.isintlike(4029.50) is False
    # 11. TypeError for invalid input
    assert not fastnumbers.isintlike(['hey'])
    # 12. Invalid input string
    assert not fastnumbers.isintlike('not_a_number')
    # 13. Invalid input string with numbers
    assert not fastnumbers.isintlike('26.8 lb')
    # 14. Infinity
    assert not fastnumbers.isintlike('inf')
    # 15. NaN
    assert not fastnumbers.isintlike('nan')
    # 16. Sign/'e'/'.' only
    assert not fastnumbers.isintlike('+')
    assert not fastnumbers.isintlike('-')
    assert not fastnumbers.isintlike('e')
    assert not fastnumbers.isintlike('.')
    # 18. Unicode numbers
    assert fastnumbers.isintlike(u'⑦')
    assert fastnumbers.isintlike(u'⁸')
    assert not fastnumbers.isintlike(u'⅔')
    assert fastnumbers.isintlike(u'Ⅴ')
def test_isintlike_given_unicode_of_more_than_one_char_returns_False(x):
    assume(not a_number(x))
    assert not fastnumbers.isintlike(x)
def test_isintlike_returns_False_if_given_non_number_string(x):
    assume(not a_number(x))
    assert not fastnumbers.isintlike(x)
def test_isintlike_returns_False_if_given_integer_float_and_str_only_is_True(x):
    assume(x.is_integer())
    assert not fastnumbers.isintlike(x, str_only=True)
def test_isintlike_with_no_arguments_fails():
    with raises(TypeError):
        fastnumbers.isintlike(5, invalid='dummy')
def test_isintlike_returns_True_if_given_int_string_padded_or_not(x, y, z):
    y = ''.join(repeat(' ', y)) + repr(x) + ''.join(repeat(' ', z))
    assert fastnumbers.isintlike(repr(x))
    assert fastnumbers.isintlike(repr(x), str_only=True)
    assert fastnumbers.isintlike(y)