Skip to content

Commit c5218d8

Browse files
committed
fix(templates): resolve UndefinedError by moving auto_populated_fields check to Jinja template namespace using api.all_method_settings
1 parent 4f6baaa commit c5218d8

4 files changed

Lines changed: 17 additions & 16 deletions

File tree

packages/gapic-generator/gapic/schema/wrappers.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2413,17 +2413,6 @@ def operation_polling_method(self) -> Optional[Method]:
24132413
def is_internal(self) -> bool:
24142414
return any(m.is_internal for m in self.methods.values())
24152415

2416-
@utils.cached_property
2417-
def has_auto_populated_fields(self) -> bool:
2418-
"""Returns True if any method in this service has auto-populated fields (e.g. AIP-4235 request_id)."""
2419-
return any(
2420-
bool(
2421-
self.api.all_method_settings.get(m.meta.address.proto)
2422-
and self.api.all_method_settings[m.meta.address.proto].auto_populated_fields
2423-
)
2424-
for m in self.methods.values()
2425-
)
2426-
24272416
@cached_proto_context
24282417
def with_context(
24292418
self,

packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/async_client.py.j2

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,14 @@ from {{package_path}} import gapic_version as package_version
1818
from google.api_core.client_options import ClientOptions
1919
from google.api_core import exceptions as core_exceptions
2020
from google.api_core import gapic_v1
21-
{% if service.has_auto_populated_fields %}
21+
{% set has_auto_populated_fields = namespace(value=false) %}
22+
{% for method in service.methods.values() %}
23+
{% set method_settings = api.all_method_settings.get(method.meta.address.proto) %}
24+
{% if method_settings and method_settings.auto_populated_fields %}
25+
{% set has_auto_populated_fields.value = true %}
26+
{% endif %}
27+
{% endfor %}
28+
{% if has_auto_populated_fields.value %}
2229
from {{package_path}}._compat import setup_request_id
2330
{% endif %}
2431
from google.api_core import retry_async as retries

packages/gapic-generator/gapic/templates/%namespace/%name_%version/%sub/services/%service/client.py.j2

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,14 @@ from google.api_core import exceptions as core_exceptions
2727
from google.api_core import extended_operation
2828
{% endif %}
2929
from google.api_core import gapic_v1
30-
{% if service.has_auto_populated_fields %}
30+
{% set has_auto_populated_fields = namespace(value=false) %}
31+
{% for method in service.methods.values() %}
32+
{% set method_settings = api.all_method_settings.get(method.meta.address.proto) %}
33+
{% if method_settings and method_settings.auto_populated_fields %}
34+
{% set has_auto_populated_fields.value = true %}
35+
{% endif %}
36+
{% endfor %}
37+
{% if has_auto_populated_fields.value %}
3138
from {{package_path}}._compat import setup_request_id
3239
{% endif %}
3340
from google.api_core import retry as retries

packages/gapic-generator/tests/unit/schema/wrappers/test_service.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -751,7 +751,5 @@ def test_resource_messages_raises_on_malformed_typeless_resource():
751751
_ = service.resource_messages
752752

753753

754-
def test_service_has_auto_populated_fields():
755-
service = make_service(name="ThingDoer")
756-
assert not service.has_auto_populated_fields
754+
757755

0 commit comments

Comments
 (0)