in src/loading_manifest/csv_to_json.py [0:0]
def create_manifest_from_row(root_template, required_template,
parameters_object, map_parameter_column, data_row):
# create new instance from template
ldm = copy.deepcopy(root_template)
new_parameters_object = dict()
parse_template_parameters(ldm, new_parameters_object)
assert new_parameters_object == parameters_object
# empty top-level array object
for parameter, parameter_recs in new_parameters_object.items():
for parameter_rec in parameter_recs:
_, _, root_list = parameter_rec
if len(root_list) > 0:
top_object, top_keys = root_list[0]
parent_object, key = get_deepest_key_object(top_object, top_keys)
parent_object[key] = []
# replace parameters with data
for parameter, parameter_recs in new_parameters_object.items():
for parameter_rec in parameter_recs:
root_object, keys, root_list = parameter_rec
d_array = len(root_list)
if d_array == 0:
# parameters not inside array type
parameter_column = map_parameter_column.get(parameter)
replace_parameter_with_data(root_object, keys, parameter, data_row, parameter_column)
else:
# parameters inside array type
parameter_column = map_parameter_column.get(parameter)
# create array objects
new_root_list = list(root_list)
new_root_list.append((root_object, keys))
for indexes_column in parameter_column:
new_root_object, new_keys = get_root_object(new_root_list, indexes_column[:-1])
replace_parameter_with_data(new_root_object, new_keys, parameter, data_row, indexes_column[-1])
# clean up non-filled parameters
clear_non_filled_parameters(ldm)
# clear special tags (oneOf, anyOf etc)
remove_special_tags(ldm)
# add required fields if needed
add_required_fields(ldm, required_template)
return ldm