forked from googleapis/google-cloud-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoperation.py
More file actions
70 lines (52 loc) · 2.39 KB
/
Copy pathoperation.py
File metadata and controls
70 lines (52 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Copyright 2016 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Long running operation representation for Google Speech API"""
from google.cloud.proto.speech.v1beta1 import cloud_speech_pb2
from google.cloud import operation
from google.cloud.speech.result import Result
operation.register_type(cloud_speech_pb2.AsyncRecognizeMetadata)
operation.register_type(cloud_speech_pb2.AsyncRecognizeResponse)
class Operation(operation.Operation):
"""Custom Long-Running Operation for Google Speech API.
:type name: str
:param name: The fully-qualified path naming the operation.
:type client: :class:`~google.cloud.speech.client.Client`
:param client: Client that created the current operation.
:type caller_metadata: dict
:param caller_metadata: caller-assigned metadata about the operation
"""
results = None
"""List of transcriptions from the speech-to-text process."""
def _update_state(self, operation_pb):
"""Update the state of the current object based on operation.
This mostly does what the base class does, but all populates
results.
:type operation_pb:
:class:`~google.longrunning.operations_pb2.Operation`
:param operation_pb: Protobuf to be parsed.
:raises ValueError: If there is more than one entry in ``results``.
"""
super(Operation, self)._update_state(operation_pb)
result_type = operation_pb.WhichOneof('result')
if result_type != 'response':
return
# Retrieve the results.
# If there were no results at all, raise an exception.
pb_results = self.response.results
if len(pb_results) == 0:
raise ValueError('Speech API returned no results.')
# Save the results to the Operation object.
self.results = []
for pb_result in pb_results:
self.results.append(Result.from_pb(pb_result))