def blocks(self, start=None, stop=None):
<EOL>block_interval = self.config().get("<STR_LIT>")<EOL>if not start:<EOL><INDENT>start = self.get_current_block_num()<EOL><DEDENT>while True:<EOL><INDENT>head_block = self.get_current_block_num()<EOL>for blocknum in range(start, head_block + <NUM_LIT:1>):<EOL><INDENT>block = self.steem.rpc.get_block(blocknum)<EOL>block.update({"<STR_LIT>": blocknum})<EOL>yield block<EOL><DEDENT>start = head_block + <NUM_LIT:1><EOL>if stop and start > stop:<EOL><INDENT>break<EOL><DEDENT>time.sleep(block_interval)<EOL><DEDENT>
Yields blocks starting from ``start``.

            :param int start: Starting block
            :param int stop: Stop at this block
            :param str mode: We here have the choice between
                 * "head": the last block
                 * "irreversible": the block that is confirmed by 2/3 of all block producers and is thus irreversible!