|
28 | 28 | from rust_decider import DeciderException |
29 | 29 | from rust_decider import Decision |
30 | 30 | from rust_decider import FeatureNotFoundException |
31 | | -from rust_decider import make_ctx |
32 | 31 | from rust_decider import ValueTypeMismatchException |
33 | 32 | from typing_extensions import Literal |
34 | 33 |
|
@@ -187,16 +186,6 @@ def __init__( |
187 | 186 | else: |
188 | 187 | self._event_logger = DebugLogger() |
189 | 188 |
|
190 | | - def _get_decider(self) -> Optional[T]: |
191 | | - if self._internal is not None: |
192 | | - return self._internal.get_decider() |
193 | | - |
194 | | - return None |
195 | | - |
196 | | - def _get_ctx(self) -> Any: |
197 | | - context_fields = self._decider_context.to_dict() |
198 | | - return make_ctx(context_fields) |
199 | | - |
200 | 189 | def _send_expose(self, event: str, exposure_fields: dict) -> None: |
201 | 190 | event_fields = deepcopy(exposure_fields) |
202 | 191 | try: |
@@ -379,30 +368,31 @@ def expose( |
379 | 368 | if variant_name is None or variant_name == "": |
380 | 369 | return |
381 | 370 |
|
382 | | - decider = self._get_decider() |
383 | | - if decider is None: |
| 371 | + if self._internal is None: |
| 372 | + logger.error("RustDecider is None--did not initialize.") |
384 | 373 | return |
385 | 374 |
|
386 | | - experiment = decider.get_experiment(experiment_name) |
387 | | - error = experiment.err() |
388 | | - if error: |
389 | | - logger.warning(f"Encountered error in decider.get_experiment(): {error}") |
| 375 | + try: |
| 376 | + feature = self._internal.get_feature(experiment_name) |
| 377 | + except FeatureNotFoundException as exc: |
| 378 | + warnings.warn(str(exc)) |
| 379 | + return |
| 380 | + except DeciderException as exc: |
| 381 | + logger.info(str(exc)) |
390 | 382 | return |
391 | 383 |
|
392 | 384 | event_context_fields = self._decider_context.to_event_dict() |
393 | 385 | event_context_fields.update(exposure_kwargs or {}) |
394 | 386 | event_fields = deepcopy(event_context_fields) |
395 | 387 |
|
396 | | - exp_dict = experiment.val() |
397 | | - |
398 | 388 | experiment = ExperimentConfig( |
399 | | - id=int(exp_dict.get("id", 0)), |
400 | | - name=exp_dict.get("name"), |
401 | | - version=str(exp_dict.get("version")), |
402 | | - bucket_val=exp_dict.get("variant_set", {}).get("bucket_val"), |
403 | | - start_ts=exp_dict.get("variant_set", {}).get("start_ts"), |
404 | | - stop_ts=exp_dict.get("variant_set", {}).get("stop_ts"), |
405 | | - owner=exp_dict.get("owner"), |
| 389 | + id=feature.id, |
| 390 | + name=feature.name, |
| 391 | + version=str(feature.version), |
| 392 | + bucket_val=feature.bucket_val, |
| 393 | + start_ts=feature.start_ts, |
| 394 | + stop_ts=feature.stop_ts, |
| 395 | + owner=feature.owner, |
406 | 396 | ) |
407 | 397 |
|
408 | 398 | self._event_logger.log( |
@@ -847,31 +837,28 @@ def get_experiment(self, experiment_name: str) -> Optional[ExperimentConfig]: |
847 | 837 | :return: an :py:class:`~reddit_decider.ExperimentConfig` `dataclass <https://github.com/reddit/experiments.py/blob/develop/reddit_decider/__init__.py#L44>`_ |
848 | 838 | representation of an experiment if found, else :code:`None`. |
849 | 839 | """ |
850 | | - decider = self._get_decider() |
851 | | - if decider is None: |
| 840 | + if self._internal is None: |
| 841 | + logger.error("RustDecider is None--did not initialize.") |
852 | 842 | return None |
853 | 843 |
|
854 | | - experiment = decider.get_experiment(experiment_name) |
855 | | - error = experiment.err() |
856 | | - if error: |
857 | | - # sending to debug logger to avoid printing "Feature x not found." logs |
858 | | - logger.debug(f"Encountered error in decider.get_experiment(): {error}") |
| 844 | + try: |
| 845 | + feature = self._internal.get_feature(experiment_name) |
| 846 | + except FeatureNotFoundException as exc: |
| 847 | + warnings.warn(str(exc)) |
859 | 848 | return None |
860 | | - |
861 | | - exp_dict = experiment.val() |
862 | | - |
863 | | - if exp_dict is None: |
| 849 | + except DeciderException as exc: |
| 850 | + logger.info(str(exc)) |
864 | 851 | return None |
865 | 852 |
|
866 | 853 | return ExperimentConfig( |
867 | | - id=int(exp_dict.get("id", 0)), |
868 | | - name=exp_dict.get("name"), |
869 | | - version=str(exp_dict.get("version")), |
870 | | - bucket_val=exp_dict.get("variant_set", {}).get("bucket_val"), |
871 | | - start_ts=exp_dict.get("variant_set", {}).get("start_ts"), |
872 | | - stop_ts=exp_dict.get("variant_set", {}).get("stop_ts"), |
873 | | - owner=exp_dict.get("owner"), |
874 | | - emit_event=bool(exp_dict.get("emit_event")), |
| 854 | + id=feature.id, |
| 855 | + name=feature.name, |
| 856 | + version=str(feature.version), |
| 857 | + bucket_val=feature.bucket_val, |
| 858 | + start_ts=feature.start_ts, |
| 859 | + stop_ts=feature.stop_ts, |
| 860 | + owner=feature.owner, |
| 861 | + emit_event=feature.emit_event, |
875 | 862 | ) |
876 | 863 |
|
877 | 864 |
|
|
0 commit comments