Skip to content

Commit 64089dc

Browse files
committed
choose_all() no longer raises exception
1 parent 4b12aa9 commit 64089dc

File tree

2 files changed

+37
-5
lines changed

2 files changed

+37
-5
lines changed

reddit_decider/__init__.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from reddit_edgecontext import ValidatedAuthenticationToken
2525
from rust_decider import Decider as RustDecider
2626
from rust_decider import DeciderException
27+
from rust_decider import Decision
2728
from rust_decider import FeatureNotFoundException
2829
from rust_decider import make_ctx
2930
from typing_extensions import Literal
@@ -610,16 +611,16 @@ def get_all_variants_without_expose(self) -> List[Dict[str, Union[str, int]]]:
610611
611612
:return: list of experiment dicts with non-:code:`None` variants.
612613
"""
613-
if self._rs_decider is None:
614+
if self._internal is None:
614615
logger.error("rs_decider is None--did not initialize.")
615616
return []
616617

617618
ctx = self._decider_context.to_dict()
618619

619620
try:
620-
all_decisions = self._rs_decider.choose_all(ctx)
621+
all_decisions = self._internal.choose_all(ctx)
621622
except DeciderException as exc:
622-
logger.info(exc)
623+
logger.info(str(exc))
623624
return []
624625

625626
parsed_choices = []
@@ -685,15 +686,15 @@ def get_all_variants_for_identifier_without_expose(
685686
)
686687
return []
687688

688-
if self._rs_decider is None:
689+
if self._internal is None:
689690
logger.error("rs_decider is None--did not initialize.")
690691
return []
691692

692693
ctx = self._decider_context.to_dict()
693694
ctx[identifier_type] = identifier
694695

695696
try:
696-
all_decisions = self._rs_decider.choose_all(context=ctx, bucketing_field_filter=identifier_type)
697+
all_decisions = self._internal.choose_all(context=ctx, bucketing_field_filter=identifier_type)
697698
except DeciderException as exc:
698699
logger.info(exc)
699700
return []

tests/decider_tests.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -972,6 +972,37 @@ def test_get_all_variants_without_expose_with_hg(self):
972972
experiment_name="hg", variant="holdout", event_fields=event_fields
973973
)
974974

975+
def test_get_all_variants_without_expose_ctx_missing_bucketing_key_exception(self):
976+
# no device_id in ctx
977+
dc = DeciderContext(user_id=USER_ID)
978+
979+
self.exp_base_config["exp_1"]["experiment"].update({"bucket_val": "device_id"})
980+
self.exp_base_config.update(self.additional_two_exp)
981+
982+
with create_temp_config_file(self.exp_base_config) as f:
983+
decider = setup_decider(
984+
f, dc, self.mock_span, self.event_logger
985+
)
986+
987+
self.assertEqual(self.event_logger.log.call_count, 0)
988+
989+
decision_arr = decider.get_all_variants_without_expose()
990+
991+
self.assertEqual(len(decision_arr), 2)
992+
993+
self.assertEqual(
994+
first_occurrence_of_key_in(decision_arr, "experimentName", "e1"),
995+
{"id": 6, "name": "e1treat", "version": "4", "experimentName": "e1"},
996+
)
997+
self.assertEqual(
998+
first_occurrence_of_key_in(decision_arr, "experimentName", "e2"),
999+
{"id": 7, "name": "e2treat", "version": "5", "experimentName": "e2"},
1000+
)
1001+
1002+
# no exposures should be triggered
1003+
self.assertEqual(self.event_logger.log.call_count, 0)
1004+
1005+
9751006
def test_get_all_variants_for_identifier_without_expose_user_id(self):
9761007
identifier = USER_ID
9771008
bucket_val = "user_id"

0 commit comments

Comments
 (0)