@@ -45,7 +45,7 @@ def get_flag_set(self, flag_set):
4545 with self ._lock :
4646 return self .sets_feature_flag_map .get (flag_set )
4747
48- def add_flag_set (self , flag_set ):
48+ def _add_flag_set (self , flag_set ):
4949 """
5050 Add new flag set to storage
5151 :param flag_set: set name
@@ -55,7 +55,7 @@ def add_flag_set(self, flag_set):
5555 if not self .flag_set_exist (flag_set ):
5656 self .sets_feature_flag_map [flag_set ] = set ()
5757
58- def remove_flag_set (self , flag_set ):
58+ def _remove_flag_set (self , flag_set ):
5959 """
6060 Remove existing flag set from storage
6161 :param flag_set: set name
@@ -89,6 +89,22 @@ def remove_feature_flag_to_flag_set(self, flag_set, feature_flag):
8989 if self .flag_set_exist (flag_set ):
9090 self .sets_feature_flag_map [flag_set ].remove (feature_flag )
9191
92+ def update_flag_set (self , flag_sets , feature_flag_name , should_filter ):
93+ if flag_sets is not None :
94+ for flag_set in flag_sets :
95+ if not self .flag_set_exist (flag_set ):
96+ if should_filter :
97+ continue
98+ self ._add_flag_set (flag_set )
99+ self .add_feature_flag_to_flag_set (flag_set , feature_flag_name )
100+
101+ def remove_flag_set (self , flag_sets , feature_flag_name , should_filter ):
102+ if flag_sets is not None :
103+ for flag_set in flag_sets :
104+ self .remove_feature_flag_to_flag_set (flag_set , feature_flag_name )
105+ if self .flag_set_exist (flag_set ) and len (self .get_flag_set (flag_set )) == 0 and not should_filter :
106+ self ._remove_flag_set (flag_set )
107+
92108class FlagSetsAsync (object ):
93109 """InMemory Flagsets storage."""
94110
@@ -119,7 +135,7 @@ async def get_flag_set(self, flag_set):
119135 async with self ._lock :
120136 return self .sets_feature_flag_map .get (flag_set )
121137
122- async def add_flag_set (self , flag_set ):
138+ async def _add_flag_set (self , flag_set ):
123139 """
124140 Add new flag set to storage
125141 :param flag_set: set name
@@ -129,7 +145,7 @@ async def add_flag_set(self, flag_set):
129145 if not flag_set in self .sets_feature_flag_map .keys ():
130146 self .sets_feature_flag_map [flag_set ] = set ()
131147
132- async def remove_flag_set (self , flag_set ):
148+ async def _remove_flag_set (self , flag_set ):
133149 """
134150 Remove existing flag set from storage
135151 :param flag_set: set name
@@ -163,6 +179,23 @@ async def remove_feature_flag_to_flag_set(self, flag_set, feature_flag):
163179 if flag_set in self .sets_feature_flag_map .keys ():
164180 self .sets_feature_flag_map [flag_set ].remove (feature_flag )
165181
182+ async def update_flag_set (self , flag_sets , feature_flag_name , should_filter ):
183+ if flag_sets is not None :
184+ for flag_set in flag_sets :
185+ if not await self .flag_set_exist (flag_set ):
186+ if should_filter :
187+ continue
188+ await self ._add_flag_set (flag_set )
189+ await self .add_feature_flag_to_flag_set (flag_set , feature_flag_name )
190+
191+ async def remove_flag_set (self , flag_sets , feature_flag_name , should_filter ):
192+ if flag_sets is not None :
193+ for flag_set in flag_sets :
194+ await self .remove_feature_flag_to_flag_set (flag_set , feature_flag_name )
195+ if await self .flag_set_exist (flag_set ) and len (await self .get_flag_set (flag_set )) == 0 and not should_filter :
196+ await self ._remove_flag_set (flag_set )
197+
198+
166199class InMemorySplitStorageBase (SplitStorage ):
167200 """InMemory implementation of a feature flag storage base."""
168201
@@ -342,13 +375,7 @@ def _put(self, feature_flag):
342375 self ._decrease_traffic_type_count (self ._feature_flags [feature_flag .name ].traffic_type_name )
343376 self ._feature_flags [feature_flag .name ] = feature_flag
344377 self ._increase_traffic_type_count (feature_flag .traffic_type_name )
345- if feature_flag .sets is not None :
346- for flag_set in feature_flag .sets :
347- if not self .flag_set .flag_set_exist (flag_set ):
348- if self .flag_set_filter .should_filter :
349- continue
350- self .flag_set .add_flag_set (flag_set )
351- self .flag_set .add_feature_flag_to_flag_set (flag_set , feature_flag .name )
378+ self .flag_set .update_flag_set (feature_flag .sets , feature_flag .name , self .flag_set_filter .should_filter )
352379
353380 def _remove (self , feature_flag_name ):
354381 """
@@ -377,11 +404,7 @@ def _remove_from_flag_sets(self, feature_flag):
377404 :param feature_flag: feature flag object
378405 :type feature_flag: splitio.models.splits.Split
379406 """
380- if feature_flag .sets is not None :
381- for flag_set in feature_flag .sets :
382- self .flag_set .remove_feature_flag_to_flag_set (flag_set , feature_flag .name )
383- if self .is_flag_set_exist (flag_set ) and len (self .flag_set .get_flag_set (flag_set )) == 0 and not self .flag_set_filter .should_filter :
384- self .flag_set .remove_flag_set (flag_set )
407+ self .flag_set .remove_flag_set (feature_flag .sets , feature_flag .name , self .flag_set_filter .should_filter )
385408
386409 def get_feature_flags_by_sets (self , sets ):
387410 """
@@ -557,13 +580,7 @@ async def _put(self, feature_flag):
557580 self ._decrease_traffic_type_count (self ._feature_flags [feature_flag .name ].traffic_type_name )
558581 self ._feature_flags [feature_flag .name ] = feature_flag
559582 self ._increase_traffic_type_count (feature_flag .traffic_type_name )
560- if feature_flag .sets is not None :
561- for flag_set in feature_flag .sets :
562- if not await self .flag_set .flag_set_exist (flag_set ):
563- if self .flag_set_filter .should_filter :
564- continue
565- await self .flag_set .add_flag_set (flag_set )
566- await self .flag_set .add_feature_flag_to_flag_set (flag_set , feature_flag .name )
583+ await self .flag_set .update_flag_set (feature_flag .sets , feature_flag .name , self .flag_set_filter .should_filter )
567584
568585 async def _remove (self , feature_flag_name ):
569586 """
@@ -592,11 +609,7 @@ async def _remove_from_flag_sets(self, feature_flag):
592609 :param feature_flag: feature flag object
593610 :type feature_flag: splitio.models.splits.Split
594611 """
595- if feature_flag .sets is not None :
596- for flag_set in feature_flag .sets :
597- await self .flag_set .remove_feature_flag_to_flag_set (flag_set , feature_flag .name )
598- if await self .is_flag_set_exist (flag_set ) and len (await self .flag_set .get_flag_set (flag_set )) == 0 and not self .flag_set_filter .should_filter :
599- await self .flag_set .remove_flag_set (flag_set )
612+ await self .flag_set .remove_flag_set (feature_flag .sets , feature_flag .name , self .flag_set_filter .should_filter )
600613
601614 async def get_feature_flags_by_sets (self , sets ):
602615 """
0 commit comments