Skip to content

Commit 438265d

Browse files
committed
get_variant_without_expose() uses RustDecider#choose()
1 parent 50fc901 commit 438265d

File tree

1 file changed

+18
-19
lines changed

1 file changed

+18
-19
lines changed

reddit_decider/__init__.py

+18-19
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ def get_variant(
348348
logger.info(exc)
349349
return None
350350

351-
if decision is not None:
351+
if decision:
352352
event_context_fields = self._decider_context.to_event_dict()
353353
event_context_fields.update(exposure_kwargs or {})
354354

@@ -378,32 +378,31 @@ def get_variant_without_expose(self, experiment_name: str) -> Optional[str]:
378378
379379
:return: Variant name if a variant is assigned, None otherwise.
380380
"""
381-
decider = self._get_decider()
382-
if decider is None:
383-
return None
384-
385-
ctx = self._get_ctx()
386-
ctx_err = ctx.err()
387-
if ctx_err is not None:
388-
logger.info(f"Encountered error in rust_decider.make_ctx(): {ctx_err}")
381+
if self._rs_decider is None:
382+
logger.error("rs_decider is None--did not initialize.")
389383
return None
390384

391-
choice = decider.choose(experiment_name, ctx)
392-
error = choice.err()
385+
ctx = self._decider_context.to_dict()
393386

394-
if error:
395-
logger.info(f"Encountered error in decider.choose(): {error}")
387+
try:
388+
decision = self._rs_decider.choose(experiment_name, ctx)
389+
except ValueError as exc:
390+
logger.info(exc)
396391
return None
397392

398-
variant = choice.decision()
393+
if decision:
394+
event_context_fields = self._decider_context.to_event_dict()
399395

400-
event_context_fields = self._decider_context.to_event_dict()
396+
for event in decision.get("events", []):
397+
self._send_expose_if_holdout(event=event, exposure_fields=event_context_fields)
401398

402-
# expose Holdout if the experiment is part of one
403-
for event in choice.events():
404-
self._send_expose_if_holdout(event=event, exposure_fields=event_context_fields)
399+
try:
400+
return decision["variant"]
401+
except KeyError:
402+
logger.error("Field 'variant' not found in choose() return value")
403+
return None
405404

406-
return variant
405+
return None
407406

408407
def expose(
409408
self, experiment_name: str, variant_name: str, **exposure_kwargs: Optional[Dict[str, Any]]

0 commit comments

Comments
 (0)