Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
continue
current_path = unflattened
path_list = [item.rstrip("[]") for item in str(path).split("/")]
for num, path_item in enumerate(path_list):
if isint(path_item):
if num == 0:
warn(
'Column "{}" has been ignored because it is a number.'.format(
path
),
DataErrorWarning,
)
continue
current_type = None
path_till_now = "/".join(
[item for item in path_list[: num + 1] if not isint(item)]
)
if parser:
current_type = parser.flattened.get(path_till_now)
try:
next_path_item = path_list[num + 1]
except IndexError:
next_path_item = ""
# Quick solution to avoid casting of date as datetinme in spreadsheet > xml
if xml:
if type(cell.cell_value) == datetime.datetime and not next_path_item:
if "datetime" not in path:
current_type = "date"
## Array
list_index = -1
def unflatten_main_with_parser(parser, line, timezone, xml, id_name):
unflattened = OrderedDict()
for path, cell in line.items():
# Skip blank cells
if cell.cell_value is None or cell.cell_value == "":
continue
current_path = unflattened
path_list = [item.rstrip("[]") for item in str(path).split("/")]
for num, path_item in enumerate(path_list):
if isint(path_item):
if num == 0:
warn(
'Column "{}" has been ignored because it is a number.'.format(
path
),
DataErrorWarning,
)
continue
current_type = None
path_till_now = "/".join(
[item for item in path_list[: num + 1] if not isint(item)]
)
if parser:
current_type = parser.flattened.get(path_till_now)
try:
next_path_item = path_list[num + 1]
if parser:
current_type = parser.flattened.get(path_till_now)
try:
next_path_item = path_list[num + 1]
except IndexError:
next_path_item = ""
# Quick solution to avoid casting of date as datetinme in spreadsheet > xml
if xml:
if type(cell.cell_value) == datetime.datetime and not next_path_item:
if "datetime" not in path:
current_type = "date"
## Array
list_index = -1
if isint(next_path_item):
if current_type and current_type != "array":
raise ValueError(
"There is an array at '{}' when the schema says there should be a '{}'".format(
path_till_now, current_type
)
)
list_index = int(next_path_item)
current_type = "array"
if current_type == "array":
list_as_dict = current_path.get(path_item)
if list_as_dict is None:
list_as_dict = ListAsDict()
current_path[path_item] = list_as_dict
elif type(list_as_dict) is not ListAsDict:
warn(