From 86b78f34527729603bdb38933aae1dabd1804de4 Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos Date: Thu, 8 May 2025 14:41:10 -0700 Subject: [PATCH 1/3] fix: honor json serialization of HPs --- .../modules/train/container_drivers/common/utils.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/sagemaker/modules/train/container_drivers/common/utils.py b/src/sagemaker/modules/train/container_drivers/common/utils.py index c07aa1359a..a94416550d 100644 --- a/src/sagemaker/modules/train/container_drivers/common/utils.py +++ b/src/sagemaker/modules/train/container_drivers/common/utils.py @@ -124,8 +124,6 @@ def safe_deserialize(data: Any) -> Any: This function handles the following cases: 1. If `data` is not a string, it returns the input as-is. - 2. If `data` is a string and matches common boolean values ("true" or "false"), - it returns the corresponding boolean value (True or False). 3. If `data` is a JSON-encoded string, it attempts to deserialize it using `json.loads()`. 4. If `data` is a string but cannot be decoded as JSON, it returns the original string. @@ -134,13 +132,6 @@ def safe_deserialize(data: Any) -> Any: """ if not isinstance(data, str): return data - - lower_data = data.lower() - if lower_data in ["true"]: - return True - if lower_data in ["false"]: - return False - try: return json.loads(data) except json.JSONDecodeError: From e94b5a6f25eccf59f0370332f71138b3e104da9e Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos Date: Thu, 8 May 2025 14:43:15 -0700 Subject: [PATCH 2/3] test --- .../modules/train/container_drivers/test_utils.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/unit/sagemaker/modules/train/container_drivers/test_utils.py b/tests/unit/sagemaker/modules/train/container_drivers/test_utils.py index beff06e8d8..c51b91f5e5 100644 --- a/tests/unit/sagemaker/modules/train/container_drivers/test_utils.py +++ b/tests/unit/sagemaker/modules/train/container_drivers/test_utils.py @@ -59,8 +59,14 @@ def test_safe_deserialize_not_a_string(): def test_safe_deserialize_boolean_strings(): assert safe_deserialize("true") is True assert safe_deserialize("false") is False - assert safe_deserialize("True") is True - assert safe_deserialize("False") is False + + # The below are not valid JSON booleans + assert safe_deserialize("True") is "True" + assert safe_deserialize("False") is "False" + assert safe_deserialize("TRUE") is "TRUE" + assert safe_deserialize("FALSE") is "FALSE" + assert safe_deserialize("tRuE") is "tRuE" + assert safe_deserialize("fAlSe") is "fAlSe" def test_safe_deserialize_valid_json_string(): From 15651c0e76aa8448156b56108c0f06c9fa2fe245 Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos Date: Fri, 9 May 2025 11:01:04 -0700 Subject: [PATCH 3/3] fix --- .../modules/train/container_drivers/test_utils.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/unit/sagemaker/modules/train/container_drivers/test_utils.py b/tests/unit/sagemaker/modules/train/container_drivers/test_utils.py index c51b91f5e5..c563e0607f 100644 --- a/tests/unit/sagemaker/modules/train/container_drivers/test_utils.py +++ b/tests/unit/sagemaker/modules/train/container_drivers/test_utils.py @@ -61,12 +61,12 @@ def test_safe_deserialize_boolean_strings(): assert safe_deserialize("false") is False # The below are not valid JSON booleans - assert safe_deserialize("True") is "True" - assert safe_deserialize("False") is "False" - assert safe_deserialize("TRUE") is "TRUE" - assert safe_deserialize("FALSE") is "FALSE" - assert safe_deserialize("tRuE") is "tRuE" - assert safe_deserialize("fAlSe") is "fAlSe" + assert safe_deserialize("True") == "True" + assert safe_deserialize("False") == "False" + assert safe_deserialize("TRUE") == "TRUE" + assert safe_deserialize("FALSE") == "FALSE" + assert safe_deserialize("tRuE") == "tRuE" + assert safe_deserialize("fAlSe") == "fAlSe" def test_safe_deserialize_valid_json_string():