def generate(self, depth, t, *args, **kwargs): alls = list(Strategy[t](depth, *args, **kwargs)) for n in range(depth): for p in itertools.combinations(alls, n): yield set(p)