@@ -117,8 +117,15 @@ def __init__(
117117 self ._compression = compression
118118 # Pre-extract the x-goog-api-client header from the initialized metadata.
119119 remaining_metadata , x_goog_api_client = _extract_metrics_header (metadata )
120- self ._init_metadata = tuple (remaining_metadata )
120+ self ._static_metadata = tuple (remaining_metadata )
121121 self ._x_goog_api_client = x_goog_api_client
122+ if x_goog_api_client :
123+ self ._default_metadata = (
124+ (client_info .METRICS_METADATA_KEY , x_goog_api_client ),
125+ * self ._static_metadata
126+ )
127+ else :
128+ self ._default_metadata = self ._static_metadata
122129
123130 def __call__ (
124131 self , * args , timeout = DEFAULT , retry = DEFAULT , compression = DEFAULT , ** kwargs
@@ -141,18 +148,16 @@ def __call__(
141148 wrapped_func = _apply_decorators (self ._target , [retry , timeout ])
142149
143150 # Add the user agent metadata to the call.
144- final_metadata = list (self ._init_metadata )
145151 if user_metadata := kwargs .get ("metadata" ):
152+ final_metadata = list (self ._static_metadata )
146153 remaining , user_x_goog = _extract_metrics_header (user_metadata )
147154 api_client_tokens = [t for t in [user_x_goog , self ._x_goog_api_client ] if t ]
148155 if api_client_tokens :
149156 final_metadata .append ((client_info .METRICS_METADATA_KEY , " " .join (api_client_tokens )))
150157 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 :
155158 kwargs ["metadata" ] = final_metadata
159+ elif self ._default_metadata :
160+ kwargs ["metadata" ] = self ._default_metadata
156161
157162 if self ._compression is not None :
158163 kwargs ["compression" ] = compression
0 commit comments