@@ -633,7 +633,10 @@ def get_variation(
633633
634634 user_context = OptimizelyUserContext (self , self .logger , user_id , attributes , False )
635635 user_profile_tracker = user_profile .UserProfileTracker (user_id , self .user_profile_service , self .logger )
636- variation , _ = self .decision_service .get_variation (project_config , experiment , user_context , user_profile_tracker )
636+ variation , _ = self .decision_service .get_variation (project_config ,
637+ experiment ,
638+ user_context ,
639+ user_profile_tracker )
637640 if variation :
638641 variation_key = variation .key
639642
@@ -1123,16 +1126,16 @@ def _decide(
11231126
11241127 if OptimizelyDecideOption .ENABLED_FLAGS_ONLY in decide_options :
11251128 decide_options .remove (OptimizelyDecideOption .ENABLED_FLAGS_ONLY )
1126-
1129+
11271130 decision = self ._decide_for_keys (
11281131 user_context ,
11291132 [key ],
11301133 decide_options ,
11311134 True
11321135 )[key ]
1133-
1136+
11341137 return decision
1135-
1138+
11361139 def _create_optimizely_decision (
11371140 self ,
11381141 user_context : OptimizelyUserContext ,
@@ -1147,23 +1150,26 @@ def _create_optimizely_decision(
11471150 if flag_decision .variation is not None :
11481151 if flag_decision .variation .featureEnabled :
11491152 feature_enabled = True
1150-
1153+
11511154 self .logger .info (f'Feature { flag_key } is enabled for user { user_id } { feature_enabled } "' )
1152-
1155+
11531156 # Create Optimizely Decision Result.
11541157 attributes = user_context .get_user_attributes ()
11551158 rule_key = flag_decision .experiment .key if flag_decision .experiment else None
11561159 all_variables = {}
11571160 decision_source = flag_decision .source
11581161 decision_event_dispatched = False
1159-
1162+
11601163 feature_flag = project_config .feature_key_map .get (flag_key )
11611164
11621165 # Send impression event if Decision came from a feature
11631166 # test and decide options doesn't include disableDecisionEvent
11641167 if OptimizelyDecideOption .DISABLE_DECISION_EVENT not in decide_options :
11651168 if decision_source == DecisionSources .FEATURE_TEST or project_config .send_flag_decisions :
1166- self ._send_impression_event (project_config , flag_decision .experiment , flag_decision .variation , flag_key , rule_key or '' ,
1169+ self ._send_impression_event (project_config ,
1170+ flag_decision .experiment ,
1171+ flag_decision .variation ,
1172+ flag_key , rule_key or '' ,
11671173 str (decision_source ), feature_enabled ,
11681174 user_id , attributes )
11691175
@@ -1189,7 +1195,11 @@ def _create_optimizely_decision(
11891195 all_variables [variable_key ] = actual_value
11901196
11911197 should_include_reasons = OptimizelyDecideOption .INCLUDE_REASONS in decide_options
1192- variation_key = flag_decision .variation .key if flag_decision is not None and flag_decision .variation is not None else None
1198+ variation_key = (
1199+ flag_decision .variation .key
1200+ if flag_decision is not None and flag_decision .variation is not None
1201+ else None
1202+ )
11931203 # Send notification
11941204 self .notification_center .send_notifications (
11951205 enums .NotificationTypes .DECISION ,
@@ -1212,7 +1222,6 @@ def _create_optimizely_decision(
12121222 rule_key = rule_key , flag_key = flag_key ,
12131223 user_context = user_context , reasons = decision_reasons if should_include_reasons else []
12141224 )
1215-
12161225
12171226 def _decide_all (
12181227 self ,
@@ -1282,7 +1291,7 @@ def _decide_for_keys(
12821291 self .logger .debug ('Provided decide options is not an array. Using default decide options.' )
12831292 merged_decide_options = self .default_decide_options
12841293
1285- enabled_flags_only = OptimizelyDecideOption .ENABLED_FLAGS_ONLY in merged_decide_options
1294+ # enabled_flags_only = OptimizelyDecideOption.ENABLED_FLAGS_ONLY in merged_decide_options
12861295
12871296 decisions : dict [str , OptimizelyDecision ] = {}
12881297 valid_keys = []
@@ -1292,11 +1301,11 @@ def _decide_for_keys(
12921301 # if enabled_flags_only and not decision.enabled:
12931302 # continue
12941303 # decisions[key] = decision
1295-
1304+
12961305 project_config = self .config_manager .get_config ()
12971306 flags_without_forced_decision : list [entities .FeatureFlag ] = []
12981307 flag_decisions : dict [str , Decision ] = {}
1299-
1308+
13001309 if project_config is None :
13011310 return decisions
13021311 for key in keys :
@@ -1307,39 +1316,34 @@ def _decide_for_keys(
13071316 valid_keys .append (key )
13081317 decision_reasons : list [str ] = []
13091318 decision_reasons_dict [key ] = decision_reasons
1310-
1319+
13111320 optimizely_decision_context = OptimizelyUserContext .OptimizelyDecisionContext (flag_key = key , rule_key = None )
13121321 forced_decision_response = self .decision_service .validated_forced_decision (project_config ,
13131322 optimizely_decision_context ,
13141323 user_context )
13151324 variation , decision_reasons = forced_decision_response
13161325 decision_reasons_dict [key ] += decision_reasons
1317-
1326+
13181327 if variation :
13191328 decision = Decision (None , variation , enums .DecisionSources .FEATURE_TEST )
13201329 flag_decisions [key ] = decision
13211330 else :
1322- # Regular decision
1323- # decision, decision_reasons = self.decision_service.get_variation_for_feature(project_config,
1324- # feature_flag,
1325- # user_context, decide_options)
13261331 flags_without_forced_decision .append (feature_flag )
13271332
1328-
13291333 decision_list = self .decision_service .get_variations_for_feature_list (
13301334 project_config ,
13311335 flags_without_forced_decision ,
13321336 user_context ,
13331337 merged_decide_options
13341338 )
1335-
1339+
13361340 for i in range (0 , len (flags_without_forced_decision )):
13371341 decision = decision_list [i ][0 ]
13381342 reasons = decision_list [i ][1 ]
13391343 flag_key = flags_without_forced_decision [i ].key
13401344 flag_decisions [flag_key ] = decision
13411345 decision_reasons_dict [flag_key ] += reasons
1342-
1346+
13431347 print (decision_reasons_dict )
13441348 for key in valid_keys :
13451349 flag_decision = flag_decisions [key ]
@@ -1352,10 +1356,11 @@ def _decide_for_keys(
13521356 merged_decide_options ,
13531357 project_config
13541358 )
1355-
1356- if (OptimizelyDecideOption .ENABLED_FLAGS_ONLY not in merged_decide_options ) or (optimizely_decision .enabled ):
1359+ enabled_flags_only_missing = OptimizelyDecideOption .ENABLED_FLAGS_ONLY not in merged_decide_options
1360+ is_enabled = optimizely_decision .enabled
1361+ if enabled_flags_only_missing or is_enabled :
13571362 decisions [key ] = optimizely_decision
1358-
1363+
13591364 return decisions
13601365
13611366 def _setup_odp (self , sdk_key : Optional [str ]) -> None :
0 commit comments