def _get_resource_members_and_string_body()

in src/sagemaker_core/tools/resources_codegen.py [0:0]


    def _get_resource_members_and_string_body(self, resource_name: str, input_shape, output_shape):
        input_members = self.shapes_extractor.generate_shape_members(input_shape)
        output_members = self.shapes_extractor.generate_shape_members(output_shape)
        resource_members = {**input_members, **output_members}
        # bring the required members in front
        ordered_members = {
            attr: value
            for attr, value in resource_members.items()
            if not value.startswith("Optional")
        }
        ordered_members.update(resource_members)

        resource_name_snake_case = pascal_to_snake(resource_name)
        resource_names = [row["resource_name"] for _, row in self.resources_plan.iterrows()]
        init_data_body = ""
        for attr, value in ordered_members.items():
            if (
                resource_names
                and attr.endswith("name")
                and attr[: -len("_name")] != resource_name_snake_case
                and attr != "name"
                and snake_to_pascal(attr[: -len("_name")]) in resource_names
            ):
                if value.startswith("Optional"):
                    init_data_body += f"{attr}: Optional[Union[str, object]] = Unassigned()\n"
                else:
                    init_data_body += f"{attr}: Union[str, object]\n"
            elif attr == "lambda":
                init_data_body += f"# {attr}: {value}\n"
            else:
                init_data_body += f"{attr}: {value}\n"
        return ordered_members, init_data_body