def _get_set_items()

in source/lambda/configuration/setbuilders/setbuilder.py [0:0]


    def _get_set_items(self, set_string_list):
        # gets the items from a list of strings
        set_items = set()

        # for every string in the list
        for set_str in set_string_list:
            s = self._format_item(set_str)

            # go through list off all parsers for the builder class
            for parser in self._parsers:
                # execute parser
                value = parser(s)
                # did it return a value
                if value is not None:
                    self._logging.debug("Parser : {}(\"{}\") returns {}".format(parser.__name__, set_str, value))
                    # add result from parser to result set
                    if len(value) > 0:
                        set_items.update(set(value))
                    # if the parser is "all-items" wildcard there is no need for further processing as all items are in the result
                    if parser == self._parse_all:
                        return set_items
                    break
            else:
                # if this point is reached none of the parsers returned one or more items, try _parse_unknown
                value = self._parse_unknown(s)
                if value is not None:
                    self._logging.debug("{}(\"{}\") returns {}".format(self._parse_unknown.__name__, set_str, value))
                    # noinspection PyTypeChecker
                    set_items.update(set(value))
                else:
                    # if it does not return a value then raise an exception because of an unknown item
                    raise ValueError("\"{}\" is an unknown value".format(set_str))

        return set_items