def run_in_background(self, *, initiator: object | None = None) -> None: from aqt import mw assert mw mw._increase_background_ops() def wrapped_op() -> ResultWithChanges: assert mw return self._op(mw.col) def wrapped_done(future: Future) -> None: assert mw mw._decrease_background_ops() # did something go wrong? if exception := future.exception(): if isinstance(exception, Exception): if self._failure: self._failure(exception) else: show_exception(parent=self._parent, exception=exception) return else: # BaseException like SystemExit; rethrow it future.result() result = future.result() try: if self._success: self._success(result) finally: mw.update_undo_actions() mw.autosave() # fire change hooks self._fire_change_hooks_after_op_performed(result, initiator)
def run_in_background(self) -> None: from aqt import mw assert mw mw._increase_background_ops() def wrapped_op() -> T: assert mw if self._progress: label: str | None if isinstance(self._progress, str): label = self._progress else: label = None def start_progress() -> None: assert mw mw.progress.start(label=label) mw.taskman.run_on_main(start_progress) return self._op(mw.col) def wrapped_done(future: Future) -> None: assert mw mw._decrease_background_ops() # did something go wrong? if exception := future.exception(): if isinstance(exception, Exception): if self._failure: self._failure(exception) else: showWarning(str(exception), self._parent) return else: # BaseException like SystemExit; rethrow it future.result() result = future.result() try: self._success(result) finally: if self._progress: mw.progress.finish()
def run_in_background(self, *, initiator: Optional[object] = None) -> None: from aqt import mw assert mw mw._increase_background_ops() def wrapped_op() -> ResultWithChanges: assert mw return self._op(mw.col) def wrapped_done(future: Future) -> None: assert mw mw._decrease_background_ops() # did something go wrong? if exception := future.exception(): if isinstance(exception, Exception): if self._failure: self._failure(exception) else: showWarning(str(exception), self._parent) return else: # BaseException like SystemExit; rethrow it future.result() result = future.result() try: if self._success: self._success(result) finally: # update undo status status = mw.col.undo_status() mw._update_undo_actions_for_status_and_save(status) # fire change hooks self._fire_change_hooks_after_op_performed(result, initiator)