def _evaluate_map_type()

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