in rostran/core/properties.py [0:0]
def _handle_list_value(name_part, cur_value, expression, data=None):
if not isinstance(cur_value, list):
raise ConflictDataTypeInExpression(expression=expression)
indexes = LIST_INDEX_PATTERN.findall(name_part)
indexes_length = len(indexes)
for j, index in enumerate(indexes):
index = int(index)
if index < 0:
raise InvalidIndexInExpression(index=index, expression=expression)
if index > len(cur_value):
raise DiscontinuousIndexInExpression(index=index, expression=expression)
elif index == len(cur_value):
if j < indexes_length - 1:
cur_value.append([])
elif data is None:
cur_value.append({})
else:
cur_value.append(data)
cur_value = cur_value[index]
return cur_value