From 88f910d4528e42056cf12718ddf7d031d04722c3 Mon Sep 17 00:00:00 2001 From: aviruthen <91846056+aviruthen@users.noreply.github.com> Date: Thu, 26 Mar 2026 16:14:23 -0400 Subject: [PATCH 1/2] fix: Attempting to serialize bytes type causes error (5660) --- .../src/sagemaker/core/utils/utils.py | 4 +-- .../tests/unit/generated/test_utils.py | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/sagemaker-core/src/sagemaker/core/utils/utils.py b/sagemaker-core/src/sagemaker/core/utils/utils.py index 8a8d90be6e..86ebf8160f 100644 --- a/sagemaker-core/src/sagemaker/core/utils/utils.py +++ b/sagemaker-core/src/sagemaker/core/utils/utils.py @@ -273,7 +273,7 @@ def pascal_to_snake(pascal_str): def is_not_primitive(obj): - return not isinstance(obj, (int, float, str, bool, datetime.datetime)) + return not isinstance(obj, (int, float, str, bool, bytes, datetime.datetime)) def is_not_str_dict(obj): @@ -285,7 +285,7 @@ def is_primitive_list(obj): def is_primitive_class(cls): - return cls in (str, int, bool, float, datetime.datetime) + return cls in (str, int, bool, float, bytes, datetime.datetime) class Unassigned: diff --git a/sagemaker-core/tests/unit/generated/test_utils.py b/sagemaker-core/tests/unit/generated/test_utils.py index 44856d17d5..e9454c64af 100644 --- a/sagemaker-core/tests/unit/generated/test_utils.py +++ b/sagemaker-core/tests/unit/generated/test_utils.py @@ -373,6 +373,31 @@ def test_serialize_method_nested_shape(): } + +def test_serialize_with_bytes_value_returns_bytes(): + result = serialize({"body": b"1"}) + assert result == {"body": b"1"} + + +def test_serialize_with_empty_bytes_returns_empty_dict(): + # Empty bytes is falsy, so the walrus operator in _serialize_dict skips it + result = serialize({"body": b""}) + assert result == {} + + +def test_serialize_with_bytes_in_list(): + result = serialize([b"hello", b"world"]) + assert result == [b"hello", b"world"] + + +def test_is_not_primitive_with_bytes_returns_false(): + assert is_not_primitive(b"test") is False + + +def test_is_primitive_class_with_bytes_returns_true(): + assert is_primitive_class(bytes) is True + + class TestUnassignedBehavior: """Test Unassigned class methods for proper behavior. From 6729583bf4abb0c6f416ab45b0c9bcc6ead6a532 Mon Sep 17 00:00:00 2001 From: aviruthen <91846056+aviruthen@users.noreply.github.com> Date: Thu, 26 Mar 2026 16:21:17 -0400 Subject: [PATCH 2/2] fix: address review comments (iteration #1) --- sagemaker-core/src/sagemaker/core/utils/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sagemaker-core/src/sagemaker/core/utils/utils.py b/sagemaker-core/src/sagemaker/core/utils/utils.py index 86ebf8160f..75a77cfa78 100644 --- a/sagemaker-core/src/sagemaker/core/utils/utils.py +++ b/sagemaker-core/src/sagemaker/core/utils/utils.py @@ -273,7 +273,8 @@ def pascal_to_snake(pascal_str): def is_not_primitive(obj): - return not isinstance(obj, (int, float, str, bool, bytes, datetime.datetime)) + return not isinstance(obj, (int, float, str, bool, bytes, datetime.datetime)) + def is_not_str_dict(obj): @@ -285,7 +286,8 @@ def is_primitive_list(obj): def is_primitive_class(cls): - return cls in (str, int, bool, float, bytes, datetime.datetime) + return cls in (str, int, bool, float, bytes, datetime.datetime) + class Unassigned: