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