Skip to content

Commit acf2680

Browse files
committed
feat: Support segment metadata
1 parent 8eaa386 commit acf2680

File tree

3 files changed

+14
-11
lines changed

3 files changed

+14
-11
lines changed

flag_engine/context/types.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# generated by datamodel-codegen:
2-
# filename: https://raw.githubusercontent.com/Flagsmith/flagsmith/main/sdk/evaluation-context.json # noqa: E501
3-
# timestamp: 2025-08-25T11:10:31+00:00
2+
# filename: https://raw.githubusercontent.com/Flagsmith/flagsmith/main/sdk/evaluation-context.json
3+
# timestamp: 2025-10-10T16:01:57+00:00
44

55
from __future__ import annotations
66

@@ -63,6 +63,7 @@ class SegmentContext(TypedDict):
6363
name: str
6464
rules: List[SegmentRule]
6565
overrides: NotRequired[List[FeatureContext]]
66+
metadata: NotRequired[Dict[str, Any]]
6667

6768

6869
class EvaluationContext(TypedDict):

flag_engine/result/types.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# generated by datamodel-codegen:
2-
# filename: https://raw.githubusercontent.com/Flagsmith/flagsmith/refs/heads/chore/improve-evaluation-result/sdk/evaluation-result.json # noqa: E501
3-
# timestamp: 2025-10-01T11:31:34+00:00
2+
# filename: https://raw.githubusercontent.com/Flagsmith/flagsmith/refs/heads/main/sdk/evaluation-result.json
3+
# timestamp: 2025-10-10T16:01:29+00:00
44

55
from __future__ import annotations
66

7-
from typing import Any, Dict, List, TypedDict
7+
from typing import Any, Dict, List, NotRequired, TypedDict
88

99

1010
class FlagResult(TypedDict):
@@ -18,6 +18,7 @@ class FlagResult(TypedDict):
1818
class SegmentResult(TypedDict):
1919
key: str
2020
name: str
21+
metadata: NotRequired[Dict[str, Any]]
2122

2223

2324
class EvaluationResult(TypedDict):

flag_engine/segments/evaluator.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,13 @@ def get_evaluation_result(context: EvaluationContext) -> EvaluationResult:
4848
if not is_context_in_segment(context, segment_context):
4949
continue
5050

51-
segments.append(
52-
{
53-
"key": segment_context["key"],
54-
"name": segment_context["name"],
55-
}
56-
)
51+
segment_result: SegmentResult = {
52+
"key": segment_context["key"],
53+
"name": segment_context["name"],
54+
}
55+
if metadata := segment_context.get("metadata"):
56+
segment_result["metadata"] = metadata
57+
segments.append(segment_result)
5758

5859
if overrides := segment_context.get("overrides"):
5960
for override_feature_context in overrides:

0 commit comments

Comments
 (0)