@@ -61,7 +61,7 @@ def __init__(self, datafile, logger, error_handler):
61
61
self .event_key_map = self ._generate_key_map (self .events , 'key' , entities .Event )
62
62
self .attribute_key_map = self ._generate_key_map (self .attributes , 'key' , entities .Attribute )
63
63
self .audience_id_map = self ._generate_key_map (self .audiences , 'id' , entities .Audience )
64
- self .flag_id_map = self ._generate_key_map (self .feature_flags , 'id' , entities .FeatureFlag )
64
+ self .feature_flag_id_map = self ._generate_key_map (self .feature_flags , 'id' , entities .FeatureFlag )
65
65
self .audience_id_map = self ._deserialize_audience (self .audience_id_map )
66
66
for group in self .group_id_map .values ():
67
67
experiments_in_group_key_map = self ._generate_key_map (group .experiments , 'key' , entities .Experiment )
@@ -82,7 +82,9 @@ def __init__(self, datafile, logger, error_handler):
82
82
)
83
83
self .variation_id_map [experiment .key ] = {}
84
84
for variation in self .variation_key_map .get (experiment .key ).values ():
85
- self .variation_id_map [experiment .key ][variation .id ] = self ._create_feature_flag_map (variation , self .flag_id_map )
85
+ feature_flag_to_value_map = self ._map_feature_flag_to_value (variation .variables , self .feature_flag_id_map )
86
+ variation .featureFlagMap = feature_flag_to_value_map
87
+ self .variation_id_map [experiment .key ][variation .id ] = variation
86
88
87
89
self .parsing_succeeded = True
88
90
@@ -145,24 +147,25 @@ def _get_typecast_value(self, value, type):
145
147
else :
146
148
return value
147
149
148
- def _create_feature_flag_map (self , variation , flag_id_map ):
149
- """ Helper method to create map on variation object mapping feature flag key to related value.
150
+ def _map_feature_flag_to_value (self , variables , feature_flag_id_map ):
151
+ """ Helper method to create map of feature flag key to associated value for a given variation's feature flag set .
150
152
151
153
Args:
152
- variation: Object representing variation .
153
- flag_id_map : Dict mapping feature flag key to feature flag object.
154
+ variables: List of dicts representing variables on an instance of Variation object .
155
+ feature_flag_id_map : Dict mapping feature flag key to feature flag object.
154
156
155
157
Returns:
156
- Variation object with the feature flag map property computed .
158
+ Dict mapping values from feature flag key to value stored on the variation's variable .
157
159
"""
158
160
159
- for variable in variation .variables :
160
- feature_flag = flag_id_map [variable .get ('id' )]
161
+ feature_flag_value_map = {}
162
+ for variable in variables :
163
+ feature_flag = feature_flag_id_map [variable .get ('id' )]
161
164
if not feature_flag :
162
165
continue
163
- variation . featureFlagMap [feature_flag .key ] = self ._get_typecast_value (variable .get ('value' ), feature_flag .type )
166
+ feature_flag_value_map [feature_flag .key ] = self ._get_typecast_value (variable .get ('value' ), feature_flag .type )
164
167
165
- return variation
168
+ return feature_flag_value_map
166
169
167
170
def was_parsing_successful (self ):
168
171
""" Helper method to determine if parsing the datafile was successful.
0 commit comments