66
77import sseclient
88from flag_engine .context .types import (
9- EvaluationContext ,
109 FeatureContext ,
1110 SegmentContext ,
1211 SegmentRule ,
1514from flag_engine .segments .types import ContextValue
1615
1716from flagsmith .models import Segment
18- from flagsmith .types import SegmentMetadata , StreamEvent , TraitConfig
17+ from flagsmith .types import (
18+ SDKEvaluationContext ,
19+ SegmentMetadata ,
20+ StreamEvent ,
21+ TraitConfig ,
22+ )
1923
2024OverrideKey = typing .Tuple [
2125 str ,
2731
2832
2933def map_segment_results_to_identity_segments (
30- segment_results : list [SegmentResult ],
34+ segment_results : list [SegmentResult [ SegmentMetadata ] ],
3135) -> list [Segment ]:
3236 identity_segments : list [Segment ] = []
3337 for segment_result in segment_results :
34- if raw_metadata := segment_result .get ("metadata" ):
35- metadata = typing .cast (SegmentMetadata , raw_metadata )
36- if metadata .get ("source" ) == "api" and (
37- (flagsmith_id := metadata .get ("flagsmith_id" )) is not None
38- ):
39- identity_segments .append (
40- Segment (
41- id = flagsmith_id ,
42- name = segment_result ["name" ],
43- )
38+ metadata = segment_result ["metadata" ]
39+ if metadata .get ("source" ) == "api" and (
40+ (flagsmith_id := metadata .get ("flagsmith_id" )) is not None
41+ ):
42+ identity_segments .append (
43+ Segment (
44+ id = flagsmith_id ,
45+ name = segment_result ["name" ],
4446 )
47+ )
4548 return identity_segments
4649
4750
@@ -66,7 +69,7 @@ def map_environment_document_to_environment_updated_at(
6669
6770
6871def map_context_and_identity_data_to_context (
69- context : EvaluationContext ,
72+ context : SDKEvaluationContext ,
7073 identifier : str ,
7174 traits : typing .Optional [
7275 typing .Mapping [
@@ -77,7 +80,7 @@ def map_context_and_identity_data_to_context(
7780 ],
7881 ]
7982 ],
80- ) -> EvaluationContext :
83+ ) -> SDKEvaluationContext :
8184 return {
8285 ** context ,
8386 "identity" : {
@@ -97,7 +100,7 @@ def map_context_and_identity_data_to_context(
97100
98101def map_environment_document_to_context (
99102 environment_document : dict [str , typing .Any ],
100- ) -> EvaluationContext :
103+ ) -> SDKEvaluationContext :
101104 return {
102105 "environment" : {
103106 "key" : environment_document ["api_key" ],
@@ -122,11 +125,9 @@ def map_environment_document_to_context(
122125 segment .get ("feature_states" ) or []
123126 )
124127 ),
125- "metadata" : dict (
126- SegmentMetadata (
127- flagsmith_id = segment_id ,
128- source = "api" ,
129- )
128+ "metadata" : SegmentMetadata (
129+ flagsmith_id = segment_id ,
130+ source = "api" ,
130131 ),
131132 }
132133 for segment in environment_document ["project" ]["segments" ]
@@ -140,7 +141,7 @@ def map_environment_document_to_context(
140141
141142def _map_identity_overrides_to_segments (
142143 identity_overrides : list [dict [str , typing .Any ]],
143- ) -> dict [str , SegmentContext ]:
144+ ) -> dict [str , SegmentContext [ SegmentMetadata ] ]:
144145 features_to_identifiers : typing .Dict [
145146 OverridesKey ,
146147 typing .List [str ],
@@ -164,12 +165,11 @@ def _map_identity_overrides_to_segments(
164165 )
165166 )
166167 features_to_identifiers [overrides_key ].append (identity_override ["identifier" ])
167- segment_contexts : typing .Dict [str , SegmentContext ] = {}
168+ segment_contexts : typing .Dict [str , SegmentContext [ SegmentMetadata ] ] = {}
168169 for overrides_key , identifiers in features_to_identifiers .items ():
169170 # Create a segment context for each unique set of overrides
170171 # Generate a unique key to avoid collisions
171172 segment_key = str (hash (overrides_key ))
172- segment_metadata = SegmentMetadata (source = "identity_overrides" )
173173 segment_contexts [segment_key ] = SegmentContext (
174174 key = "" , # Identity override segments never use % Split operator
175175 name = "identity_overrides" ,
@@ -196,7 +196,7 @@ def _map_identity_overrides_to_segments(
196196 }
197197 for feature_key , feature_name , feature_enabled , feature_value in overrides_key
198198 ],
199- metadata = dict ( segment_metadata ),
199+ metadata = SegmentMetadata ( source = "identity_overrides" ),
200200 )
201201 return segment_contexts
202202
0 commit comments