@@ -233,17 +233,8 @@ def lookup(self, dataset_id, key_pbs,
233233 if deferred is not None and deferred != []:
234234 raise ValueError ('deferred must be None or an empty list' )
235235
236- transaction = self .transaction ()
237- if eventual and transaction :
238- raise ValueError ('eventual must be False when in a transaction' )
239-
240236 lookup_request = datastore_pb .LookupRequest ()
241-
242- opts = lookup_request .read_options
243- if eventual :
244- opts .read_consistency = datastore_pb .ReadOptions .EVENTUAL
245- elif transaction :
246- opts .transaction = transaction
237+ self ._set_read_options (lookup_request , eventual )
247238
248239 single_key = isinstance (key_pbs , datastore_pb .Key )
249240
@@ -270,36 +261,6 @@ def lookup(self, dataset_id, key_pbs,
270261
271262 return results
272263
273- def _lookup (self , lookup_request , dataset_id , stop_on_deferred ):
274- """Repeat lookup until all keys found (unless stop requested).
275-
276- Helper method for ``lookup()``.
277- """
278- results = []
279- missing = []
280- deferred = []
281- while True : # loop against possible deferred.
282- lookup_response = self ._rpc (dataset_id , 'lookup' , lookup_request ,
283- datastore_pb .LookupResponse )
284-
285- results .extend (
286- [result .entity for result in lookup_response .found ])
287-
288- missing .extend (
289- [result .entity for result in lookup_response .missing ])
290-
291- if stop_on_deferred :
292- deferred .extend ([key for key in lookup_response .deferred ])
293- break
294-
295- if not lookup_response .deferred :
296- break
297-
298- # We have deferred keys, and the user didn't ask to know about
299- # them, so retry (but only with the deferred ones).
300- _copy_deferred_keys (lookup_request , lookup_response )
301- return results , missing , deferred
302-
303264 def run_query (self , dataset_id , query_pb , namespace = None , eventual = False ):
304265 """Run a query on the Cloud Datastore.
305266
@@ -351,16 +312,8 @@ def run_query(self, dataset_id, query_pb, namespace=None, eventual=False):
351312 consistency. If the connection has a current
352313 transaction, this value *must* be false.
353314 """
354- transaction = self .transaction ()
355- if eventual and transaction :
356- raise ValueError ('eventual must be False when in a transaction' )
357-
358315 request = datastore_pb .RunQueryRequest ()
359- opts = request .read_options
360- if eventual :
361- opts .read_consistency = datastore_pb .ReadOptions .EVENTUAL
362- elif transaction :
363- opts .transaction = transaction
316+ self ._set_read_options (request , eventual )
364317
365318 if namespace :
366319 request .partition_id .namespace = namespace
@@ -563,6 +516,51 @@ def delete_entities(self, dataset_id, key_pbs):
563516
564517 return True
565518
519+ def _lookup (self , lookup_request , dataset_id , stop_on_deferred ):
520+ """Repeat lookup until all keys found (unless stop requested).
521+
522+ Helper method for ``lookup()``.
523+ """
524+ results = []
525+ missing = []
526+ deferred = []
527+ while True : # loop against possible deferred.
528+ lookup_response = self ._rpc (dataset_id , 'lookup' , lookup_request ,
529+ datastore_pb .LookupResponse )
530+
531+ results .extend (
532+ [result .entity for result in lookup_response .found ])
533+
534+ missing .extend (
535+ [result .entity for result in lookup_response .missing ])
536+
537+ if stop_on_deferred :
538+ deferred .extend ([key for key in lookup_response .deferred ])
539+ break
540+
541+ if not lookup_response .deferred :
542+ break
543+
544+ # We have deferred keys, and the user didn't ask to know about
545+ # them, so retry (but only with the deferred ones).
546+ _copy_deferred_keys (lookup_request , lookup_response )
547+ return results , missing , deferred
548+
549+ def _set_read_options (self , request , eventual ):
550+ """Validate rules for read options, and assign to the request.
551+
552+ Helper method for ``lookup()`` and ``run_query``.
553+ """
554+ transaction = self .transaction ()
555+ if eventual and transaction :
556+ raise ValueError ('eventual must be False when in a transaction' )
557+
558+ opts = request .read_options
559+ if eventual :
560+ opts .read_consistency = datastore_pb .ReadOptions .EVENTUAL
561+ elif transaction :
562+ opts .transaction = transaction
563+
566564
567565def _copy_deferred_keys (lookup_request , lookup_response ):
568566 """Clear requested keys and copy deferred keys back in.
0 commit comments