Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commited92e8e

Browse files
fix: backwards-compatibility for previous meaning format (#603)
1 parenta7df080 commited92e8e

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed

‎google/cloud/datastore/helpers.py‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"""
1919

2020
importdatetime
21+
importitertools
2122

2223
fromgoogle.protobufimportstruct_pb2
2324
fromgoogle.typeimportlatlng_pb2
@@ -182,7 +183,15 @@ def _set_pb_meaning_from_entity(entity, name, value, value_pb, is_list=False):
182183
return
183184
elifis_list:
184185
# for lists, set meaning on the root pb and on each sub-element
185-
root_meaning,sub_meaning_list=meaning
186+
ifisinstance(meaning,tuple):
187+
root_meaning,sub_meaning_list=meaning
188+
else:
189+
# if meaning isn't a tuple, fall back to pre-v2.20.2 meaning format
190+
root_meaning=None
191+
ifisinstance(meaning,list):
192+
sub_meaning_list=meaning
193+
else:
194+
sub_meaning_list=itertools.repeat(meaning)
186195
ifroot_meaningisnotNone:
187196
value_pb.meaning=root_meaning
188197
ifsub_meaning_list:

‎tests/unit/test_helpers.py‎

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1318,6 +1318,61 @@ def test__set_pb_meaning_w_value_unset(orig_meaning):
13181318
assertvalue_pb.meaning==orig_meaning
13191319

13201320

1321+
deftest__set_pb_meaning_w_list_and_single_value():
1322+
"""
1323+
v2.20.2 uses a tuple to represent list meanings (https://github.com/googleapis/python-datastore/pull/575)
1324+
1325+
This check ensures _set_pb_meaning_from_entity is backwards
1326+
compatible with the old meaning style, still used by python-ndb
1327+
"""
1328+
fromgoogle.cloud.datastore_v1.typesimportentityasentity_pb2
1329+
fromgoogle.cloud.datastore.helpersimport_set_pb_meaning_from_entity
1330+
fromgoogle.cloud.datastore.entityimportEntity
1331+
1332+
orig_root_meaning=1
1333+
updated_meaning=22
1334+
orig_pb=entity_pb2.Entity()
1335+
value_pb=orig_pb._pb.properties.get_or_create("value")
1336+
value_pb.meaning=orig_root_meaning
1337+
sub_value_pb1=value_pb.array_value.values.add()
1338+
sub_value_pb2=value_pb.array_value.values.add()
1339+
1340+
entity=Entity(key="key")
1341+
entity._meanings= {"value": (updated_meaning,None)}
1342+
_set_pb_meaning_from_entity(entity,"value",None,value_pb,is_list=True)
1343+
assertvalue_pb.meaning==orig_root_meaning
1344+
assertsub_value_pb1.meaning==updated_meaning
1345+
assertsub_value_pb2.meaning==updated_meaning
1346+
1347+
1348+
deftest__set_pb_meaning_w_list_and_list():
1349+
"""
1350+
v2.20.2 uses a tuple to represent list meanings (https://github.com/googleapis/python-datastore/pull/575)
1351+
1352+
This check ensures _set_pb_meaning_from_entity is backwards
1353+
compatible with the old meaning style, still used by python-ndb
1354+
"""
1355+
fromgoogle.cloud.datastore_v1.typesimportentityasentity_pb2
1356+
fromgoogle.cloud.datastore.helpersimport_set_pb_meaning_from_entity
1357+
fromgoogle.cloud.datastore.entityimportEntity
1358+
1359+
orig_root_meaning=1
1360+
updated_meaning_1=12
1361+
updated_meaning_2=4
1362+
orig_pb=entity_pb2.Entity()
1363+
value_pb=orig_pb._pb.properties.get_or_create("value")
1364+
value_pb.meaning=orig_root_meaning
1365+
sub_value_pb1=value_pb.array_value.values.add()
1366+
sub_value_pb2=value_pb.array_value.values.add()
1367+
1368+
entity=Entity(key="key")
1369+
entity._meanings= {"value": ([updated_meaning_1,updated_meaning_2],None)}
1370+
_set_pb_meaning_from_entity(entity,"value",None,value_pb,is_list=True)
1371+
assertvalue_pb.meaning==orig_root_meaning
1372+
assertsub_value_pb1.meaning==updated_meaning_1
1373+
assertsub_value_pb2.meaning==updated_meaning_2
1374+
1375+
13211376
deftest__array_w_meaning_end_to_end():
13221377
"""
13231378
Test proto->entity->proto with an array with a meaning field

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp