def do_all_updates(self, seqinfo, special=None):
self.seqinfo = seqinfo<EOL>self.quitting = False<EOL>seqs_todo = self.preloop_initialize(special)<EOL>n = len(seqs_todo)<EOL>_logger.info(f'<STR_LIT>')<EOL>self._install_handlers()<EOL>count, terminated = self.primary_update_loop(seqs_todo)<EOL>self._reset_handlers()<EOL>msg = f'<STR_LIT>'<EOL>if self.quitting:<EOL><INDENT>_logger.error(msg.format('<STR_LIT>'))<EOL><DEDENT>else:<EOL><INDENT>_logger.info(msg.format('<STR_LIT>'))<EOL><DEDENT>self.postloop_finalize(terminated)<EOL>del self.seqinfo<EOL>return self.quitting<EOL>
The only method that external code needs to call. `seqinfo` must
        already be locked and initialized. Returns whether or not the loop was
        aborted due to error, or completed normally.