def get_case(field_type, values): """ Determines the case of a list or dictionary of values. Args: - type: if not == 'string', will return 'n/a' - values: could be either dictionary or list. If it's a list, then it will only examine the keys. Returns: - one of: 'mixed','lower','upper','unknown' Misc notes: - "unknown values" are ignored - empty values list/dict results in 'unknown' result To do: - add consistency factor Test coverage: - complete, via test harness """ freq = collections.defaultdict(int) case = None if field_type != 'string': return 'n/a' # count occurances of each case field_type in values: for key in values: if typer.is_unknown(key): freq['unk'] += 1 elif typer.is_integer(key): # will be ignoring these freq['number'] += 1 elif typer.is_float(key): # will be ignoring these freq['number'] += 1 elif key.islower(): freq['lower'] += 1 elif key.isupper(): freq['upper'] += 1 else: freq['mixed'] += 1 # evaluate frequency distribution: if 'mixed' in freq: case = 'mixed' elif ('lower' in freq and 'upper' not in freq): case = 'lower' elif ('lower' not in freq and 'upper' in freq): case = 'upper' elif ('lower' in freq and 'upper' in freq): case = 'mixed' else: case = 'unknown' return case
def get_case(field_type, values): """ Determines the case of a list or dictionary of values. Args: - type: if not == 'string', will return 'n/a' - values: could be either dictionary or list. If it's a list, then it will only examine the keys. Returns: - one of: 'mixed','lower','upper','unknown' Misc notes: - "unknown values" are ignored - empty values list/dict results in 'unknown' result To do: - add consistency factor Test coverage: - complete, via test harness """ freq = collections.defaultdict(int) case = None if field_type != 'string': return 'n/a' # count occurances of each case field_type in values: for key in values: if typer.is_unknown(key): freq['unk'] += 1 elif typer.is_integer(key): # will be ignoring these freq['number'] += 1 elif typer.is_float(key): # will be ignoring these freq['number'] += 1 elif key.islower(): freq['lower'] += 1 elif key.isupper(): freq['upper'] += 1 else: freq['mixed'] += 1 # evaluate frequency distribution: if 'mixed' in freq: case = 'mixed'
def test_type_b01_is_float(self): assert(mod.is_float('33.22') is True) assert(mod.is_float(44.55) is True) assert(mod.is_float(3) is False) assert(mod.is_float(0.0) is False) assert(mod.is_float(0) is False) assert(mod.is_float('b') is False) assert(mod.is_float('') is False) assert(mod.is_float(' ') is False) assert(mod.is_float('$3') is False) assert(mod.is_float('4,333.22') is False) assert(mod.is_float('3') is False) assert(mod.is_float('-3') is False) assert(mod.is_float(None) is False)
def test_type_b01_is_float(self): assert (mod.is_float('33.22') is True) assert (mod.is_float(44.55) is True) assert (mod.is_float(3) is False) assert (mod.is_float(0.0) is False) assert (mod.is_float(0) is False) assert (mod.is_float('b') is False) assert (mod.is_float('') is False) assert (mod.is_float(' ') is False) assert (mod.is_float('$3') is False) assert (mod.is_float('4,333.22') is False) assert (mod.is_float('3') is False) assert (mod.is_float('-3') is False) assert (mod.is_float(None) is False)
def test_is_float_basics(self): assert mod.is_float('33.22') assert mod.is_float(44.55) assert mod.is_float(3) is False assert mod.is_float(0.0) is False assert mod.is_float(0) is False assert mod.is_float('b') is False assert mod.is_float('') is False assert mod.is_float(' ') is False assert mod.is_float('$3') is False assert mod.is_float('4,333.22') is False assert mod.is_float('3') is False assert mod.is_float('-3') is False assert mod.is_float(None) is False
def test_is_float_basics(self): assert mod.is_float("33.22") assert mod.is_float(44.55) assert mod.is_float(3) is False assert mod.is_float(0.0) is False assert mod.is_float(0) is False assert mod.is_float("b") is False assert mod.is_float("") is False assert mod.is_float(" ") is False assert mod.is_float("$3") is False assert mod.is_float("4,333.22") is False assert mod.is_float("3") is False assert mod.is_float("-3") is False assert mod.is_float(None) is False