def generate(self, minlen, maxlen):
        """
        Generates words of different length without storing
        them into memory, enforced by itertools.product
        """
        if minlen < 1 or maxlen < minlen:
            raise ValueError()

        for cur in range(minlen, maxlen + 1):
            # string product generator
            str_generator = product(self.charset, repeat=cur)
            for each in str_generator:
                # yield the produced word
                yield ''.join(each)+self.delimiter
def generate ( self , minlen , maxlen ) : if minlen < 1 or maxlen < minlen : raise ValueError ( ) for cur in range ( minlen , maxlen + 1 ) : str_generator = product ( self . charset , repeat = cur ) for each in str_generator : yield '' . join ( each ) + self . delimiter
Generates words of different length without storing
        them into memory, enforced by itertools.product