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