Skip to content

Commit 9caabdf

Browse files
committed
feat: Remove FeatureContext.feature_key, SegmentResult.key
1 parent 989edcf commit 9caabdf

File tree

8 files changed

+18
-65
lines changed

8 files changed

+18
-65
lines changed

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[submodule "tests/engine_tests/engine-test-data"]
22
path = tests/engine_tests/engine-test-data
33
url = https://github.com/flagsmith/engine-test-data.git
4-
tag = v2.5.0
4+
tag = v3.0.0

flag_engine/context/types.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ class SegmentRule(TypedDict):
5757

5858
class FeatureContext(TypedDict, Generic[FeatureMetadataT]):
5959
key: str
60-
feature_key: str
6160
name: str
6261
enabled: bool
6362
value: Any

flag_engine/result/types.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313

1414
class FlagResult(TypedDict, Generic[FeatureMetadataT]):
15-
feature_key: str
1615
name: str
1716
enabled: bool
1817
value: Any
@@ -21,7 +20,6 @@ class FlagResult(TypedDict, Generic[FeatureMetadataT]):
2120

2221

2322
class SegmentResult(TypedDict, Generic[SegmentMetadataT]):
24-
key: str
2523
name: str
2624
metadata: NotRequired[SegmentMetadataT]
2725

flag_engine/segments/evaluator.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ def get_evaluation_result(
6363
continue
6464

6565
segment_result: SegmentResult[SegmentMetadataT] = {
66-
"key": segment_context["key"],
6766
"name": segment_context["name"],
6867
}
6968
if segment_metadata := segment_context.get("metadata"):
@@ -72,19 +71,19 @@ def get_evaluation_result(
7271

7372
if overrides := segment_context.get("overrides"):
7473
for override_feature_context in overrides:
75-
feature_key = override_feature_context["feature_key"]
74+
feature_name = override_feature_context["name"]
7675
if (
77-
feature_key not in segment_feature_contexts
76+
feature_name not in segment_feature_contexts
7877
or override_feature_context.get(
7978
"priority",
8079
constants.DEFAULT_PRIORITY,
8180
)
82-
< (segment_feature_contexts[feature_key]["feature_context"]).get(
81+
< (segment_feature_contexts[feature_name]["feature_context"]).get(
8382
"priority",
8483
constants.DEFAULT_PRIORITY,
8584
)
8685
):
87-
segment_feature_contexts[feature_key] = (
86+
segment_feature_contexts[feature_name] = (
8887
FeatureContextWithSegmentName(
8988
feature_context=override_feature_context,
9089
segment_name=segment_context["name"],
@@ -99,13 +98,12 @@ def get_evaluation_result(
9998
for feature_context in (context.get("features") or {}).values():
10099
feature_name = feature_context["name"]
101100
if feature_context_with_segment_name := segment_feature_contexts.get(
102-
feature_context["feature_key"],
101+
feature_context["name"],
103102
):
104103
feature_context = feature_context_with_segment_name["feature_context"]
105104
flag_result: FlagResult[FeatureMetadataT]
106105
flags[feature_name] = flag_result = {
107106
"enabled": feature_context["enabled"],
108-
"feature_key": feature_context["feature_key"],
109107
"name": feature_context["name"],
110108
"reason": f"TARGETING_MATCH; segment={feature_context_with_segment_name['segment_name']}",
111109
"value": feature_context.get("value"),
@@ -153,7 +151,6 @@ def get_flag_result_from_feature_context(
153151
if start_percentage <= percentage_value < limit:
154152
flag_result = {
155153
"enabled": feature_context["enabled"],
156-
"feature_key": feature_context["feature_key"],
157154
"name": feature_context["name"],
158155
"reason": f"SPLIT; weight={weight}",
159156
"value": variant["value"],
@@ -165,7 +162,6 @@ def get_flag_result_from_feature_context(
165162
if flag_result is None:
166163
flag_result = {
167164
"enabled": feature_context["enabled"],
168-
"feature_key": feature_context["feature_key"],
169165
"name": feature_context["name"],
170166
"reason": "DEFAULT",
171167
"value": feature_context["value"],
Submodule engine-test-data updated 154 files

tests/unit/conftest.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,12 @@ def segment(segment_rule: SegmentRule) -> SegmentContext:
5353

5454
@pytest.fixture()
5555
def feature_state_1() -> FeatureContext:
56-
return FeatureContext(
57-
feature_key="1", key="1", name="feature_1", value=None, enabled=True
58-
)
56+
return FeatureContext(key="1", name="feature_1", value=None, enabled=True)
5957

6058

6159
@pytest.fixture()
6260
def feature_state_2() -> FeatureContext:
63-
return FeatureContext(
64-
feature_key="2", key="2", name="feature_2", value=None, enabled=False
65-
)
61+
return FeatureContext(key="2", name="feature_2", value=None, enabled=False)
6662

6763

6864
@pytest.fixture()
@@ -89,8 +85,8 @@ def context(
8985
return {
9086
"environment": environment,
9187
"features": {
92-
feature_state_1["feature_key"]: feature_state_1,
93-
feature_state_2["feature_key"]: feature_state_2,
88+
feature_state_1["name"]: feature_state_1,
89+
feature_state_2["name"]: feature_state_2,
9490
},
9591
"segments": {segment["key"]: segment},
9692
"identity": identity,
@@ -126,7 +122,6 @@ def context_in_segment(
126122
"overrides": [
127123
{
128124
"key": "4",
129-
"feature_key": "1",
130125
"name": "feature_1",
131126
"enabled": False,
132127
"value": "segment_override",

tests/unit/segments/test_segments_evaluator.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -803,7 +803,6 @@ def test_segment_condition_matches_context_value_for_modulo(
803803
10,
804804
{
805805
"enabled": False,
806-
"feature_key": "1",
807806
"name": "my_feature",
808807
"reason": "SPLIT; weight=30",
809808
"value": "foo",
@@ -813,7 +812,6 @@ def test_segment_condition_matches_context_value_for_modulo(
813812
40,
814813
{
815814
"enabled": False,
816-
"feature_key": "1",
817815
"name": "my_feature",
818816
"reason": "SPLIT; weight=30",
819817
"value": "bar",
@@ -823,7 +821,6 @@ def test_segment_condition_matches_context_value_for_modulo(
823821
70,
824822
{
825823
"enabled": False,
826-
"feature_key": "1",
827824
"name": "my_feature",
828825
"reason": "DEFAULT",
829826
"value": "control",
@@ -850,7 +847,6 @@ def test_get_flag_result_from_feature_context__calls_returns_expected(
850847
# and have a feature context with some multivariate feature options and associated values
851848
feature_context: FeatureContext = {
852849
"key": expected_feature_context_key,
853-
"feature_key": "1",
854850
"enabled": False,
855851
"name": "my_feature",
856852
"value": "control",
@@ -892,7 +888,6 @@ def test_get_flag_result_from_feature_context__null_key__calls_returns_expected(
892888

893889
feature_context: FeatureContext = {
894890
"key": expected_feature_context_key,
895-
"feature_key": "1",
896891
"enabled": False,
897892
"name": "my_feature",
898893
"value": "control",
@@ -912,7 +907,6 @@ def test_get_flag_result_from_feature_context__null_key__calls_returns_expected(
912907
# the value of the feature state is the default one
913908
assert result == {
914909
"enabled": False,
915-
"feature_key": "1",
916910
"name": "my_feature",
917911
"reason": "DEFAULT",
918912
"value": "control",

0 commit comments

Comments
 (0)