@@ -61,7 +61,7 @@ def __init__(self, datafile, logger, error_handler):
6161 self .event_key_map = self ._generate_key_map (self .events , 'key' , entities .Event )
6262 self .attribute_key_map = self ._generate_key_map (self .attributes , 'key' , entities .Attribute )
6363 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 )
6565 self .audience_id_map = self ._deserialize_audience (self .audience_id_map )
6666 for group in self .group_id_map .values ():
6767 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):
8282 )
8383 self .variation_id_map [experiment .key ] = {}
8484 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
8688
8789 self .parsing_succeeded = True
8890
@@ -145,24 +147,25 @@ def _get_typecast_value(self, value, type):
145147 else :
146148 return value
147149
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 .
150152
151153 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.
154156
155157 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 .
157159 """
158160
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' )]
161164 if not feature_flag :
162165 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 )
164167
165- return variation
168+ return feature_flag_value_map
166169
167170 def was_parsing_successful (self ):
168171 """ Helper method to determine if parsing the datafile was successful.
0 commit comments