Skip to content

Commit b9e2c62

Browse files
committed
fix(api-core): handle dictionary requests with None value in setup_request_id
1 parent 77f97c8 commit b9e2c62

2 files changed

Lines changed: 5 additions & 1 deletion

File tree

packages/google-api-core/google/api_core/gapic_v1/requests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def setup_request_id(
5252

5353
if isinstance(request, dict):
5454
if is_proto3_optional:
55-
if field_name not in request:
55+
if field_name not in request or request[field_name] is None:
5656
request[field_name] = str(uuid.uuid4())
5757
elif not request.get(field_name):
5858
request[field_name] = str(uuid.uuid4())

packages/google-api-core/tests/unit/gapic/test_requests.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,10 @@ def __contains__(self, key):
6969
(MockValueErrorRequest(), True, "uuid"),
7070
# Dict cases
7171
({}, True, "uuid"),
72+
({"request_id": None}, True, "uuid"),
7273
({"request_id": "already_set"}, True, "already_set"),
7374
({"request_id": ""}, False, "uuid"),
75+
({"request_id": None}, False, "uuid"),
7476
({"request_id": "already_set"}, False, "already_set"),
7577
# None case
7678
(None, True, "none"),
@@ -84,8 +86,10 @@ def __contains__(self, key):
8486
"proto3_optional_already_in_request_proto",
8587
"value_error_fallback",
8688
"dict_proto3_optional_not_in_request",
89+
"dict_proto3_optional_value_none",
8790
"dict_proto3_optional_already_in_request",
8891
"dict_non_proto3_optional_empty",
92+
"dict_non_proto3_optional_value_none",
8993
"dict_non_proto3_optional_already_set",
9094
"none_request",
9195
],

0 commit comments

Comments
 (0)