@@ -483,38 +483,31 @@ def get_variant_for_identifier(
483483 )
484484 return None
485485
486- decider = self ._get_decider ()
487- if decider is None :
488- return None
489-
490- ctx = self ._get_ctx_with_set_identifier (
491- identifier = identifier , identifier_type = identifier_type
492- )
493- ctx_err = ctx .err ()
494- if ctx_err is not None :
495- logger .info (f"Encountered error in rust_decider.make_ctx(): { ctx_err } " )
486+ if self ._internal is None :
487+ logger .error ("RustDecider is None--did not initialize." )
496488 return None
497489
498- choice = decider .choose (
499- feature_name = experiment_name , ctx = ctx , identifier_type = identifier_type
500- )
501- error = choice .err ()
490+ ctx = self ._decider_context .to_dict ()
491+ ctx [identifier_type ] = identifier
502492
503- if error :
504- logger .info (f"Encountered error in decider.choose(): { error } " )
493+ try :
494+ decision = self ._internal .choose (experiment_name , ctx )
495+ except FeatureNotFoundException as exc :
496+ warnings .warn (str (exc ))
497+ return None
498+ except DeciderException as exc :
499+ logger .info (str (exc ))
505500 return None
506-
507- variant = choice .decision ()
508501
509502 event_context_fields = self ._decider_context .to_event_dict ()
510503 event_context_fields .update (exposure_kwargs or {})
511504
512- for event in choice .events () :
505+ for event in decision .events :
513506 self ._send_expose (
514507 event = event , exposure_fields = event_context_fields , overwrite_identifier = True
515508 )
516509
517- return variant
510+ return decision . variant
518511
519512 def get_variant_for_identifier_without_expose (
520513 self ,
@@ -549,37 +542,31 @@ def get_variant_for_identifier_without_expose(
549542 )
550543 return None
551544
552- decider = self ._get_decider ()
553- if decider is None :
545+ if self ._internal is None :
546+ logger . error ( "RustDecider is None--did not initialize." )
554547 return None
555548
556- ctx = self ._get_ctx_with_set_identifier (
557- identifier = identifier , identifier_type = identifier_type
558- )
559- ctx_err = ctx .err ()
560- if ctx_err is not None :
561- logger .info (f"Encountered error in rust_decider.make_ctx(): { ctx_err } " )
562- return None
549+ ctx = self ._decider_context .to_dict ()
550+ ctx [identifier_type ] = identifier
563551
564- choice = decider .choose (
565- feature_name = experiment_name , ctx = ctx , identifier_type = identifier_type
566- )
567- error = choice .err ()
568- if error :
569- logger .info (f"Encountered error in decider.choose(): { error } " )
552+ try :
553+ decision = self ._internal .choose (experiment_name , ctx )
554+ except FeatureNotFoundException as exc :
555+ warnings .warn (str (exc ))
556+ return None
557+ except DeciderException as exc :
558+ logger .info (str (exc ))
570559 return None
571-
572- variant = choice .decision ()
573560
574561 event_context_fields = self ._decider_context .to_event_dict ()
575562
576563 # expose Holdout if the experiment is part of one
577- for event in choice .events () :
564+ for event in decision .events :
578565 self ._send_expose_if_holdout (
579566 event = event , exposure_fields = event_context_fields , overwrite_identifier = True
580567 )
581568
582- return variant
569+ return decision . variant
583570
584571 def get_all_variants_without_expose (self ) -> List [Dict [str , Union [str , int ]]]:
585572 """Return a list of experiment dicts in this format:
0 commit comments