in src/sagemaker_core/tools/shapes_extractor.py [0:0]
def _evaluate_list_type(self, member_shape, add_shapes_prefix=True):
list_shape_name = member_shape["member"]["shape"]
list_shape_member = self.combined_shapes[list_shape_name]
list_shape_type = list_shape_member["type"]
if list_shape_type == "list":
member_type = f"List[{self._evaluate_list_type(list_shape_member, add_shapes_prefix)}]"
elif list_shape_type == "map":
member_type = f"List[{self._evaluate_map_type(list_shape_member, add_shapes_prefix)}]"
elif list_shape_type == "structure":
# handling an edge case of nested structure
if list_shape_name == "SearchExpression":
member_type = f"List['{list_shape_name}']"
else:
if add_shapes_prefix:
list_shape_name = f"shapes.{list_shape_name}"
member_type = f"List[{list_shape_name}]"
elif list_shape_type in BASIC_JSON_TYPES_TO_PYTHON_TYPES.keys():
member_type = f"List[{BASIC_JSON_TYPES_TO_PYTHON_TYPES[list_shape_type]}]"
else:
raise Exception(
f"Unhandled list shape key type {list_shape_type} for Shape: {list_shape_name} encountered, needs extra logic to handle this"
)
return member_type