@@ -233,9 +233,11 @@ def evaluate_flag_details(
233
233
if evaluation_context is None :
234
234
evaluation_context = EvaluationContext ()
235
235
236
- evaluation_hooks , hook_hints = self .__extract_evaluation_options (
237
- flag_evaluation_options
238
- )
236
+ if flag_evaluation_options is None :
237
+ flag_evaluation_options = FlagEvaluationOptions ()
238
+
239
+ evaluation_hooks = flag_evaluation_options .hooks
240
+ hook_hints = flag_evaluation_options .hook_hints
239
241
240
242
hook_context = HookContext (
241
243
flag_key = flag_key ,
@@ -254,9 +256,8 @@ def evaluate_flag_details(
254
256
self .hooks + evaluation_hooks + self .provider .get_provider_hooks ()
255
257
)
256
258
# after, error, finally: Provider, Invocation, Client, API
257
- reversed_merged_hooks = (
258
- self .provider .get_provider_hooks () + evaluation_hooks + self .hooks
259
- )
259
+ reversed_merged_hooks = merged_hooks [:]
260
+ reversed_merged_hooks .sort ()
260
261
261
262
try :
262
263
# https://github.com/open-feature/spec/blob/main/specification/sections/03-evaluation-context.md
@@ -290,22 +291,22 @@ def evaluate_flag_details(
290
291
291
292
return flag_evaluation
292
293
293
- except OpenFeatureError as e :
294
- error_hooks (flag_type , hook_context , e , reversed_merged_hooks , hook_hints )
294
+ except OpenFeatureError as err :
295
+ error_hooks (flag_type , hook_context , err , reversed_merged_hooks , hook_hints )
295
296
296
297
return FlagEvaluationDetails (
297
298
flag_key = flag_key ,
298
299
value = default_value ,
299
300
reason = Reason .ERROR ,
300
- error_code = e .error_code ,
301
- error_message = e .error_message ,
301
+ error_code = err .error_code ,
302
+ error_message = err .error_message ,
302
303
)
303
304
# Catch any type of exception here since the user can provide any exception
304
305
# in the error hooks
305
- except Exception as e : # noqa
306
- error_hooks (flag_type , hook_context , e , reversed_merged_hooks , hook_hints )
306
+ except Exception as err : # noqa
307
+ error_hooks (flag_type , hook_context , err , reversed_merged_hooks , hook_hints )
307
308
308
- error_message = getattr (e , "error_message" , str (e ))
309
+ error_message = getattr (err , "error_message" , str (err ))
309
310
return FlagEvaluationDetails (
310
311
flag_key = flag_key ,
311
312
value = default_value ,
@@ -363,23 +364,3 @@ def _create_provider_evaluation(
363
364
364
365
return value
365
366
366
- def __extract_evaluation_options (
367
- self , flag_evaluation_options : typing .Any
368
- ) -> typing .Tuple [typing .List [Hook ], MappingProxyType ]:
369
- evaluation_hooks : typing .List [Hook ] = []
370
- hook_hints : dict = {}
371
-
372
- if flag_evaluation_options is dict :
373
- if (
374
- "hook_hints" in flag_evaluation_options
375
- and flag_evaluation_options ["hook_hints" ] is dict
376
- ):
377
- hook_hints = dict (flag_evaluation_options ["hook_hints" ])
378
-
379
- if (
380
- "hooks" in flag_evaluation_options
381
- and flag_evaluation_options ["hooks" ] is list
382
- ):
383
- evaluation_hooks = flag_evaluation_options ["hooks" ]
384
-
385
- return (evaluation_hooks , MappingProxyType (hook_hints ))
0 commit comments