@@ -141,30 +141,18 @@ def __call__(
141141 wrapped_func = _apply_decorators (self ._target , [retry , timeout ])
142142
143143 # Add the user agent metadata to the call.
144- if self ._init_metadata or self ._x_goog_api_client :
145- user_metadata = kwargs .get ("metadata" )
146- if not user_metadata :
147- if self ._x_goog_api_client :
148- kwargs ["metadata" ] = [
149- (client_info .METRICS_METADATA_KEY , self ._x_goog_api_client ),
150- * self ._init_metadata
151- ]
152- else :
153- kwargs ["metadata" ] = self ._init_metadata
154- else :
155- # Merge user-supplied metadata with library-supplied metadata.
156- merged_metadata , api_client_values = _extract_metrics_header (user_metadata )
157- if self ._x_goog_api_client :
158- if api_client_values :
159- api_client_values = f"{ api_client_values } { self ._x_goog_api_client } "
160- else :
161- api_client_values = self ._x_goog_api_client
162- if api_client_values :
163- merged_metadata .append (
164- (client_info .METRICS_METADATA_KEY , api_client_values )
165- )
166- merged_metadata .extend (self ._init_metadata )
167- kwargs ["metadata" ] = merged_metadata
144+ final_metadata = list (self ._init_metadata )
145+ if user_metadata := kwargs .get ("metadata" ):
146+ remaining , user_x_goog = _extract_metrics_header (user_metadata )
147+ api_client_tokens = [t for t in [user_x_goog , self ._x_goog_api_client ] if t ]
148+ if api_client_tokens :
149+ final_metadata .append ((client_info .METRICS_METADATA_KEY , " " .join (api_client_tokens )))
150+ final_metadata .extend (remaining )
151+ else :
152+ if self ._x_goog_api_client :
153+ final_metadata .append ((client_info .METRICS_METADATA_KEY , self ._x_goog_api_client ))
154+ if final_metadata :
155+ kwargs ["metadata" ] = final_metadata
168156
169157 if self ._compression is not None :
170158 kwargs ["compression" ] = compression
0 commit comments