Skip to content

Commit a94e8b6

Browse files
committed
'rs_decider' -> 'internal', bump decider
1 parent 8887ec9 commit a94e8b6

File tree

5 files changed

+27
-29
lines changed

5 files changed

+27
-29
lines changed

reddit_decider/__init__.py

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +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 DeciderFeatureNotFoundException
27+
from rust_decider import FeatureNotFoundException
2828
from rust_decider import DeciderInitException
2929
from rust_decider import make_ctx
3030
from typing_extensions import Literal
@@ -166,13 +166,13 @@ class Decider:
166166
def __init__(
167167
self,
168168
decider_context: DeciderContext,
169-
rs_decider: Optional[RustDecider],
169+
internal: Optional[RustDecider],
170170
server_span: Span,
171171
context_name: str,
172172
event_logger: Optional[EventLogger] = None,
173173
):
174174
self._decider_context = decider_context
175-
self._rs_decider = rs_decider
175+
self._internal = internal
176176
self._span = server_span
177177
self._context_name = context_name
178178
if event_logger:
@@ -181,8 +181,8 @@ def __init__(
181181
self._event_logger = DebugLogger()
182182

183183
def _get_decider(self) -> Optional[T]:
184-
if self._rs_decider is not None:
185-
return self._rs_decider.get_decider()
184+
if self._internal is not None:
185+
return self._internal.get_decider()
186186

187187
return None
188188

@@ -339,15 +339,15 @@ def get_variant(
339339
340340
:return: Variant name if a variant is assigned, :code:`None` otherwise.
341341
"""
342-
if self._rs_decider is None:
343-
logger.error("rs_decider is None--did not initialize.")
342+
if self._internal is None:
343+
logger.error("RustDecider is None--did not initialize.")
344344
return None
345345

346346
ctx = self._decider_context.to_dict()
347347

348348
try:
349-
decision = self._rs_decider.choose(experiment_name, ctx)
350-
except DeciderFeatureNotFoundException as exc:
349+
decision = self._internal.choose(experiment_name, ctx)
350+
except FeatureNotFoundException as exc:
351351
warnings.warn(exc)
352352
return None
353353
except DeciderException as exc:
@@ -377,15 +377,15 @@ def get_variant_without_expose(self, experiment_name: str) -> Optional[str]:
377377
378378
:return: Variant name if a variant is assigned, None otherwise.
379379
"""
380-
if self._rs_decider is None:
381-
logger.error("rs_decider is None--did not initialize.")
380+
if self._internal is None:
381+
logger.error("RustDecider is None--did not initialize.")
382382
return None
383383

384384
ctx = self._decider_context.to_dict()
385385

386386
try:
387-
decision = self._rs_decider.choose(experiment_name, ctx)
388-
except DeciderFeatureNotFoundException as exc:
387+
decision = self._internal.choose(experiment_name, ctx)
388+
except FeatureNotFoundException as exc:
389389
warnings.warn(exc)
390390
return None
391391
except DeciderException as exc:
@@ -1005,14 +1005,14 @@ def _prune_extracted_dict(extracted_dict: dict) -> dict:
10051005

10061006
def _minimal_decider(
10071007
self,
1008-
rs_decider: Optional[RustDecider],
1008+
internal: Optional[RustDecider],
10091009
name: str,
10101010
span: Span,
10111011
parsed_extracted_fields: Optional[Dict] = None,
10121012
) -> Decider:
10131013
return Decider(
10141014
decider_context=DeciderContext(extracted_fields=parsed_extracted_fields),
1015-
rs_decider=rs_decider,
1015+
internal=internal,
10161016
server_span=span,
10171017
context_name=name,
10181018
event_logger=self._event_logger,
@@ -1024,12 +1024,10 @@ def make_object_for_context(self, name: str, span: Span) -> Decider:
10241024
rs_decider = self._filewatcher.get_data()
10251025
except WatchedFileNotAvailableError as exc:
10261026
logger.error(f"Experiment config file unavailable: {exc}")
1027-
except DeciderInitException as exc:
1028-
logger.error(f"Could not load experiment config: {exc}")
10291027

10301028
if span is None:
10311029
logger.debug("`span` is `None` in reddit_decider `make_object_for_context()`.")
1032-
return self._minimal_decider(rs_decider=rs_decider, name=name, span=span)
1030+
return self._minimal_decider(internal=rs_decider, name=name, span=span)
10331031

10341032
request = None
10351033
parsed_extracted_fields = None
@@ -1052,7 +1050,7 @@ def make_object_for_context(self, name: str, span: Span) -> Decider:
10521050
# if `edge_context` is inaccessible, bail early
10531051
if request is None:
10541052
return self._minimal_decider(
1055-
rs_decider=rs_decider,
1053+
internal=rs_decider,
10561054
name=name,
10571055
span=span,
10581056
parsed_extracted_fields=parsed_extracted_fields,
@@ -1062,7 +1060,7 @@ def make_object_for_context(self, name: str, span: Span) -> Decider:
10621060

10631061
if ec is None:
10641062
return self._minimal_decider(
1065-
rs_decider=rs_decider,
1063+
internal=rs_decider,
10661064
name=name,
10671065
span=span,
10681066
parsed_extracted_fields=parsed_extracted_fields,
@@ -1072,7 +1070,7 @@ def make_object_for_context(self, name: str, span: Span) -> Decider:
10721070
f"Unable to access `request.edge_context` in `make_object_for_context()`. details: {exc}"
10731071
)
10741072
return self._minimal_decider(
1075-
rs_decider=rs_decider,
1073+
internal=rs_decider,
10761074
name=name,
10771075
span=span,
10781076
parsed_extracted_fields=parsed_extracted_fields,
@@ -1178,7 +1176,7 @@ def make_object_for_context(self, name: str, span: Span) -> Decider:
11781176

11791177
return Decider(
11801178
decider_context=decider_context,
1181-
rs_decider=rs_decider,
1179+
internal=rs_decider,
11821180
server_span=span,
11831181
context_name=name,
11841182
event_logger=self._event_logger,

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
-r requirements-transitive.txt
22
baseplate==2.0.0a1
33
black==21.4b2
4-
reddit-decider==1.2.25
4+
reddit-decider==1.2.26
55
flake8==3.9.1
66
mypy==0.790
77
pyramid==2.0 # required for `from baseplate.frameworks.pyramid import BaseplateRequest` which calls `import pyramid.events`

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
install_requires=[
2020
"baseplate>=2.0.0a1,<3.0",
2121
"reddit-edgecontext>=1.0.0a3,<2.0",
22-
"reddit-decider~=1.2.25",
22+
"reddit-decider~=1.2.26",
2323
"typing_extensions>=3.10.0.0,<5.0",
2424
],
2525
package_data={"reddit_experiments": ["py.typed"]},

tests/decider_tests.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def setup_decider(file_name, decider_context, mock_span, event_logger):
6868

6969
return Decider(
7070
decider_context=decider_context,
71-
rs_decider=rs_decider,
71+
internal=rs_decider,
7272
server_span=mock_span,
7373
context_name="test",
7474
event_logger=event_logger,
@@ -496,7 +496,7 @@ def test_none_returned_on_variant_call_with_bad_id(self):
496496
self.assertEqual(self.event_logger.log.call_count, 0)
497497

498498
assert any(
499-
'rust_decider.init() has error: Decider initialization failed: Json error: "invalid type: string \\"1\\", expected u32".'
499+
'rust_decider.init() has error: Decider initialization failed: Partially loaded decider: 1 features failed to load.'
500500
in x.getMessage()
501501
for x in captured.records
502502
)
@@ -695,7 +695,7 @@ def test_get_variant_for_identifier_wrong_bucket_val(self):
695695
self.assertEqual(self.event_logger.log.call_count, 0)
696696

697697
assert any(
698-
'Requested identifier_type: "canonical_url" is incompatible with experiment\'s bucket_val = device_id.'
698+
'Encountered error in decider.choose(): Requested identifier_type "canonical_url" is incompatible with experiment\'s bucket_val = device_id'
699699
in x.getMessage()
700700
for x in captured.records
701701
)
@@ -806,7 +806,7 @@ def test_get_variant_for_identifier_without_expose_for_holdout_exposure_wrong_bu
806806
self.assertEqual(variant, None)
807807

808808
assert any(
809-
'Encountered error in decider.choose(): Requested identifier_type: "canonical_url" is incompatible with experiment\'s bucket_val = device_id.'
809+
'Encountered error in decider.choose(): Requested identifier_type "canonical_url" is incompatible with experiment\'s bucket_val = device_id'
810810
in x.getMessage()
811811
for x in captured.records
812812
)

tests/range_variant_tests/range_variant_parity_tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def test_range_variant_bucketing_with_cfg_data(self):
8585

8686
decider = Decider(
8787
decider_context=decider_context,
88-
rs_decider=rs_decider,
88+
internal=rs_decider,
8989
server_span=self.mock_span,
9090
context_name="test",
9191
event_logger=self.event_logger,

0 commit comments

Comments
 (0)