diff --git a/packages/gapic-generator/gapic/samplegen/samplegen.py b/packages/gapic-generator/gapic/samplegen/samplegen.py index ada7dab13026..6f103225ea04 100644 --- a/packages/gapic-generator/gapic/samplegen/samplegen.py +++ b/packages/gapic-generator/gapic/samplegen/samplegen.py @@ -318,6 +318,7 @@ def preprocess_sample(sample, api_schema: api.API, rpc: wrappers.Method): sample["client_name"] = ( service.async_client_name if is_async else service.client_name ) + sample["client_method_name"] = rpc.client_method_name # the MessageType of the request object passed to the rpc e.g., `ListRequest` sample["request_type"] = rpc.input diff --git a/packages/gapic-generator/gapic/templates/examples/feature_fragments.j2 b/packages/gapic-generator/gapic/templates/examples/feature_fragments.j2 index 27271881f590..40786ef5946b 100644 --- a/packages/gapic-generator/gapic/templates/examples/feature_fragments.j2 +++ b/packages/gapic-generator/gapic/templates/examples/feature_fragments.j2 @@ -297,10 +297,11 @@ response = {% if transport == "grpc-async" %}await {% endif %}operation.result() {% endmacro %} {% macro render_method_name(sample) %} -{% if sample.is_internal %} -_{{ sample.rpc|snake_case }} +{% set name = (sample.client_method_name|default(sample.rpc, true))|snake_case %} +{% if sample.is_internal and not name.startswith('_') %} +_{{ name }} {% else %} -{{ sample.rpc|snake_case }} +{{ name }} {% endif %} {% endmacro %} diff --git a/packages/gapic-generator/tests/snippetgen/goldens/mollusca_v1_generated_snippets_import_async.py b/packages/gapic-generator/tests/snippetgen/goldens/mollusca_v1_generated_snippets_import_async.py new file mode 100644 index 000000000000..5e9020da240f --- /dev/null +++ b/packages/gapic-generator/tests/snippetgen/goldens/mollusca_v1_generated_snippets_import_async.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Generated code. DO NOT EDIT! +# +# Snippet for Import +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install animalia-mollusca + + +# [START mollusca_v1_generated_Snippets_Import_async] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from animalia import mollusca_v1 + + +async def sample_import(): + # Create a client + client = mollusca_v1.SnippetsAsyncClient() + + # Initialize request argument(s) + my_message = mollusca_v1.MessageWithNesting() + my_message.message.required_string = "required_string_value" + my_message.my_int = 656 + + request = mollusca_v1.SignatureRequest( + my_string="my_string_value", + my_int=656, + my_bool=True, + my_message=my_message, + single_enum="DEFAULT", + ) + + # Make the request + response = await client.import_(request=request) + + # Handle the response + print(response) + +# [END mollusca_v1_generated_Snippets_Import_async] diff --git a/packages/gapic-generator/tests/snippetgen/goldens/mollusca_v1_generated_snippets_import_sync.py b/packages/gapic-generator/tests/snippetgen/goldens/mollusca_v1_generated_snippets_import_sync.py new file mode 100644 index 000000000000..7112040ed10b --- /dev/null +++ b/packages/gapic-generator/tests/snippetgen/goldens/mollusca_v1_generated_snippets_import_sync.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Generated code. DO NOT EDIT! +# +# Snippet for Import +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install animalia-mollusca + + +# [START mollusca_v1_generated_Snippets_Import_sync] +# This snippet has been automatically generated and should be regarded as a +# code template only. +# It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in: +# https://googleapis.dev/python/google-api-core/latest/client_options.html +from animalia import mollusca_v1 + + +def sample_import(): + # Create a client + client = mollusca_v1.SnippetsClient() + + # Initialize request argument(s) + my_message = mollusca_v1.MessageWithNesting() + my_message.message.required_string = "required_string_value" + my_message.my_int = 656 + + request = mollusca_v1.SignatureRequest( + my_string="my_string_value", + my_int=656, + my_bool=True, + my_message=my_message, + single_enum="DEFAULT", + ) + + # Make the request + response = client.import_(request=request) + + # Handle the response + print(response) + +# [END mollusca_v1_generated_Snippets_Import_sync] diff --git a/packages/gapic-generator/tests/snippetgen/snippets.proto b/packages/gapic-generator/tests/snippetgen/snippets.proto index d5ead4ed336c..ed56ed886f04 100644 --- a/packages/gapic-generator/tests/snippetgen/snippets.proto +++ b/packages/gapic-generator/tests/snippetgen/snippets.proto @@ -57,6 +57,8 @@ service Snippets { rpc OneOfMethod(OneOfRequest) returns (Response); rpc OneOfMethodRequiredField(OneOfRequestWithRequiredField) returns (Response); + + rpc Import(SignatureRequest) returns (Response); } enum Enum { diff --git a/packages/gapic-generator/tests/unit/common_types.py b/packages/gapic-generator/tests/unit/common_types.py index 4ea17c64296a..dd84cf16e01a 100644 --- a/packages/gapic-generator/tests/unit/common_types.py +++ b/packages/gapic-generator/tests/unit/common_types.py @@ -45,7 +45,8 @@ class DummyMethod: @property def client_method_name(self): - method_wrapper = make_method(name=self.name, is_internal=self.is_internal) + name = self.name if isinstance(self.name, str) else "" + method_wrapper = make_method(name=name, is_internal=self.is_internal) return method_wrapper.client_method_name