Skip to content

Commit 2790266

Browse files
committed
cloud eval reason
1 parent 77629a8 commit 2790266

File tree

4 files changed

+18
-4
lines changed

4 files changed

+18
-4
lines changed

.github/workflows/run-test-harness.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ jobs:
1818
with:
1919
sdks-to-test: python
2020
sdk-github-sha: ${{github.event.pull_request.head.sha}}
21-
sdk-capabilities: '["cloud", "edgeDB", "clientCustomData","v2Config", "allVariables", "allFeatures", "evalReason"]'
21+
sdk-capabilities: '["cloud", "edgeDB", "clientCustomData","v2Config", "allVariables", "allFeatures", "evalReason", "cloudEvalReason"]'

devcycle_python_sdk/api/bucketing_client.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from devcycle_python_sdk.models.feature import Feature
1616
from devcycle_python_sdk.models.user import DevCycleUser
1717
from devcycle_python_sdk.models.variable import Variable
18+
from devcycle_python_sdk.models.eval_reason import EvalReason
1819
from devcycle_python_sdk.util.strings import slash_join
1920

2021
logger = logging.getLogger(__name__)
@@ -96,6 +97,7 @@ def variable(self, key: str, user: DevCycleUser) -> Variable:
9697
key=data.get("key", ""),
9798
type=data.get("type", ""),
9899
value=data.get("value"),
100+
eval=EvalReason.from_json(data.get("eval")) if data.get("eval") else None,
99101
)
100102

101103
def variables(self, user: DevCycleUser) -> Dict[str, Variable]:

devcycle_python_sdk/cloud_client.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@
1414
BeforeHookError,
1515
AfterHookError,
1616
)
17+
from devcycle_python_sdk.models.eval_reason import (
18+
DefaultReasonDetails,
19+
EvalReason,
20+
EvalReasons,
21+
)
1722
from devcycle_python_sdk.models.eval_hook import EvalHook
1823
from devcycle_python_sdk.models.eval_hook_context import HookContext
1924
from devcycle_python_sdk.models.user import DevCycleUser
@@ -121,7 +126,9 @@ def variable(self, user: DevCycleUser, key: str, default_value: Any) -> Variable
121126
except NotFoundError:
122127
logger.warning(f"DevCycle: Variable not found: {key}")
123128
return Variable.create_default_variable(
124-
key=key, default_value=default_value
129+
key=key,
130+
default_value=default_value,
131+
default_reason_detail=DefaultReasonDetails.MISSING_VARIABLE,
125132
)
126133
except BeforeHookError as e:
127134
self.eval_hooks_manager.run_error(context, e)
@@ -130,7 +137,9 @@ def variable(self, user: DevCycleUser, key: str, default_value: Any) -> Variable
130137
except Exception as e:
131138
logger.error(f"DevCycle: Error evaluating variable: {e}")
132139
return Variable.create_default_variable(
133-
key=key, default_value=default_value
140+
key=key,
141+
default_value=default_value,
142+
default_reason_detail=DefaultReasonDetails.ERROR,
134143
)
135144
finally:
136145
self.eval_hooks_manager.run_finally(context, variable)
@@ -143,7 +152,9 @@ def variable(self, user: DevCycleUser, key: str, default_value: Any) -> Variable
143152
f"DevCycle: Variable {key} is type {type(variable.value)}, but default value is type {type(default_value)}",
144153
)
145154
return Variable.create_default_variable(
146-
key=key, default_value=default_value
155+
key=key,
156+
default_value=default_value,
157+
default_reason_detail=DefaultReasonDetails.TYPE_MISMATCH,
147158
)
148159

149160
return variable

devcycle_python_sdk/models/eval_reason.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class DefaultReasonDetails:
1414
MISSING_CONFIG = "Missing Config"
1515
USER_NOT_TARGETED = "User Not Targeted"
1616
TYPE_MISMATCH = "Variable Type Mismatch"
17+
MISSING_VARIABLE = "Missing Variable"
1718
ERROR = "Error"
1819

1920

0 commit comments

Comments
 (0)