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

Commit 06b2000

Browse files
Merge branch 'main' into unpin_mypy
2 parents e5ee739 + bb6d959 commit 06b2000

87 files changed

Lines changed: 283 additions & 272 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

gapic/schema/imp.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,21 @@ def __eq__(self, other) -> bool:
2626
return self.package == other.package and self.module == other.module
2727

2828
def __str__(self) -> str:
29+
# Determine if we need to suppress type checking for this import.
30+
# We do this for protobuf generated files (_pb2) and api_core
31+
# internals where type information might be missing or incomplete.
32+
needs_type_ignore = self.module.endswith("_pb2") or "api_core" in self.package
33+
if needs_type_ignore:
34+
# Use 'import absolute.path as module' syntax to prevent Ruff/isort
35+
# from combining this with other imports. This ensures the
36+
# '# type: ignore' comment remains effective for this specific import.
37+
full_module = ".".join(self.package + (self.module,))
38+
alias = self.alias or self.module
39+
return f"import {full_module} as {alias} # type: ignore"
40+
2941
answer = f"import {self.module}"
3042
if self.package:
3143
answer = f"from {'.'.join(self.package)} {answer}"
3244
if self.alias:
3345
answer += f" as {self.alias}"
34-
if self.module.endswith("_pb2") or "api_core" in self.package:
35-
answer += " # type: ignore"
3646
return answer

gapic/templates/%namespace/%name_%version/%sub/services/%service/_shared_macros.j2

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,9 @@ def _get_http_options():
196196
body_spec (str): The http options body i.e. method.http_options[0].body
197197
method_name (str): The method name.
198198
service: The service.
199-
is_async (bool): Used to determine the code path i.e. whether for sync or async call. #}
200-
{% macro rest_call_method_common(body_spec, method_name, service, is_async=False, is_proto_plus_type=False) %}
199+
is_async (bool): Used to determine the code path i.e. whether for sync or async call.
200+
is_request_message_proto_plus_type (bool): Used to determine whether the request message is a proto-plus type. #}
201+
{% macro rest_call_method_common(body_spec, method_name, service, is_async=False, is_request_message_proto_plus_type=False) %}
201202
{% set service_name = service.name %}
202203
{% set await_prefix = "await " if is_async else "" %}
203204
{% set async_class_prefix = "Async" if is_async else "" %}
@@ -218,7 +219,7 @@ def _get_http_options():
218219
request_url = "{host}{uri}".format(host=self._host, uri=transcoded_request['uri'])
219220
method = transcoded_request['method']
220221
try:
221-
request_payload = {% if is_proto_plus_type %}type(request).to_json(request){% else %}json_format.MessageToJson(request){% endif %}
222+
request_payload = {% if is_request_message_proto_plus_type %}type(request).to_json(request){% else %}json_format.MessageToJson(request){% endif %}
222223

