From 5404ee06285b519ce467f7655b840597a7538119 Mon Sep 17 00:00:00 2001 From: Balaji Veeramani Date: Thu, 30 Jul 2020 10:15:36 -0500 Subject: [PATCH] Fix JSONLinesDeserializer --- src/sagemaker/deserializers.py | 3 ++- tests/unit/sagemaker/test_deserializers.py | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/sagemaker/deserializers.py b/src/sagemaker/deserializers.py index 06e436a811..d5fa93f7ab 100644 --- a/src/sagemaker/deserializers.py +++ b/src/sagemaker/deserializers.py @@ -266,7 +266,8 @@ def deserialize(self, stream, content_type): list: A list of JSON serializable objects. """ try: - lines = stream.read().rstrip().split("\n") + body = stream.read().decode("utf-8") + lines = body.rstrip().split("\n") return [json.loads(line) for line in lines] finally: stream.close() diff --git a/tests/unit/sagemaker/test_deserializers.py b/tests/unit/sagemaker/test_deserializers.py index 5621905e9f..b5b4375682 100644 --- a/tests/unit/sagemaker/test_deserializers.py +++ b/tests/unit/sagemaker/test_deserializers.py @@ -219,16 +219,16 @@ def json_lines_deserializer(): @pytest.mark.parametrize( "source, expected", [ - ('["Name", "Score"]\n["Gilbert", 24]', [["Name", "Score"], ["Gilbert", 24]]), - ('["Name", "Score"]\n["Gilbert", 24]\n', [["Name", "Score"], ["Gilbert", 24]]), + (b'["Name", "Score"]\n["Gilbert", 24]', [["Name", "Score"], ["Gilbert", 24]]), + (b'["Name", "Score"]\n["Gilbert", 24]\n', [["Name", "Score"], ["Gilbert", 24]]), ( - '{"Name": "Gilbert", "Score": 24}\n{"Name": "Alexa", "Score": 29}', + b'{"Name": "Gilbert", "Score": 24}\n{"Name": "Alexa", "Score": 29}', [{"Name": "Gilbert", "Score": 24}, {"Name": "Alexa", "Score": 29}], ), ], ) def test_json_lines_deserializer(json_lines_deserializer, source, expected): - stream = io.StringIO(source) + stream = io.BytesIO(source) content_type = "application/jsonlines" actual = json_lines_deserializer.deserialize(stream, content_type) assert actual == expected