Skip to content

Commit bf57bdc

Browse files
committed
use warnings.warn for DeciderFeatureNotFoundException in get_variant_without_expose()
1 parent 47a7fbb commit bf57bdc

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

reddit_decider/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,9 @@ def get_variant_without_expose(self, experiment_name: str) -> Optional[str]:
386386

387387
try:
388388
decision = self._rs_decider.choose(experiment_name, ctx)
389+
except DeciderFeatureNotFoundException as exc:
390+
warnings.warn(exc)
391+
return None
389392
except DeciderException as exc:
390393
logger.info(exc)
391394
return None

tests/decider_tests.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,27 @@ def test_get_variant_without_expose_for_holdout_exposure(self):
569569
experiment_name="hg", variant="holdout", event_fields=event_fields
570570
)
571571

572+
def test_none_returned_on_get_variant_without_expose_call_with_experiment_not_found(self):
573+
with create_temp_config_file({}) as f:
574+
decider = setup_decider(f, self.minimal_decider_context, self.mock_span, self.event_logger)
575+
576+
self.assertEqual(self.event_logger.log.call_count, 0)
577+
with warnings.catch_warnings(record=True) as captured:
578+
variant = decider.get_variant_without_expose("anything")
579+
580+
# can't test warning log only shows up only once if `decider.get_variant("anything")`
581+
# is called again due to bug in `catch_warnings` contextmanager
582+
# see https://github.com/python/cpython/issues/73858
583+
assert any(
584+
'Feature "anything" not found.'
585+
in str(x.message)
586+
for x in captured
587+
)
588+
self.assertEqual(variant, None)
589+
590+
# no exposures should be triggered
591+
self.assertEqual(self.event_logger.log.call_count, 0)
592+
572593
def test_get_variant_for_identifier_user_id(self):
573594
identifier = USER_ID
574595
bucket_val = "user_id"

0 commit comments

Comments
 (0)