Skip to content

Commit ddaa81d

Browse files
authored
Merge pull request googleapis#3094 from dhermes/fix-2746-lookup
Making datastore Connection.lookup() return low-level protobuf.
2 parents 76520a7 + 610f7b3 commit ddaa81d

4 files changed

Lines changed: 148 additions & 104 deletions

File tree

datastore/google/cloud/datastore/_http.py

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -326,23 +326,14 @@ def lookup(self, project, key_pbs,
326326
the given transaction. Incompatible with
327327
``eventual==True``.
328328
329-
:rtype: tuple
330-
:returns: A triple of (``results``, ``missing``, ``deferred``) where
331-
both ``results`` and ``missing`` are lists of
332-
:class:`.entity_pb2.Entity`
333-
and ``deferred`` is a list of
334-
:class:`.entity_pb2.Key`.
329+
:rtype: :class:`.datastore_pb2.LookupResponse`
330+
:returns: The returned protobuf for the lookup request.
335331
"""
336332
lookup_request = _datastore_pb2.LookupRequest()
337333
_set_read_options(lookup_request, eventual, transaction_id)
338334
_add_keys_to_request(lookup_request.keys, key_pbs)
339335

340-
lookup_response = self._datastore_api.lookup(project, lookup_request)
341-
342-
results = [result.entity for result in lookup_response.found]
343-
missing = [result.entity for result in lookup_response.missing]
344-
345-
return results, missing, list(lookup_response.deferred)
336+
return self._datastore_api.lookup(project, lookup_request)
346337

347338
def run_query(self, project, query_pb, namespace=None,
348339
eventual=False, transaction_id=None):

datastore/google/cloud/datastore/client.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,28 +116,29 @@ def _extended_lookup(connection, project, key_pbs,
116116
while loop_num < _MAX_LOOPS: # loop against possible deferred.
117117
loop_num += 1
118118

119-
results_found, missing_found, deferred_found = connection.lookup(
119+
lookup_response = connection.lookup(
120120
project=project,
121121
key_pbs=key_pbs,
122122
eventual=eventual,
123123
transaction_id=transaction_id,
124124
)
125125

126-
results.extend(results_found)
126+
# Accumulate the new results.
127+
results.extend(result.entity for result in lookup_response.found)
127128

128129
if missing is not None:
129-
missing.extend(missing_found)
130+
missing.extend(result.entity for result in lookup_response.missing)
130131

131132
if deferred is not None:
132-
deferred.extend(deferred_found)
133+
deferred.extend(lookup_response.deferred)
133134
break
134135

135-
if len(deferred_found) == 0:
136+
if len(lookup_response.deferred) == 0:
136137
break
137138

138139
# We have deferred keys, and the user didn't ask to know about
139140
# them, so retry (but only with the deferred ones).
140-
key_pbs = deferred_found
141+
key_pbs = lookup_response.deferred
141142

142143
return results
143144

0 commit comments

Comments
 (0)