@@ -454,8 +454,12 @@ def _get_feature_variable_for_type(
454454 )
455455
456456 if decision .source in (enums .DecisionSources .FEATURE_TEST , enums .DecisionSources .HOLDOUT ):
457+ experiment_key = None
458+ if decision .experiment :
459+ experiment_key = (decision .experiment ['key' ] if isinstance (decision .experiment , dict )
460+ else decision .experiment .key )
457461 source_info = {
458- 'experiment_key' : decision . experiment . key if decision . experiment else None ,
462+ 'experiment_key' : experiment_key ,
459463 'variation_key' : self ._get_variation_key (decision .variation ),
460464 }
461465
@@ -558,8 +562,12 @@ def _get_all_feature_variables_for_type(
558562 all_variables [variable_key ] = actual_value
559563
560564 if decision .source == enums .DecisionSources .FEATURE_TEST :
565+ experiment_key = None
566+ if decision .experiment :
567+ experiment_key = (decision .experiment ['key' ] if isinstance (decision .experiment , dict )
568+ else decision .experiment .key )
561569 source_info = {
562- 'experiment_key' : decision . experiment . key if decision . experiment else None ,
570+ 'experiment_key' : experiment_key ,
563571 'variation_key' : self ._get_variation_key (decision .variation ),
564572 }
565573
@@ -802,19 +810,25 @@ def is_feature_enabled(self, feature_key: str, user_id: str, attributes: Optiona
802810 feature_enabled = True
803811
804812 if (is_source_rollout or not decision .variation ) and project_config .get_send_flag_decisions_value ():
813+ experiment_key = ''
814+ if decision .experiment :
815+ experiment_key = (decision .experiment ['key' ] if isinstance (decision .experiment , dict )
816+ else decision .experiment .key )
805817 self ._send_impression_event (
806- project_config , decision .experiment , decision .variation , feature .key , decision . experiment . key if
807- decision . experiment else '' , str (decision .source ), feature_enabled , user_id , attributes , cmab_uuid
818+ project_config , decision .experiment , decision .variation , feature .key , experiment_key ,
819+ str (decision .source ), feature_enabled , user_id , attributes , cmab_uuid
808820 )
809821
810822 # Send event if Decision came from an experiment.
811823 if is_source_experiment and decision .variation and decision .experiment :
824+ experiment_key = (decision .experiment ['key' ] if isinstance (decision .experiment , dict )
825+ else decision .experiment .key )
812826 source_info = {
813- 'experiment_key' : decision . experiment . key ,
827+ 'experiment_key' : experiment_key ,
814828 'variation_key' : self ._get_variation_key (decision .variation ),
815829 }
816830 self ._send_impression_event (
817- project_config , decision .experiment , decision .variation , feature .key , decision . experiment . key ,
831+ project_config , decision .experiment , decision .variation , feature .key , experiment_key ,
818832 str (decision .source ), feature_enabled , user_id , attributes , cmab_uuid
819833 )
820834
0 commit comments