diff --git a/gcloud/datastore/_helpers.py b/gcloud/datastore/_helpers.py index 600ca534b4b4..706d24c3758c 100644 --- a/gcloud/datastore/_helpers.py +++ b/gcloud/datastore/_helpers.py @@ -112,6 +112,9 @@ def _get_value_from_value_pb(value_pb): elif value_pb.HasField('entity_value'): return Entity.from_protobuf(value_pb.entity_value) + elif value_pb.list_value: + return [_get_value_from_value_pb(x) for x in value_pb.list_value] + else: return None diff --git a/gcloud/datastore/test__helpers.py b/gcloud/datastore/test__helpers.py index 4a7e58c8627b..52538301ee18 100644 --- a/gcloud/datastore/test__helpers.py +++ b/gcloud/datastore/test__helpers.py @@ -166,6 +166,18 @@ def test_entity(self): self.assertTrue(isinstance(entity, Entity)) self.assertEqual(entity['foo'], 'Foo') + def test_list(self): + from gcloud.datastore.datastore_v1_pb2 import Value + + pb = Value() + list_pb = pb.list_value + item_pb = list_pb.add() + item_pb.string_value = 'Foo' + item_pb = list_pb.add() + item_pb.string_value = 'Bar' + items = self._callFUT(pb) + self.assertEqual(items, ['Foo', 'Bar']) + def test_unknown(self): from gcloud.datastore.datastore_v1_pb2 import Value