def __ior__()

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