code: def evaluate(self, source, cards=None) -> str:
  		
  		from ..utils import weighted_card_choice
  
  		if cards:
  			# Use specific card list if given
  			self.weights = [1]
  			card_sets = [list(cards)]
  		elif not self.weightedfilters:
  			# Use global filters if no weighted filter sets given
  			self.weights = [1]
  			card_sets = [self.find_cards(source)]
  		else:
  			# Otherwise find cards for each set of filters
  			# add the global filters to each set of filters
  			wf = [{**x, **self.filters} for x in self.weightedfilters]
  			card_sets = [self.find_cards(source, **x) for x in wf]
  
  		# get weighted sample of card pools
  		return weighted_card_choice(source, self.weights, card_sets, self.count)
docs: This picks from a single combined card pool without replacement,
  		weighting each filtered set of cards against the total