@@ -264,6 +264,7 @@ def evaluate_flag_details( # noqa: PLR0915
264264 if flag_evaluation_options is None :
265265 flag_evaluation_options = FlagEvaluationOptions ()
266266
267+ provider = self .provider # call this once to maintain a consistent reference
267268 evaluation_hooks = flag_evaluation_options .hooks
268269 hook_hints = flag_evaluation_options .hook_hints
269270
@@ -272,8 +273,8 @@ def evaluate_flag_details( # noqa: PLR0915
272273 flag_type = flag_type ,
273274 default_value = default_value ,
274275 evaluation_context = evaluation_context ,
275- client_metadata = None ,
276- provider_metadata = None ,
276+ client_metadata = self . get_metadata () ,
277+ provider_metadata = provider . get_metadata () ,
277278 )
278279 # Hooks need to be handled in different orders at different stages
279280 # in the flag evaluation
@@ -282,7 +283,7 @@ def evaluate_flag_details( # noqa: PLR0915
282283 api .get_hooks ()
283284 + self .hooks
284285 + evaluation_hooks
285- + self . provider .get_provider_hooks ()
286+ + provider .get_provider_hooks ()
286287 )
287288 # after, error, finally: Provider, Invocation, Client, API
288289 reversed_merged_hooks = merged_hooks [:]
@@ -336,6 +337,7 @@ def evaluate_flag_details( # noqa: PLR0915
336337 )
337338
338339 flag_evaluation = self ._create_provider_evaluation (
340+ provider ,
339341 flag_type ,
340342 flag_key ,
341343 default_value ,
@@ -391,6 +393,7 @@ def evaluate_flag_details( # noqa: PLR0915
391393
392394 def _create_provider_evaluation (
393395 self ,
396+ provider : FeatureProvider ,
394397 flag_type : FlagType ,
395398 flag_key : str ,
396399 default_value : typing .Any ,
@@ -413,11 +416,11 @@ def _create_provider_evaluation(
413416 )
414417
415418 get_details_callables : typing .Mapping [FlagType , GetDetailCallable ] = {
416- FlagType .BOOLEAN : self . provider .resolve_boolean_details ,
417- FlagType .INTEGER : self . provider .resolve_integer_details ,
418- FlagType .FLOAT : self . provider .resolve_float_details ,
419- FlagType .OBJECT : self . provider .resolve_object_details ,
420- FlagType .STRING : self . provider .resolve_string_details ,
419+ FlagType .BOOLEAN : provider .resolve_boolean_details ,
420+ FlagType .INTEGER : provider .resolve_integer_details ,
421+ FlagType .FLOAT : provider .resolve_float_details ,
422+ FlagType .OBJECT : provider .resolve_object_details ,
423+ FlagType .STRING : provider .resolve_string_details ,
421424 }
422425
423426 get_details_callable = get_details_callables .get (flag_type )
0 commit comments