44
55from open_feature .evaluation_context .evaluation_context import EvaluationContext
66from open_feature .exception .exceptions import GeneralError
7+ from open_feature .flag_evaluation .error_code import ErrorCode
78from open_feature .flag_evaluation .flag_evaluation_details import FlagEvaluationDetails
89from open_feature .flag_evaluation .flag_type import FlagType
910from open_feature .flag_evaluation .reason import Reason
@@ -40,119 +41,119 @@ def add_hooks(self, hooks: typing.List[Hook]):
4041
4142 def get_boolean_value (
4243 self ,
43- key : str ,
44+ flag_key : str ,
4445 default_value : bool ,
4546 evaluation_context : EvaluationContext = None ,
4647 flag_evaluation_options : typing .Any = None ,
4748 ) -> bool :
4849 return self .evaluate_flag_details (
4950 FlagType .BOOLEAN ,
50- key ,
51+ flag_key ,
5152 default_value ,
5253 evaluation_context ,
5354 flag_evaluation_options ,
5455 ).value
5556
5657 def get_boolean_details (
5758 self ,
58- key : str ,
59+ flag_key : str ,
5960 default_value : bool ,
6061 evaluation_context : EvaluationContext = None ,
6162 flag_evaluation_options : typing .Any = None ,
6263 ) -> FlagEvaluationDetails :
6364 return self .evaluate_flag_details (
6465 FlagType .BOOLEAN ,
65- key ,
66+ flag_key ,
6667 default_value ,
6768 evaluation_context ,
6869 flag_evaluation_options ,
6970 )
7071
7172 def get_string_value (
7273 self ,
73- key : str ,
74+ flag_key : str ,
7475 default_value : str ,
7576 evaluation_context : EvaluationContext = None ,
7677 flag_evaluation_options : typing .Any = None ,
7778 ) -> str :
7879 return self .evaluate_flag_details (
7980 FlagType .STRING ,
80- key ,
81+ flag_key ,
8182 default_value ,
8283 evaluation_context ,
8384 flag_evaluation_options ,
8485 ).value
8586
8687 def get_string_details (
8788 self ,
88- key : str ,
89+ flag_key : str ,
8990 default_value : str ,
9091 evaluation_context : EvaluationContext = None ,
9192 flag_evaluation_options : typing .Any = None ,
9293 ) -> FlagEvaluationDetails :
9394 return self .evaluate_flag_details (
9495 FlagType .STRING ,
95- key ,
96+ flag_key ,
9697 default_value ,
9798 evaluation_context ,
9899 flag_evaluation_options ,
99100 )
100101
101102 def get_number_value (
102103 self ,
103- key : str ,
104+ flag_key : str ,
104105 default_value : Number ,
105106 evaluation_context : EvaluationContext = None ,
106107 flag_evaluation_options : typing .Any = None ,
107108 ) -> Number :
108109 return self .evaluate_flag_details (
109110 FlagType .NUMBER ,
110- key ,
111+ flag_key ,
111112 default_value ,
112113 evaluation_context ,
113114 flag_evaluation_options ,
114115 ).value
115116
116117 def get_number_details (
117118 self ,
118- key : str ,
119+ flag_key : str ,
119120 default_value : Number ,
120121 evaluation_context : EvaluationContext = None ,
121122 flag_evaluation_options : typing .Any = None ,
122123 ) -> FlagEvaluationDetails :
123124 return self .evaluate_flag_details (
124125 FlagType .NUMBER ,
125- key ,
126+ flag_key ,
126127 default_value ,
127128 evaluation_context ,
128129 flag_evaluation_options ,
129130 )
130131
131132 def get_object_value (
132133 self ,
133- key : str ,
134+ flag_key : str ,
134135 default_value : dict ,
135136 evaluation_context : EvaluationContext = None ,
136137 flag_evaluation_options : typing .Any = None ,
137138 ) -> dict :
138139 return self .evaluate_flag_details (
139140 FlagType .OBJECT ,
140- key ,
141+ flag_key ,
141142 default_value ,
142143 evaluation_context ,
143144 flag_evaluation_options ,
144145 ).value
145146
146147 def get_object_details (
147148 self ,
148- key : str ,
149+ flag_key : str ,
149150 default_value : dict ,
150151 evaluation_context : EvaluationContext = None ,
151152 flag_evaluation_options : typing .Any = None ,
152153 ) -> FlagEvaluationDetails :
153154 return self .evaluate_flag_details (
154155 FlagType .OBJECT ,
155- key ,
156+ flag_key ,
156157 default_value ,
157158 evaluation_context ,
158159 flag_evaluation_options ,
@@ -161,7 +162,7 @@ def get_object_details(
161162 def evaluate_flag_details (
162163 self ,
163164 flag_type : FlagType ,
164- key : str ,
165+ flag_key : str ,
165166 default_value : typing .Any ,
166167 evaluation_context : EvaluationContext = None ,
167168 flag_evaluation_options : typing .Any = None ,
@@ -182,7 +183,7 @@ def evaluate_flag_details(
182183 evaluation_context = EvaluationContext ()
183184
184185 hook_context = HookContext (
185- flag_key = key ,
186+ flag_key = flag_key ,
186187 flag_type = flag_type ,
187188 default_value = default_value ,
188189 evaluation_context = evaluation_context ,
@@ -207,7 +208,7 @@ def evaluate_flag_details(
207208
208209 flag_evaluation = self .create_provider_evaluation (
209210 flag_type ,
210- key ,
211+ flag_key ,
211212 default_value ,
212213 merged_context ,
213214 )
@@ -216,15 +217,26 @@ def evaluate_flag_details(
216217
217218 return flag_evaluation
218219
220+ except OpenFeatureError as e : # noqa
221+ error_hooks (flag_type , hook_context , e , merged_hooks , None )
222+ return FlagEvaluationDetails (
223+ flag_key = flag_key ,
224+ value = default_value ,
225+ reason = Reason .ERROR ,
226+ error_code = e .error_code ,
227+ error_message = e .error_message ,
228+ )
219229 # Catch any type of exception here since the user can provide any exception
220230 # in the error hooks
221231 except Exception as e : # noqa
222232 error_hooks (flag_type , hook_context , e , merged_hooks , None )
233+ error_message = getattr (e , "error_message" , str (e ))
223234 return FlagEvaluationDetails (
224- key = key ,
235+ flag_key = flag_key ,
225236 value = default_value ,
226237 reason = Reason .ERROR ,
227- error_code = e .error_message ,
238+ error_code = ErrorCode .GENERAL ,
239+ error_message = error_message ,
228240 )
229241
230242 finally :
@@ -233,7 +245,7 @@ def evaluate_flag_details(
233245 def create_provider_evaluation (
234246 self ,
235247 flag_type : FlagType ,
236- key : str ,
248+ flag_key : str ,
237249 default_value : typing .Any ,
238250 evaluation_context : EvaluationContext = None ,
239251 ) -> FlagEvaluationDetails :
@@ -248,7 +260,7 @@ def create_provider_evaluation(
248260 provider
249261 """
250262 args = (
251- key ,
263+ flag_key ,
252264 default_value ,
253265 evaluation_context ,
254266 )
0 commit comments