Skip to content

Commit aa3bdc6

Browse files
committed
improve typing, use defaultdict
1 parent 25ad1b9 commit aa3bdc6

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

flag_engine/context/mappers.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import typing
2+
from collections import defaultdict
23

34
from flag_engine.context.types import (
45
EvaluationContext,
@@ -17,6 +18,14 @@
1718
from flag_engine.result.types import FlagResult
1819
from flag_engine.segments.models import SegmentRuleModel
1920

21+
OverrideKey = typing.Tuple[
22+
str,
23+
str,
24+
bool,
25+
typing.Any,
26+
]
27+
OverridesKey = typing.Tuple[OverrideKey, ...]
28+
2029

2130
def map_environment_identity_to_context(
2231
environment: EnvironmentModel,
@@ -47,9 +56,9 @@ def map_environment_identity_to_context(
4756
# Concatenate feature states overriden for identities
4857
# to segment contexts
4958
features_to_identifiers: typing.Dict[
50-
typing.Tuple[typing.Tuple[str, str, bool, typing.Any], ...],
59+
OverridesKey,
5160
typing.List[str],
52-
] = {}
61+
] = defaultdict(list)
5362
for identity_override in (*environment.identity_overrides, identity):
5463
identity_features: typing.List[FeatureStateModel] = (
5564
identity_override.identity_features
@@ -65,9 +74,7 @@ def map_environment_identity_to_context(
6574
)
6675
for feature_state in sorted(identity_features, key=_get_name)
6776
)
68-
features_to_identifiers.setdefault(overrides_key, []).append(
69-
identity_override.identifier
70-
)
77+
features_to_identifiers[overrides_key].append(identity_override.identifier)
7178
for overrides_key, identifiers in features_to_identifiers.items():
7279
segment_name = f"overrides_{abs(hash(overrides_key))}"
7380
segments[segment_name] = SegmentContext(
@@ -140,7 +147,8 @@ def map_feature_states_to_feature_contexts(
140147
MultivariateFeatureStateValueModel
141148
]
142149
if (
143-
multivariate_feature_state_values := feature_state.multivariate_feature_state_values
150+
multivariate_feature_state_values
151+
:= feature_state.multivariate_feature_state_values
144152
):
145153
feature_ctx_data["variants"] = [
146154
{

0 commit comments

Comments
 (0)