sqlbench 0.1.55__tar.gz → 0.1.56__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. {sqlbench-0.1.55 → sqlbench-0.1.56}/PKG-INFO +1 -1
  2. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/main_window.py +19 -10
  3. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/version.py +1 -1
  4. {sqlbench-0.1.55 → sqlbench-0.1.56}/.github/workflows/pypi-publish.yml +0 -0
  5. {sqlbench-0.1.55 → sqlbench-0.1.56}/.gitignore +0 -0
  6. {sqlbench-0.1.55 → sqlbench-0.1.56}/CLAUDE.md +0 -0
  7. {sqlbench-0.1.55 → sqlbench-0.1.56}/Makefile +0 -0
  8. {sqlbench-0.1.55 → sqlbench-0.1.56}/PYQT_MIGRATION_FEATURES.md +0 -0
  9. {sqlbench-0.1.55 → sqlbench-0.1.56}/README.md +0 -0
  10. {sqlbench-0.1.55 → sqlbench-0.1.56}/pyproject.toml +0 -0
  11. {sqlbench-0.1.55 → sqlbench-0.1.56}/requirements.txt +0 -0
  12. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/__init__.py +0 -0
  13. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/__main__.py +0 -0
  14. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/adapters.py +0 -0
  15. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/app.py +0 -0
  16. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/database.py +0 -0
  17. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/dialogs/__init__.py +0 -0
  18. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/dialogs/connection_dialog.py +0 -0
  19. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/dialogs/regex_builder_dialog.py +0 -0
  20. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/launcher.py +0 -0
  21. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/__init__.py +0 -0
  22. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/connection_tree.py +0 -0
  23. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/dialogs/__init__.py +0 -0
  24. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/dialogs/connection_dialog.py +0 -0
  25. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/dialogs/query_manager_dialog.py +0 -0
  26. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/dialogs/record_viewer_dialog.py +0 -0
  27. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/dialogs/regex_builder_dialog.py +0 -0
  28. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/dialogs/settings_dialog.py +0 -0
  29. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/icons.py +0 -0
  30. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/syntax.py +0 -0
  31. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/tab_widget.py +0 -0
  32. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/tabs/__init__.py +0 -0
  33. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/tabs/spool_tab.py +0 -0
  34. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/tabs/sql_tab.py +0 -0
  35. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/qt/theme.py +0 -0
  36. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/resources/db_ibmi.png +0 -0
  37. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/resources/db_mysql.png +0 -0
  38. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/resources/db_postgresql.png +0 -0
  39. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/resources/db_unknown.png +0 -0
  40. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/resources/sqlbench.png +0 -0
  41. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/tabs/__init__.py +0 -0
  42. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/tabs/spool_tab.py +0 -0
  43. {sqlbench-0.1.55 → sqlbench-0.1.56}/sqlbench/tabs/sql_tab.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlbench
3
- Version: 0.1.55
3
+ Version: 0.1.56
4
4
  Summary: A multi-database SQL workbench with support for IBM i, MySQL, and PostgreSQL
5
5
  Project-URL: Homepage, https://github.com/jpsteil/sqlbench
6
6
  Project-URL: Repository, https://github.com/jpsteil/sqlbench
@@ -599,30 +599,39 @@ class MainWindow(QMainWindow):
599
599
 
600
600
  def _run_upgrade(self) -> None:
601
601
  """Run pipx upgrade in background."""
602
+ self._upgrade_result = None # (success: bool, message: str)
603
+
602
604
  def do_upgrade():
603
605
  try:
604
606
  result = subprocess.run(
605
607
  ["pipx", "upgrade", "sqlbench"],
606
608
  capture_output=True, text=True)
607
609
  if result.returncode == 0:
608
- QTimer.singleShot(0, lambda: QMessageBox.information(
609
- self, "Upgrade Complete",
610
- "SQLBench has been upgraded.\nPlease restart to use the new version."))
610
+ self._upgrade_result = (True, "SQLBench has been upgraded.\nPlease restart to use the new version.")
611
611
  else:
612
612
  error = result.stderr or result.stdout or "Unknown error"
613
- QTimer.singleShot(0, lambda: QMessageBox.warning(
614
- self, "Upgrade Failed", f"Failed to upgrade:\n{error}"))
613
+ self._upgrade_result = (False, f"Failed to upgrade:\n{error}")
615
614
  except FileNotFoundError:
616
- QTimer.singleShot(0, lambda: QMessageBox.warning(
617
- self, "Upgrade Failed",
618
- "pipx not found. Please upgrade manually:\n\npipx upgrade sqlbench"))
615
+ self._upgrade_result = (False, "pipx not found. Please upgrade manually:\n\npipx upgrade sqlbench")
619
616
  except Exception as e:
620
- QTimer.singleShot(0, lambda: QMessageBox.warning(
621
- self, "Upgrade Failed", f"Failed to upgrade:\n{e}"))
617
+ self._upgrade_result = (False, f"Failed to upgrade:\n{e}")
618
+
619
+ def poll_result():
620
+ result = self._upgrade_result
621
+ if result is None:
622
+ QTimer.singleShot(500, poll_result)
623
+ return
624
+ success, message = result
625
+ self.status_bar.showMessage("Upgrade complete" if success else "Upgrade failed", 3000)
626
+ if success:
627
+ QMessageBox.information(self, "Upgrade Complete", message)
628
+ else:
629
+ QMessageBox.warning(self, "Upgrade Failed", message)
622
630
 
623
631
  self.status_bar.showMessage("Upgrading SQLBench...")
624
632
  thread = threading.Thread(target=do_upgrade, daemon=True)
625
633
  thread.start()
634
+ QTimer.singleShot(2000, poll_result)
626
635
 
627
636
  def set_status(self, message: str, timeout: int = 0) -> None:
628
637
  """Set status bar message."""
@@ -4,7 +4,7 @@ import threading
4
4
  import urllib.request
5
5
  import json
6
6
 
7
- __version__ = "0.1.55"
7
+ __version__ = "0.1.56"
8
8
 
9
9
 
10
10
  def get_installed_version():
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes