in data_validation/schema_validation.py [0:0]
def parse_allow_list(st: str) -> dict:
"""Convert allow-list data type pairs into a dictionary like {key[value1, value2, etc], }"""
def expand_allow_list_ranges(data_type_pairs: list) -> list:
expanded_pairs = []
for dt1, dt2 in data_type_pairs:
dt1_list = expand_precision_or_scale_range(dt1)
dt2_list = expand_precision_or_scale_range(dt2)
expanded_pairs.extend(
[(_[0], _[1]) for _ in itertools.product(dt1_list, dt2_list)]
)
return expanded_pairs
def convert_pairs_to_dict(expanded_pairs: list) -> dict:
"""Take the list data type tuples and convert them into a dictionary keyed on source data type.
For example:
[('decimal(2,0)', 'int64'), ('decimal(2,0)', 'int32')]
becomes:
{'decimal(2,0)': ['int64', 'int32']}
"""
return_pairs = {}
for dt1, dt2 in expanded_pairs:
if dt1 in return_pairs:
return_pairs[dt1].append(dt2)
else:
return_pairs[dt1] = [dt2]
return return_pairs
data_type_pairs = split_allow_list_str(st)
expanded_pairs = expand_allow_list_ranges(data_type_pairs)
return_pairs = convert_pairs_to_dict(expanded_pairs)
return return_pairs