Skip to content
This repository was archived by the owner on Mar 26, 2026. It is now read-only.

Commit d64fc70

Browse files
committed
fix: async operation samples
1 parent 535d654 commit d64fc70

2 files changed

Lines changed: 81 additions & 12 deletions

File tree

gapic/templates/examples/feature_fragments.j2

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ request=request
230230
{# Note: this doesn't deal with enums or unions #}
231231
{# LROs return operation objects and paged requests return pager objects #}
232232
{% if transport == "grpc-async" and calling_form not in
233-
[calling_form_enum.LongRunningRequestPromise, calling_form_enum.RequestPagedAll] %}
233+
[calling_form_enum.RequestPaged, calling_form_enum.RequestPagedAll] %}
234234
await{{ " "}}
235235
{%- endif -%}
236236
{% if calling_form in [calling_form_enum.RequestStreamingBidi,
@@ -242,13 +242,6 @@ client.{{ render_method_name(sample)|trim }}({{ render_request_params_unary(samp
242242
{% endif %}
243243
{% endmacro %}
244244

245-
{% macro operation_text(transport) %}
246-
{% if transport == "grpc-async" %}
247-
(await operation)
248-
{% else %}
249-
operation
250-
{% endif %}
251-
{% endmacro %}
252245

253246
{# Setting up the method invocation is the responsibility of the caller: #}
254247
{# it's just easier to set up client side streaming and other things from outside this macro. #}
@@ -294,9 +287,7 @@ operation = {{ method_invocation_text|trim }}
294287

295288
print("Waiting for operation to complete...")
296289

297-
{% with operation_text = operation_text(transport) %}
298-
response = {{ operation_text|trim }}.result()
299-
{% endwith %}
290+
response = {% if transport == "grpc-async" %}await {% endif %}operation.result()
300291

301292
# Handle the response
302293
{% for statement in response_statements %}

tests/unit/samplegen/test_template.py

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -957,7 +957,7 @@ def test_render_calling_form_longrunning_async():
957957
958958
print("Waiting for operation to complete...")
959959
960-
response = (await operation).result()
960+
response = await operation.result()
961961
962962
# Handle the response
963963
print("Test print statement")
@@ -1020,6 +1020,84 @@ def test_render_method_call_basic_async():
10201020
)
10211021

10221022

1023+
def test_render_method_call_lro_async():
1024+
check_template(
1025+
"""
1026+
{% import "feature_fragments.j2" as frags %}
1027+
{{ frags.render_method_call({"rpc": "CategorizeMollusc",
1028+
"request": request,
1029+
"is_internal": False,
1030+
},
1031+
calling_form, calling_form_enum, transport) }}
1032+
""",
1033+
"""
1034+
await client.categorize_mollusc(request=request)
1035+
""",
1036+
request=samplegen.FullRequest(
1037+
request_list=[
1038+
samplegen.TransformedRequest(base="video", body=True, single=None),
1039+
samplegen.TransformedRequest(base="audio", body=True, single=None),
1040+
samplegen.TransformedRequest(base="guess", body=True, single=None),
1041+
],
1042+
),
1043+
calling_form_enum=CallingForm,
1044+
calling_form=CallingForm.LongRunningRequestPromise,
1045+
transport="grpc-async",
1046+
)
1047+
1048+
1049+
def test_render_method_call_paged_async():
1050+
check_template(
1051+
"""
1052+
{% import "feature_fragments.j2" as frags %}
1053+
{{ frags.render_method_call({"rpc": "CategorizeMollusc",
1054+
"request": request,
1055+
"is_internal": False,
1056+
},
1057+
calling_form, calling_form_enum, transport) }}
1058+
""",
1059+
"""
1060+
client.categorize_mollusc(request=request)
1061+
""",
1062+
request=samplegen.FullRequest(
1063+
request_list=[
1064+
samplegen.TransformedRequest(base="video", body=True, single=None),
1065+
samplegen.TransformedRequest(base="audio", body=True, single=None),
1066+
samplegen.TransformedRequest(base="guess", body=True, single=None),
1067+
],
1068+
),
1069+
calling_form_enum=CallingForm,
1070+
calling_form=CallingForm.RequestPaged,
1071+
transport="grpc-async",
1072+
)
1073+
1074+
1075+
def test_render_method_call_paged_all_async():
1076+
check_template(
1077+
"""
1078+
{% import "feature_fragments.j2" as frags %}
1079+
{{ frags.render_method_call({"rpc": "CategorizeMollusc",
1080+
"request": request,
1081+
"is_internal": False,
1082+
},
1083+
calling_form, calling_form_enum, transport) }}
1084+
""",
1085+
"""
1086+
client.categorize_mollusc(request=request)
1087+
""",
1088+
request=samplegen.FullRequest(
1089+
request_list=[
1090+
samplegen.TransformedRequest(base="video", body=True, single=None),
1091+
samplegen.TransformedRequest(base="audio", body=True, single=None),
1092+
samplegen.TransformedRequest(base="guess", body=True, single=None),
1093+
],
1094+
),
1095+
calling_form_enum=CallingForm,
1096+
calling_form=CallingForm.RequestPagedAll,
1097+
transport="grpc-async",
1098+
)
1099+
1100+
10231101
def test_render_method_call_basic_flattenable():
10241102
check_template(
10251103
"""

0 commit comments

Comments
 (0)