Skip to content

Commit 852c5b1

Browse files
committed
optimized for hard-coded metadata
1 parent 7d266a3 commit 852c5b1

1 file changed

Lines changed: 18 additions & 9 deletions

File tree

  • packages/google-api-core/google/api_core/gapic_v1

packages/google-api-core/google/api_core/gapic_v1/method.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,14 @@ def __init__(
9191
self._timeout = timeout
9292
self._compression = compression
9393
self._metadata = metadata
94+
# separate x-goog-api-client header from provided metadata
95+
self._arbitrary_metadata = []
96+
self._metrics_values = ""
97+
for key, val in metadata:
98+
if key == client_info.METRICS_METADATA_KEY:
99+
self._metrics_values = val
100+
else:
101+
self._arbitrary_metadata.append((key, val))
94102

95103
def __call__(
96104
self, *args, timeout=DEFAULT, retry=DEFAULT, compression=DEFAULT, **kwargs
@@ -116,21 +124,22 @@ def __call__(
116124
if self._metadata is not None:
117125
metadata = kwargs.get("metadata")
118126
if not metadata:
119-
kwargs["metadata"] = self._metadata
127+
if self._metrics_values:
128+
kwargs["metadata"] = [(client_info.METRICS_METADATA_KEY, self._metrics_values), *self._arbitrary_metadata]
129+
else:
130+
kwargs["metadata"] = self._arbitrary_metadata
120131
else:
121132
# Merge user-supplied metadata with library-supplied metadata.
122-
# All keys in gRPC metadata are already lowercase.
123-
from itertools import chain
124133
metadata = list(metadata)
125-
api_client_values = []
134+
metric_values = [self._metrics_values] if self._metrics_values else []
126135
merged_metadata = []
127-
for key, val in chain(metadata, self._metadata):
128-
if key == "x-goog-api-client":
129-
api_client_values.append(val)
136+
for key, val in metadata:
137+
if key == client_info.METRICS_METADATA_KEY:
138+
metric_values.append(val)
130139
else:
131140
merged_metadata.append((key, val))
132-
if api_client_values:
133-
merged_metadata.append(("x-goog-api-client", " ".join(api_client_values)))
141+
if metric_values:
142+
merged_metadata.append((client_info.METRICS_METADATA_KEY, " ".join(metric_values)))
134143
kwargs["metadata"] = merged_metadata
135144

136145
if self._compression is not None:

0 commit comments

Comments
 (0)