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)
def is_int_like(value): """ Check if an object is an integer :param value: :return: """ return fastnumbers.isintlike(value)
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"
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)