def _number_extracter(s, regex, numconv, py3_safe, use_locale, group_letters): """Helper to separate the string input into numbers and strings.""" conv_check = (numconv, _conv_to_check[numconv]) # Split the input string by numbers. # If the input is not a string, TypeError is raised. s = regex.split(s) # Now convert the numbers to numbers, and leave strings as strings. # Take into account locale if needed, and group letters if needed. # Remove empty strings from the list. if use_locale: s = [locale_convert(x, conv_check, group_letters) for x in s if x] elif group_letters: s = [grouper(x, conv_check) for x in s if x] else: s = [numconv(x) for x in s if x] # If the list begins with a number, lead with an empty string. # This is used to get around the "unorderable types" issue. if not s: # Return empty list for empty results. return [] elif conv_check[1](s[0], num_only=True): s = [null_string if use_locale else ''] + s # The _py3_safe function inserts "" between numbers in the list, # and is used to get around "unorderable types" in complex cases. # It is a separate function that needs to be requested specifically # because it is expensive to call. return _py3_safe(s, use_locale, conv_check[1]) if py3_safe else s
def test_grouper_returns_float_string_as_float(): assert grouper('45.8e-2', fast_float) == 45.8e-2
def test_grouper_returns_letters_with_lowercase_transform_of_letter(): assert grouper('HELLO', fast_float) == 'hHeElLlLoO' assert grouper('hello', fast_float) == 'hheelllloo'
def test_grouper_returns_float_string_as_float(x): assume(not isnan(x)) assert grouper(repr(x), (fast_float, isfloat)) == x
def test_grouper_returns_float_string_as_float_example(): assert grouper('45.8e-2', (fast_float, isfloat)) == 45.8e-2
def test_grouper_returns_letters_with_lowercase_transform_of_letter(x): assume(type(fast_float(x)) is not float) assert grouper(x, (fast_float, isfloat)) == ''.join( chain.from_iterable([low(y), y] for y in x))
def test_grouper_returns_letters_with_lowercase_transform_of_letter_example(): assert grouper('HELLO', (fast_float, isfloat)) == 'hHeElLlLoO' assert grouper('hello', (fast_float, isfloat)) == 'hheelllloo'
def test_grouper_returns_letters_with_lowercase_transform_of_letter(x): assume(type(fast_float(x)) is not float) assert grouper(x, (fast_float, isfloat)) == ''.join(chain.from_iterable([low(y), y] for y in x))
def test_grouper(): assert grouper('HELLO', fast_float) == 'hHeElLlLoO' assert grouper('hello', fast_float) == 'hheelllloo' assert grouper('45.8e-2', fast_float) == 45.8e-2