Skip to content

Commit c3240b5

Browse files
committed
chore: adds spanner-integration.yaml file to enable post-processing
1 parent e25decf commit c3240b5

File tree

1 file changed

+152
-0
lines changed

1 file changed

+152
-0
lines changed
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
# Copyright 2026 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
description: Integrate Google Cloud Spanner customizations for MetricsInterceptor and gRPC options
15+
# TODO(Fill in issue number below to add more context)
16+
url: https://github.com/googleapis/gapic-generator-python/issues/123
17+
replacements:
18+
- paths: [
19+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/transports/base.py",
20+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/transports/grpc.py",
21+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/transports/grpc_asyncio.py",
22+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/transports/rest.py",
23+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/transports/rest_base.py",
24+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/client.py",
25+
]
26+
before: |
27+
from google.cloud.spanner_v1.types import transaction
28+
after: |
29+
from google.cloud.spanner_v1.types import transaction
30+
from google.cloud.spanner_v1.metrics.metrics_interceptor import MetricsInterceptor
31+
count: 6
32+
33+
- paths: [
34+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/transports/base.py",
35+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/transports/grpc.py",
36+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/transports/grpc_asyncio.py",
37+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/transports/rest.py",
38+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/transports/rest_base.py",
39+
]
40+
before: |
41+
(?P<indent>\s+)api_audience: Optional\[str\] = None,\n\s+\*\*kwargs,\n\s+\) -> None:
42+
after: |
43+
\g<indent>api_audience: Optional[str] = None,
44+
\g<indent> metrics_interceptor: Optional[MetricsInterceptor] = None,
45+
\g<indent> **kwargs,
46+
\g<indent>) -> None:
47+
count: 1 # Using regex with backreferences for correctness
48+
49+
- paths: [
50+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/transports/grpc.py",
51+
]
52+
before: |
53+
\)\n\n self._interceptor = _LoggingClientInterceptor\(\)
54+
after: |
55+
)
56+
57+
# Wrap the gRPC channel with the metric interceptor
58+
if metrics_interceptor is not None:
59+
self._metrics_interceptor = metrics_interceptor
60+
self._grpc_channel = grpc.intercept_channel(
61+
self._grpc_channel, metrics_interceptor
62+
)
63+
64+
self._interceptor = _LoggingClientInterceptor()
65+
count: 1
66+
67+
- paths: [
68+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/transports/grpc.py",
69+
]
70+
before: |
71+
self._stubs: Dict\[str, Callable\] = \{\}\n\n if api_mtls_endpoint:
72+
after: |
73+
self._stubs: Dict[str, Callable] = {}
74+
self._metrics_interceptor = None
75+
76+
if api_mtls_endpoint:
77+
count: 1
78+
79+
- paths: [
80+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/client.py",
81+
]
82+
before: |
83+
# initialize with the provided callable or the passed in class
84+
self._transport = transport_init\(
85+
credentials=credentials,
86+
credentials_file=self._client_options.credentials_file,
87+
host=self._api_endpoint,
88+
scopes=self._client_options.scopes,
89+
client_cert_source_for_mtls=self._client_cert_source,
90+
quota_project_id=self._client_options.quota_project_id,
91+
client_info=client_info,
92+
always_use_jwt_access=True,
93+
api_audience=self._client_options.api_audience,
94+
\)
95+
after: |
96+
# initialize with the provided callable or the passed in class
97+
self._transport = transport_init(
98+
credentials=credentials,
99+
credentials_file=self._client_options.credentials_file,
100+
host=self._api_endpoint,
101+
scopes=self._client_options.scopes,
102+
client_cert_source_for_mtls=self._client_cert_source,
103+
quota_project_id=self._client_options.quota_project_id,
104+
client_info=client_info,
105+
always_use_jwt_access=True,
106+
api_audience=self._client_options.api_audience,
107+
metrics_interceptor=MetricsInterceptor(),
108+
)
109+
count: 1
110+
111+
- paths: [
112+
"packages/google-cloud-spanner/tests/unit/gapic/spanner_v1/test_spanner.py",
113+
]
114+
before: |
115+
api_audience=None,\n(\s+)\)
116+
after: |
117+
api_audience=None,
118+
metrics_interceptor=mock.ANY,
119+
)
120+
count: 12
121+
122+
- paths: [
123+
"packages/google-cloud-spanner/tests/unit/gapic/spanner_v1/test_spanner.py",
124+
]
125+
before: |
126+
api_audience="https://language.googleapis.com"\n(\s+)\)
127+
after: |
128+
api_audience="https://language.googleapis.com",
129+
metrics_interceptor=mock.ANY,
130+
)
131+
count: 1
132+
133+
- paths: [
134+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/transports/grpc.py",
135+
"packages/google-cloud-spanner/google/cloud/spanner_v1/services/spanner/transports/grpc_asyncio.py",
136+
"packages/google-cloud-spanner/tests/unit/gapic/spanner_v1/test_spanner.py",
137+
"packages/google-cloud-spanner/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc.py",
138+
"packages/google-cloud-spanner/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc_asyncio.py",
139+
"packages/google-cloud-spanner/tests/unit/gapic/spanner_admin_instance_v1/test_instance_admin.py",
140+
"packages/google-cloud-spanner/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc.py",
141+
"packages/google-cloud-spanner/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc_asyncio.py",
142+
"packages/google-cloud-spanner/tests/unit/gapic/spanner_admin_database_v1/test_database_admin.py",
143+
]
144+
before: |
145+
^\s+options=\[[\s\S]*?\]
146+
after: |
147+
options=[
148+
("grpc.max_send_message_length", -1),
149+
("grpc.max_receive_message_length", -1),
150+
("grpc.keepalive_time_ms", 120000),
151+
]
152+
count: 9 # One per file roughly, or adjusts based on regex triggers

0 commit comments

Comments
 (0)