in geneve/utils/solution_space.py [0:0]
def __ior__(self, other):
if not isinstance(other, Strings):
other = Strings(other)
if other.__set == everything():
self.__set = everything()
self.__exclude = None
return self
if self.__set == everything():
if self.__exclude:
self.__exclude -= other
return self
if not other.__set:
return self
if not self.__set:
self.__set = other.__set.copy()
return self
if self.__exclude is None:
self.__exclude = Strings({})
new = set()
for s in self.__set:
for o in other.__set:
if o[1] and fnmatchcase(s[0].lower(), o[0].lower()): # o has wildcards
new.add(o)
elif s[1] and fnmatchcase(o[0].lower(), s[0].lower()): # s has wildcards
new.add(s)
else:
new.add(s)
new.add(o)
self.__set = new
self.__exclude -= {x[0] for x in new}
return self