Skip to content

Commit 78aa695

Browse files
authored
Merge pull request #2792 from daspecster/vision-add-filename-to-client-image
Add filename parameter to client image proxy.
2 parents 3bbebfd + c1473ab commit 78aa695

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed

packages/google-cloud-vision/google/cloud/vision/client.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,20 @@ def annotate(self, image, features):
106106

107107
return response['responses'][0]
108108

109-
def image(self, content=None, source_uri=None):
109+
def image(self, content=None, filename=None, source_uri=None):
110110
"""Get instance of Image using current client.
111111
112112
:type content: bytes
113113
:param content: Byte stream of an image.
114114
115+
:type filename: str
116+
:param filename: Filename to image.
117+
115118
:type source_uri: str
116119
:param source_uri: Google Cloud Storage URI of image.
117120
118121
:rtype: :class:`~google.cloud.vision.image.Image`
119122
:returns: Image instance with the current client attached.
120123
"""
121-
return Image(client=self, content=content, source_uri=source_uri)
124+
return Image(client=self, content=content, filename=filename,
125+
source_uri=source_uri)

packages/google-cloud-vision/unit_tests/test_client.py

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,40 @@ def test_face_annotation(self):
7272
client._connection._requested[0]['data'])
7373
self.assertTrue('faceAnnotations' in response)
7474

75-
def test_image_with_client(self):
75+
def test_image_with_client_gcs_source(self):
7676
from google.cloud.vision.image import Image
7777

7878
credentials = _Credentials()
7979
client = self._make_one(project=PROJECT,
8080
credentials=credentials)
81-
image = client.image(source_uri=IMAGE_SOURCE)
82-
self.assertIsInstance(image, Image)
81+
gcs_image = client.image(source_uri=IMAGE_SOURCE)
82+
self.assertIsInstance(gcs_image, Image)
83+
self.assertEqual(gcs_image.source, IMAGE_SOURCE)
84+
85+
def test_image_with_client_raw_content(self):
86+
from google.cloud.vision.image import Image
87+
88+
credentials = _Credentials()
89+
client = self._make_one(project=PROJECT,
90+
credentials=credentials)
91+
raw_image = client.image(content=IMAGE_CONTENT)
92+
self.assertIsInstance(raw_image, Image)
93+
self.assertEqual(raw_image.content, B64_IMAGE_CONTENT)
94+
95+
def test_image_with_client_filename(self):
96+
from mock import mock_open
97+
from mock import patch
98+
from google.cloud.vision.image import Image
99+
100+
credentials = _Credentials()
101+
client = self._make_one(project=PROJECT,
102+
credentials=credentials)
103+
with patch('google.cloud.vision.image.open',
104+
mock_open(read_data=IMAGE_CONTENT)) as m:
105+
file_image = client.image(filename='my_image.jpg')
106+
m.assert_called_once_with('my_image.jpg', 'rb')
107+
self.assertIsInstance(file_image, Image)
108+
self.assertEqual(file_image.content, B64_IMAGE_CONTENT)
83109

84110
def test_multiple_detection_from_content(self):
85111
import copy

0 commit comments

Comments
 (0)