@@ -17,10 +17,19 @@ class FlagSetsFilter(object):
1717 """Config Flagsets Filter storage."""
1818
1919 def __init__ (self , flag_sets = []):
20+ """Constructor."""
2021 self .flag_sets = set (flag_sets )
2122 self .should_filter = any (flag_sets )
2223
2324 def set_exist (self , flag_set ):
25+ """
26+ Check if a flagset exist in flagset filter
27+
28+ :param flag_set: set name
29+ :type flag_set: str
30+
31+ :rtype: bool
32+ """
2433 if not self .should_filter :
2534 return True
2635 if not isinstance (flag_set , str ) or flag_set == '' :
@@ -29,6 +38,14 @@ def set_exist(self, flag_set):
2938 return any (self .flag_sets .intersection (set ([flag_set ])))
3039
3140 def intersect (self , flag_sets ):
41+ """
42+ Check if a set exist in config flagset filter
43+
44+ :param flag_set: set of flagsets
45+ :type flag_set: set
46+
47+ :rtype: bool
48+ """
3249 if not self .should_filter :
3350 return True
3451 if not isinstance (flag_sets , set ) or len (flag_sets ) == 0 :
@@ -40,36 +57,81 @@ class FlagSets(object):
4057 """InMemory Flagsets storage."""
4158
4259 def __init__ (self , flag_sets = []):
60+ """Constructor."""
4361 self ._lock = threading .RLock ()
4462 self .sets_feature_flag_map = {}
4563 for flag_set in flag_sets :
4664 self .sets_feature_flag_map [flag_set ] = set ()
4765
4866 def flag_set_exist (self , flag_set ):
67+ """
68+ Check if a flagset exist in stored flagset
69+
70+ :param flag_set: set name
71+ :type flag_set: str
72+
73+ :rtype: bool
74+ """
4975 with self ._lock :
5076 return flag_set in self .sets_feature_flag_map .keys ()
5177
5278 def get_flag_set (self , flag_set ):
79+ """
80+ fetch feature flags stored in a flag set
81+
82+ :param flag_set: set name
83+ :type flag_set: str
84+
85+ :rtype: list(str)
86+ """
5387 with self ._lock :
5488 if self .flag_set_exist (flag_set ):
5589 return self .sets_feature_flag_map [flag_set ]
5690
5791 def add_flag_set (self , flag_set ):
92+ """
93+ Add new flag set to storage
94+
95+ :param flag_set: set name
96+ :type flag_set: str
97+ """
5898 with self ._lock :
5999 if not self .flag_set_exist (flag_set ):
60100 self .sets_feature_flag_map [flag_set ] = set ()
61101
62102 def remove_flag_set (self , flag_set ):
103+ """
104+ Remove existing flag set from storage
105+
106+ :param flag_set: set name
107+ :type flag_set: str
108+ """
63109 with self ._lock :
64110 if self .flag_set_exist (flag_set ):
65111 del self .sets_feature_flag_map [flag_set ]
66112
67113 def add_feature_flag_to_flag_set (self , flag_set , feature_flag ):
114+ """
115+ Add a feature flag to existing flag set
116+
117+ :param flag_set: set name
118+ :type flag_set: str
119+ :param feature_flag: feature flag name
120+ :type feature_flag: str
121+ """
68122 with self ._lock :
69123 if self .flag_set_exist (flag_set ):
70124 self .sets_feature_flag_map [flag_set ].add (feature_flag )
71125
72126 def remove_feature_flag_to_flag_set (self , flag_set , feature_flag ):
127+ """
128+ Remove a feature flag from existing flag set
129+
130+ :param flag_set: set name
131+ :type flag_set: str
132+ :param feature_flag: feature flag name
133+ :type feature_flag: str
134+ """
73135 with self ._lock :
74136 if self .flag_set_exist (flag_set ):
75137 self .sets_feature_flag_map [flag_set ].remove (feature_flag )
0 commit comments