From 6a5432330791439e765bd450c9f3e4670d26c32f Mon Sep 17 00:00:00 2001 From: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com> Date: Mon, 3 Feb 2025 15:31:43 -0800 Subject: [PATCH] refactor: wrap migration_iterator lambda in a try/except block (#773) --- tagstudio/src/qt/widgets/migration_modal.py | 48 ++++++++++++--------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/tagstudio/src/qt/widgets/migration_modal.py b/tagstudio/src/qt/widgets/migration_modal.py index b8b3f4a1..11acd721 100644 --- a/tagstudio/src/qt/widgets/migration_modal.py +++ b/tagstudio/src/qt/widgets/migration_modal.py @@ -367,29 +367,35 @@ class JsonMigrationModal(QObject): pb.setCancelButton(None) self.body_wrapper_01.layout().addWidget(pb) - iterator = FunctionIterator(self.migration_iterator) - iterator.value.connect( - lambda x: ( - pb.setLabelText(f"

{x}

"), - self.update_sql_value_ui(show_msg_box=False) - if x == Translations["json_migration.checking_for_parity"] - else (), - self.update_parity_ui() - if x == Translations["json_migration.checking_for_parity"] - else (), + try: + iterator = FunctionIterator(self.migration_iterator) + iterator.value.connect( + lambda x: ( + pb.setLabelText(f"

{x}

"), + self.update_sql_value_ui(show_msg_box=False) + if x == Translations["json_migration.checking_for_parity"] + else (), + self.update_parity_ui() + if x == Translations["json_migration.checking_for_parity"] + else (), + ) ) - ) - r = CustomRunnable(iterator.run) - r.done.connect( - lambda: ( - self.update_sql_value_ui(show_msg_box=not skip_ui), - pb.setMinimum(1), - pb.setValue(1), - # Enable the finish button - self.stack[1].buttons[4].setDisabled(False), # type: ignore + r = CustomRunnable(iterator.run) + r.done.connect( + lambda: ( + self.update_sql_value_ui(show_msg_box=not skip_ui), + pb.setMinimum(1), + pb.setValue(1), + # Enable the finish button + self.stack[1].buttons[4].setDisabled(False), # type: ignore + ) ) - ) - QThreadPool.globalInstance().start(r) + QThreadPool.globalInstance().start(r) + except Exception as e: + logger.error("[MigrationModal][Iterator] Error:", error=e) + pb.setLabelText(f"

{type(e).__name__}

") + pb.setMinimum(1) + pb.setValue(1) def migration_iterator(self): """Iterate over the library migration process."""