223224
except:
224225
{# TODO(https://github.com/googleapis/gapic-generator-python/issues/2282): Remove try/except and correctly parse request payload. #}

gapic/templates/%namespace/%name_%version/%sub/services/%service/transports/rest.py.j2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ class {{service.name}}RestTransport(_Base{{ service.name }}RestTransport):
240240
{% endif %}
241241
"""
242242

243-
{{ shared_macros.rest_call_method_common(body_spec, method.name, service, False, method.output.ident.is_proto_plus_type)|indent(8) }}
243+
{{ shared_macros.rest_call_method_common(body_spec, method.name, service, False, method.input.ident.is_proto_plus_type)|indent(8) }}
244244

245245
{% if not method.void %}
246246
# Return the response

gapic/templates/%namespace/%name_%version/%sub/services/%service/transports/rest_asyncio.py.j2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ class Async{{service.name}}RestTransport(_Base{{ service.name }}RestTransport):
202202
{% endif %}
203203
"""
204204

205-
{{ shared_macros.rest_call_method_common(body_spec, method.name, service, True, method.output.ident.is_proto_plus_type)|indent(8) }}
205+
{{ shared_macros.rest_call_method_common(body_spec, method.name, service, True, method.input.ident.is_proto_plus_type)|indent(8) }}
206206

207207
{% if not method.void %}
208208
# Return the response

tests/integration/goldens/asset/google/cloud/asset_v1/services/asset_service/async_client.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,16 @@
3434
except AttributeError: # pragma: NO COVER
3535
OptionalRetry = Union[retries.AsyncRetry, object, None] # type: ignore
3636

37-
from google.api_core import operation # type: ignore
38-
from google.api_core import operation_async # type: ignore
3937
from google.cloud.asset_v1.services.asset_service import pagers
4038
from google.cloud.asset_v1.types import asset_service
4139
from google.cloud.asset_v1.types import assets
4240
from google.longrunning import operations_pb2 # type: ignore
43-
from google.protobuf import field_mask_pb2 # type: ignore
44-
from google.protobuf import timestamp_pb2 # type: ignore
45-
from google.rpc import status_pb2 # type: ignore
46-
from google.type import expr_pb2 # type: ignore
41+
import google.api_core.operation as operation # type: ignore
42+
import google.api_core.operation_async as operation_async # type: ignore
43+
import google.protobuf.field_mask_pb2 as field_mask_pb2 # type: ignore
44+
import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore
45+
import google.rpc.status_pb2 as status_pb2 # type: ignore
46+
import google.type.expr_pb2 as expr_pb2 # type: ignore
4747
from .transports.base import AssetServiceTransport, DEFAULT_CLIENT_INFO
4848
from .transports.grpc_asyncio import AssetServiceGrpcAsyncIOTransport
4949
from .client import AssetServiceClient

tests/integration/goldens/asset/google/cloud/asset_v1/services/asset_service/client.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,16 @@
4848

4949
_LOGGER = std_logging.getLogger(__name__)
5050

51-
from google.api_core import operation # type: ignore
52-
from google.api_core import operation_async # type: ignore
5351
from google.cloud.asset_v1.services.asset_service import pagers
5452
from google.cloud.asset_v1.types import asset_service
5553
from google.cloud.asset_v1.types import assets
5654
from google.longrunning import operations_pb2 # type: ignore
57-
from google.protobuf import field_mask_pb2 # type: ignore
58-
from google.protobuf import timestamp_pb2 # type: ignore
59-
from google.rpc import status_pb2 # type: ignore
60-
from google.type import expr_pb2 # type: ignore
55+
import google.api_core.operation as operation # type: ignore
56+
import google.api_core.operation_async as operation_async # type: ignore
57+
import google.protobuf.field_mask_pb2 as field_mask_pb2 # type: ignore
58+
import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore
59+
import google.rpc.status_pb2 as status_pb2 # type: ignore
60+
import google.type.expr_pb2 as expr_pb2 # type: ignore
6161
from .transports.base import AssetServiceTransport, DEFAULT_CLIENT_INFO
6262
from .transports.grpc import AssetServiceGrpcTransport
6363
from .transports.grpc_asyncio import AssetServiceGrpcAsyncIOTransport

tests/integration/goldens/asset/google/cloud/asset_v1/services/asset_service/transports/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
from google.cloud.asset_v1.types import asset_service
3232
from google.longrunning import operations_pb2 # type: ignore
33-
from google.protobuf import empty_pb2 # type: ignore
33+
import google.protobuf.empty_pb2 as empty_pb2 # type: ignore
3434

3535
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(gapic_version=package_version.__version__)
3636

tests/integration/goldens/asset/google/cloud/asset_v1/services/asset_service/transports/grpc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
from google.cloud.asset_v1.types import asset_service
3535
from google.longrunning import operations_pb2 # type: ignore
36-
from google.protobuf import empty_pb2 # type: ignore
36+
import google.protobuf.empty_pb2 as empty_pb2 # type: ignore
3737
from .base import AssetServiceTransport, DEFAULT_CLIENT_INFO
3838

3939
try:

tests/integration/goldens/asset/google/cloud/asset_v1/services/asset_service/transports/grpc_asyncio.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
from google.cloud.asset_v1.types import asset_service
3838
from google.longrunning import operations_pb2 # type: ignore
39-
from google.protobuf import empty_pb2 # type: ignore
39+
import google.protobuf.empty_pb2 as empty_pb2 # type: ignore
4040
from .base import AssetServiceTransport, DEFAULT_CLIENT_INFO
4141
from .grpc import AssetServiceGrpcTransport
4242

tests/integration/goldens/asset/google/cloud/asset_v1/services/asset_service/transports/rest.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535

3636

3737
from google.cloud.asset_v1.types import asset_service
38-
from google.protobuf import empty_pb2 # type: ignore
38+
import google.protobuf.empty_pb2 as empty_pb2 # type: ignore
3939
from google.longrunning import operations_pb2 # type: ignore
4040

4141

@@ -1368,7 +1368,7 @@ def __call__(self,
13681368
request_url = "{host}{uri}".format(host=self._host, uri=transcoded_request['uri'])
13691369
method = transcoded_request['method']
13701370
try:
1371-
request_payload = json_format.MessageToJson(request)
1371+
request_payload = type(request).to_json(request)
13721372
except:
13731373
request_payload = None
13741374
http_request = {
@@ -2467,7 +2467,7 @@ def __call__(self,
24672467
request_url = "{host}{uri}".format(host=self._host, uri=transcoded_request['uri'])
24682468
method = transcoded_request['method']
24692469
try:
2470-
request_payload = json_format.MessageToJson(request)
2470+
request_payload = type(request).to_json(request)
24712471
except:
24722472
request_payload = None
24732473
http_request = {
@@ -2552,7 +2552,7 @@ def __call__(self,
25522552
request_url = "{host}{uri}".format(host=self._host, uri=transcoded_request['uri'])
25532553
method = transcoded_request['method']
25542554
try:
2555-
request_payload = json_format.MessageToJson(request)
2555+
request_payload = type(request).to_json(request)
25562556
except:
25572557
request_payload = None
25582558
http_request = {
@@ -2647,7 +2647,7 @@ def __call__(self,
26472647
request_url = "{host}{uri}".format(host=self._host, uri=transcoded_request['uri'])
26482648
method = transcoded_request['method']
26492649
try:
2650-
request_payload = json_format.MessageToJson(request)
2650+
request_payload = type(request).to_json(request)
26512651
except:
26522652
request_payload = None
26532653
http_request = {

0 commit comments

Comments
 (0)