diff --git a/src/fabio/app/viewer.py b/src/fabio/app/viewer.py index c8c3ef1d..9df853f1 100644 --- a/src/fabio/app/viewer.py +++ b/src/fabio/app/viewer.py @@ -39,7 +39,7 @@ __author__ = "Gaël Goret, Jérôme Kieffer" __copyright__ = "2015-2026 ESRF" __licence__ = "MIT" -__date__ = "12/03/2026" +__date__ = "20/08/2026" import sys diff --git a/src/fabio/qt/dialogs.py b/src/fabio/qt/dialogs.py index 5c94ded8..e28d2808 100644 --- a/src/fabio/qt/dialogs.py +++ b/src/fabio/qt/dialogs.py @@ -38,12 +38,13 @@ import numpy from qtpy import QtWidgets as qt from qtpy.QtWidgets import ( - QMessageBox, - QLabel, - QDialog, - QDialogButtonBox, - QGroupBox, -) + QMessageBox, + QLabel, + QDialog, + QDialogButtonBox, + QGroupBox, + ) + numpy.seterr(divide="ignore") output_format = [ diff --git a/src/fabio/qt/matplotlib.py b/src/fabio/qt/matplotlib.py index 7c3f7eda..c4930bf4 100644 --- a/src/fabio/qt/matplotlib.py +++ b/src/fabio/qt/matplotlib.py @@ -1,6 +1,6 @@ # /*########################################################################## # -# Copyright (c) 2016-2024 European Synchrotron Radiation Facility +# Copyright (c) 2016-2026 European Synchrotron Radiation Facility # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -30,12 +30,10 @@ to the used backend. """ -from __future__ import annotations - __authors__ = ["T. Vincent"] __license__ = "MIT" -__date__ = "12/03/2026" +__date__ = "20/08/2026" import io @@ -45,6 +43,7 @@ from qtpy import API as BINDING from qtpy.QtGui import QFont + # This must be performed before any import from matplotlib if BINDING in ("pyside6", "pyqt6"): matplotlib.use("QtAgg", force=False) diff --git a/src/fabio/qt/viewer.py b/src/fabio/qt/viewer.py index ea442b22..c2f90290 100644 --- a/src/fabio/qt/viewer.py +++ b/src/fabio/qt/viewer.py @@ -51,25 +51,25 @@ from qtpy import QtCore as qtc from qtpy.QtGui import QIcon from qtpy.QtWidgets import ( - QSizePolicy, - QFileDialog, - QMessageBox, - QAction, - QComboBox, - QPlainTextEdit, - QLabel, - QSplitter, - QTabWidget, - QWidget, - QProgressBar, - QGroupBox, - QVBoxLayout, - QHBoxLayout, - QPushButton, - QListWidget, - QCheckBox, - QButtonGroup -) + QSizePolicy, + QFileDialog, + QMessageBox, + QAction, + QComboBox, + QPlainTextEdit, + QLabel, + QSplitter, + QTabWidget, + QWidget, + QProgressBar, + QGroupBox, + QVBoxLayout, + QHBoxLayout, + QPushButton, + QListWidget, + QCheckBox, + QButtonGroup + ) # Matplotlib imports (unchanged) from matplotlib.figure import Figure from .matplotlib import FigureCanvasQTAgg @@ -137,7 +137,7 @@ def format_header(self, d): :param d: dict containing headers :return: formatted string - """ + """ keys = sorted(d.keys()) return " \n".join([f"{k}: {d[k]}" for k in keys]) + " \n" diff --git a/src/fabio/test/test_import.py b/src/fabio/test/test_import.py index 6998e027..da552a93 100644 --- a/src/fabio/test/test_import.py +++ b/src/fabio/test/test_import.py @@ -14,17 +14,22 @@ class TestImport(unittest.TestCase): def test_import_all(self): import fabio - + skip_without_qt = { + "fabio.app.viewer", + "fabio.qt.dialogs", + "fabio.qt.matplotlib", + } + with_qt = os.environ.get("WITH_QT_TEST", "True").lower() not in ("0", "false", "no") + base = os.path.split(fabio.__path__[0])[0] + "/" for root, dirs, files in os.walk(fabio.__path__[0]): for f in files: if f.endswith(".py"): - module = os.path.join(root, f[:-3])[len(base) :].replace( - os.sep, "." - ) + module = os.path.join(root, f[:-3])[len(base):].replace(os.sep, ".") + if not with_qt and module in skip_without_qt: + continue __import__(module) - def suite(): loadTests = unittest.defaultTestLoader.loadTestsFromTestCase testsuite = unittest.TestSuite()