Skip to content
10 changes: 10 additions & 0 deletions src/sagemaker_core/main/code_injection/codec.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
LIST_TYPE,
MAP_TYPE,
)
from io import BytesIO


def pascal_to_snake(pascal_str):
Expand Down Expand Up @@ -244,6 +245,15 @@ def transform(data, shape, object_instance=None) -> dict:
elif _member_type == MAP_TYPE:
_map_type_shape = SHAPE_DAG[_member_shape]
evaluated_value = _evaluate_map_type(data[_member_name], _map_type_shape)
elif _member_type == "blob":
blob_data = data[_member_name]
if isinstance(blob_data, bytes):
evaluated_value = BytesIO(blob_data)
elif hasattr(blob_data, "read"):
# If it's already a file-like object, use it as is
evaluated_value = blob_data
else:
raise ValueError(f"Unexpected blob data type: {type(blob_data)}")
else:
raise ValueError(f"Unexpected member type encountered: {_member_type}")

Expand Down