Skip to content

Commit 060ea9d

Browse files
committed
Remove datastore.helpers import in connection.
Done via: - Moving `_add_keys_to_request` definition to connection module - Removing only other use (in `batch`, was not a list of keys) - Copying `_prepare_key_for_request` from helpers (googleapis#528 would be nice, since we could just remove `_prepare_key_for_request` all together)
1 parent 4ce0753 commit 060ea9d

3 files changed

Lines changed: 40 additions & 19 deletions

File tree

gcloud/datastore/batch.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,8 @@ def delete(self, key):
189189
if not _dataset_ids_equal(self._dataset_id, key.dataset_id):
190190
raise ValueError("Key must be from same dataset as batch")
191191

192-
key_pb = key.to_protobuf()
193-
helpers._add_keys_to_request(self.mutation.delete, [key_pb])
192+
key_pb = helpers._prepare_key_for_request(key.to_protobuf())
193+
self.mutation.delete.add().CopyFrom(key_pb)
194194

195195
def begin(self):
196196
"""No-op

gcloud/datastore/connection.py

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from gcloud import connection
2020
from gcloud.exceptions import make_exception
2121
from gcloud.datastore import _datastore_v1_pb2 as datastore_pb
22-
from gcloud.datastore import helpers
2322

2423

2524
_GCD_HOST_ENV_VAR_NAME = 'DATASTORE_HOST'
@@ -183,7 +182,7 @@ def lookup(self, dataset_id, key_pbs,
183182
"""
184183
lookup_request = datastore_pb.LookupRequest()
185184
_set_read_options(lookup_request, eventual, transaction_id)
186-
helpers._add_keys_to_request(lookup_request.key, key_pbs)
185+
_add_keys_to_request(lookup_request.key, key_pbs)
187186

188187
lookup_response = self._rpc(dataset_id, 'lookup', lookup_request,
189188
datastore_pb.LookupResponse)
@@ -363,7 +362,7 @@ def allocate_ids(self, dataset_id, key_pbs):
363362
:returns: An equal number of keys, with IDs filled in by the backend.
364363
"""
365364
request = datastore_pb.AllocateIdsRequest()
366-
helpers._add_keys_to_request(request.key, key_pbs)
365+
_add_keys_to_request(request.key, key_pbs)
367366
# Nothing to do with this response, so just execute the method.
368367
response = self._rpc(dataset_id, 'allocateIds', request,
369368
datastore_pb.AllocateIdsResponse)
@@ -386,3 +385,39 @@ def _set_read_options(request, eventual, transaction_id):
386385
opts.read_consistency = datastore_pb.ReadOptions.EVENTUAL
387386
elif transaction_id:
388387
opts.transaction = transaction_id
388+
389+
390+
def _prepare_key_for_request(key_pb): # pragma: NO COVER copied from helpers
391+
"""Add protobuf keys to a request object.
392+
393+
.. note::
394+
This is copied from `helpers` to avoid a cycle:
395+
_implicit_environ -> connection -> helpers -> key -> _implicit_environ
396+
397+
:type key_pb: :class:`gcloud.datastore._datastore_v1_pb2.Key`
398+
:param key_pb: A key to be added to a request.
399+
400+
:rtype: :class:`gcloud.datastore._datastore_v1_pb2.Key`
401+
:returns: A key which will be added to a request. It will be the
402+
original if nothing needs to be changed.
403+
"""
404+
if key_pb.partition_id.HasField('dataset_id'):
405+
new_key_pb = datastore_pb.Key()
406+
new_key_pb.CopyFrom(key_pb)
407+
new_key_pb.partition_id.ClearField('dataset_id')
408+
key_pb = new_key_pb
409+
return key_pb
410+
411+
412+
def _add_keys_to_request(request_field_pb, key_pbs):
413+
"""Add protobuf keys to a request object.
414+
415+
:type request_field_pb: `RepeatedCompositeFieldContainer`
416+
:param request_field_pb: A repeated proto field that contains keys.
417+
418+
:type key_pbs: list of :class:`gcloud.datastore._datastore_v1_pb2.Key`
419+
:param key_pbs: The keys to add to a request.
420+
"""
421+
for key_pb in key_pbs:
422+
key_pb = _prepare_key_for_request(key_pb)
423+
request_field_pb.add().CopyFrom(key_pb)

gcloud/datastore/helpers.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -308,17 +308,3 @@ def _prepare_key_for_request(key_pb):
308308
new_key_pb.partition_id.ClearField('dataset_id')
309309
key_pb = new_key_pb
310310
return key_pb
311-
312-
313-
def _add_keys_to_request(request_field_pb, key_pbs):
314-
"""Add protobuf keys to a request object.
315-
316-
:type request_field_pb: `RepeatedCompositeFieldContainer`
317-
:param request_field_pb: A repeated proto field that contains keys.
318-
319-
:type key_pbs: list of :class:`gcloud.datastore._datastore_v1_pb2.Key`
320-
:param key_pbs: The keys to add to a request.
321-
"""
322-
for key_pb in key_pbs:
323-
key_pb = _prepare_key_for_request(key_pb)
324-
request_field_pb.add().CopyFrom(key_pb)

0 commit comments

Comments
 (0)