in src/sagemaker_core/tools/shapes_extractor.py [0:0]
def _evaluate_map_type(self, member_shape, add_shapes_prefix=True):
map_key_shape_name = member_shape["key"]["shape"]
map_value_shape_name = member_shape["value"]["shape"]
map_key_shape = self.combined_shapes[map_key_shape_name]
map_value_shape = self.combined_shapes[map_value_shape_name]
map_key_shape_type = map_key_shape["type"]
map_value_shape_type = map_value_shape["type"]
# Map keys are always expected to be "string" type
if map_key_shape_type != "string":
raise Exception(
"Unhandled map shape key type encountered, needs extra logic to handle this"
)
if map_value_shape_type == "structure":
if add_shapes_prefix:
map_value_shape_name = f"shapes.{map_value_shape_name}"
member_type = (
f"Dict[{BASIC_JSON_TYPES_TO_PYTHON_TYPES[map_key_shape_type]}, "
f"{map_value_shape_name}]"
)
elif map_value_shape_type == "list":
member_type = (
f"Dict[{BASIC_JSON_TYPES_TO_PYTHON_TYPES[map_key_shape_type]}, "
f"{self._evaluate_list_type(map_value_shape, add_shapes_prefix)}]"
)
elif map_value_shape_type == "map":
member_type = (
f"Dict[{BASIC_JSON_TYPES_TO_PYTHON_TYPES[map_key_shape_type]}, "
f"{self._evaluate_map_type(map_value_shape, add_shapes_prefix)}]"
)
else:
member_type = (
f"Dict[{BASIC_JSON_TYPES_TO_PYTHON_TYPES[map_key_shape_type]}, "
f"{BASIC_JSON_TYPES_TO_PYTHON_TYPES[map_value_shape_type]}]"
)
return member_type