Skip to content

Commit 04e131d

Browse files
committed
Using WhichOneof when parsing a Value protobuf.
1 parent 97d6e87 commit 04e131d

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

gcloud/datastore/helpers.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -349,32 +349,33 @@ def _get_value_from_value_pb(value_pb):
349349
:returns: The value provided by the Protobuf.
350350
"""
351351
result = None
352-
# Message field (google.protobuf.Timestamp)
353-
if value_pb.HasField('timestamp_value'):
352+
value_type = value_pb.WhichOneof('value_type')
353+
354+
if value_type == 'timestamp_value':
354355
result = _pb_timestamp_to_datetime(value_pb.timestamp_value)
355356

356-
elif value_pb.HasField('key_value'): # Message field (Key)
357+
elif value_type == 'key_value':
357358
result = key_from_protobuf(value_pb.key_value)
358359

359-
elif value_pb.HasField('boolean_value'): # Simple field (bool)
360+
elif value_type == 'boolean_value':
360361
result = value_pb.boolean_value
361362

362-
elif value_pb.HasField('double_value'): # Simple field (double)
363+
elif value_type == 'double_value':
363364
result = value_pb.double_value
364365

365-
elif value_pb.HasField('integer_value'): # Simple field (int64)
366+
elif value_type == 'integer_value':
366367
result = value_pb.integer_value
367368

368-
elif value_pb.HasField('string_value'): # Simple field (string)
369+
elif value_type == 'string_value':
369370
result = value_pb.string_value
370371

371-
elif value_pb.HasField('blob_value'): # Simple field (bytes)
372+
elif value_type == 'blob_value':
372373
result = value_pb.blob_value
373374

374-
elif value_pb.HasField('entity_value'): # Message field (Entity)
375+
elif value_type == 'entity_value':
375376
result = entity_from_protobuf(value_pb.entity_value)
376377

377-
elif value_pb.array_value.values:
378+
elif value_type == 'array_value':
378379
result = [_get_value_from_value_pb(value)
379380
for value in value_pb.array_value.values]
380381

0 commit comments

Comments
 (0)