in dataflux_core/range_splitter.py [0:0]
def string_to_minimal_int_range(self, start_range: str, end_range: str,
num_splits: int) -> MinimalIntRange:
"""Converts a string range to a minimal integer range.
Args:
start_range (str): The string marking the start of the split range.
end_range (str): The string marking the end of the split range.
num_splits (int): The number of splitpoints to return.
Returns:
A minimal integer range.
"""
start_int = 0
end_int = 0
alphabet_len = len(self.sorted_alphabet)
start_char = self.sorted_alphabet[0]
end_char = self.sorted_alphabet[-1]
end_default_char = start_char
if len(end_range) == 0:
end_default_char = end_char
for i in count(0):
start_pos = self.alphabet_map[get_char_or_default(
start_range, i, start_char)]
start_int *= alphabet_len
start_int += start_pos
end_pos = self.alphabet_map[get_char_or_default(
end_range, i, end_default_char)]
end_int *= alphabet_len
end_int += end_pos
difference = end_int - start_int
if difference > num_splits:
# Due to zero indexing, min length must have 1 added to it.
return MinimalIntRange(start_int, end_int, i + 1)