@@ -115,9 +115,10 @@ def __init__(
115115 self ._retry = retry
116116 self ._timeout = timeout
117117 self ._compression = compression
118- self ._metadata = metadata
119118 # Pre-extract the x-goog-api-client header from the initialized metadata.
120- self ._arbitrary_metadata , self ._metrics_values = _extract_metrics_header (metadata )
119+ remaining_metadata , x_goog_api_client = _extract_metrics_header (metadata )
120+ self ._init_metadata = tuple (remaining_metadata )
121+ self ._x_goog_api_client = x_goog_api_client
121122
122123 def __call__ (
123124 self , * args , timeout = DEFAULT , retry = DEFAULT , compression = DEFAULT , ** kwargs
@@ -140,28 +141,28 @@ def __call__(
140141 wrapped_func = _apply_decorators (self ._target , [retry , timeout ])
141142
142143 # Add the user agent metadata to the call.
143- if self ._metadata is not None :
144- metadata = kwargs .get ("metadata" )
145- if not metadata :
146- if self ._metrics_values :
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 :
147148 kwargs ["metadata" ] = [
148- (client_info .METRICS_METADATA_KEY , self ._metrics_values )
149- ] + self ._arbitrary_metadata
149+ (client_info .METRICS_METADATA_KEY , self ._x_goog_api_client )
150+ ] + self ._init_metadata
150151 else :
151- kwargs ["metadata" ] = self ._arbitrary_metadata
152+ kwargs ["metadata" ] = self ._init_metadata
152153 else :
153154 # Merge user-supplied metadata with library-supplied metadata.
154- merged_metadata , api_client_values = _extract_metrics_header (metadata )
155- if self ._metrics_values :
155+ merged_metadata , api_client_values = _extract_metrics_header (user_metadata )
156+ if self ._x_goog_api_client :
156157 if api_client_values :
157- api_client_values = f"{ api_client_values } { self ._metrics_values } "
158+ api_client_values = f"{ api_client_values } { self ._x_goog_api_client } "
158159 else :
159- api_client_values = self ._metrics_values
160+ api_client_values = self ._x_goog_api_client
160161 if api_client_values :
161162 merged_metadata .append (
162163 (client_info .METRICS_METADATA_KEY , api_client_values )
163164 )
164- merged_metadata .extend (self ._arbitrary_metadata )
165+ merged_metadata .extend (self ._init_metadata )
165166 kwargs ["metadata" ] = merged_metadata
166167
167168 if self ._compression is not None :
0 commit comments