From 83000e917de6fa497ed85bda38261bda3b91aa51 Mon Sep 17 00:00:00 2001 From: Thomas Schultz Date: Sun, 9 Oct 2016 13:25:30 -0400 Subject: [PATCH 1/2] Fix #2519, py3.5 encoding issue. --- speech/google/cloud/speech/client.py | 3 ++- speech/unit_tests/test_client.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/speech/google/cloud/speech/client.py b/speech/google/cloud/speech/client.py index daa6a9d9d3e2..face3f59e6ad 100644 --- a/speech/google/cloud/speech/client.py +++ b/speech/google/cloud/speech/client.py @@ -237,7 +237,8 @@ def _build_request_data(sample, language_code=None, max_alternatives=None, :returns: Dictionary with required data for Google Speech API. """ if sample.content is not None: - audio = {'content': b64encode(_to_bytes(sample.content))} + audio = {'content': + b64encode(_to_bytes(sample.content)).decode('ascii')} else: audio = {'uri': sample.source_uri} diff --git a/speech/unit_tests/test_client.py b/speech/unit_tests/test_client.py index 172cf5d19a26..b362877da278 100644 --- a/speech/unit_tests/test_client.py +++ b/speech/unit_tests/test_client.py @@ -67,7 +67,8 @@ def test_sync_recognize_content_with_optional_parameters(self): from google.cloud.speech.sample import Sample from unit_tests._fixtures import SYNC_RECOGNIZE_RESPONSE - _B64_AUDIO_CONTENT = base64.b64encode(_to_bytes(self.AUDIO_CONTENT)) + _B64_AUDIO_CONTENT = (base64.b64encode(_to_bytes(self.AUDIO_CONTENT)) + .decode('ascii')) RETURNED = SYNC_RECOGNIZE_RESPONSE REQUEST = { 'config': { From 9e5b4488e8c7b32ce3cd514a0f719e67eaaa83e8 Mon Sep 17 00:00:00 2001 From: Thomas Schultz Date: Sun, 9 Oct 2016 18:19:13 -0400 Subject: [PATCH 2/2] Use _from_bytes instead of decode() --- speech/google/cloud/speech/client.py | 3 ++- speech/unit_tests/test_client.py | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/speech/google/cloud/speech/client.py b/speech/google/cloud/speech/client.py index face3f59e6ad..553927d237cd 100644 --- a/speech/google/cloud/speech/client.py +++ b/speech/google/cloud/speech/client.py @@ -17,6 +17,7 @@ from base64 import b64encode from google.cloud._helpers import _to_bytes +from google.cloud._helpers import _bytes_to_unicode from google.cloud import client as client_module from google.cloud.speech.connection import Connection from google.cloud.speech.encoding import Encoding @@ -238,7 +239,7 @@ def _build_request_data(sample, language_code=None, max_alternatives=None, """ if sample.content is not None: audio = {'content': - b64encode(_to_bytes(sample.content)).decode('ascii')} + _bytes_to_unicode(b64encode(_to_bytes(sample.content)))} else: audio = {'uri': sample.source_uri} diff --git a/speech/unit_tests/test_client.py b/speech/unit_tests/test_client.py index b362877da278..5972a0014eb3 100644 --- a/speech/unit_tests/test_client.py +++ b/speech/unit_tests/test_client.py @@ -61,14 +61,15 @@ def test_create_sample_from_client(self): self.assertEqual(content_sample.encoding, Encoding.FLAC) def test_sync_recognize_content_with_optional_parameters(self): - import base64 + from base64 import b64encode from google.cloud._helpers import _to_bytes + from google.cloud._helpers import _bytes_to_unicode + from google.cloud.speech.encoding import Encoding from google.cloud.speech.sample import Sample from unit_tests._fixtures import SYNC_RECOGNIZE_RESPONSE - - _B64_AUDIO_CONTENT = (base64.b64encode(_to_bytes(self.AUDIO_CONTENT)) - .decode('ascii')) + _AUDIO_CONTENT = _to_bytes(self.AUDIO_CONTENT) + _B64_AUDIO_CONTENT = _bytes_to_unicode(b64encode(_AUDIO_CONTENT)) RETURNED = SYNC_RECOGNIZE_RESPONSE REQUEST = { 'config': {