diff --git a/.github/workflows/test_and_deploy.yml b/.github/workflows/test_and_deploy.yml index 9edea9c..71117df 100644 --- a/.github/workflows/test_and_deploy.yml +++ b/.github/workflows/test_and_deploy.yml @@ -75,12 +75,6 @@ jobs: backend: pyqt5 # legacy Qt - - python-version: 3.7 - platform: ubuntu-latest - backend: pyside511 - - python-version: 3.7 - platform: ubuntu-latest - backend: pyqt511 - python-version: 3.7 platform: ubuntu-latest backend: pyqt512 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fa990ab..9fea0e3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,8 +31,6 @@ All widgets must be well-tested, and should work on: - PySide2 (5.11 and above) & PySide6 - macOS, Windows, & Linux -Until [qtpy](https://github.com/spyder-ide/qtpy) supports PyQt6/PySide6, imports -should use (and modify if necessary) `superqt.qtcompat`. ## Style Guide diff --git a/codecov.yml b/codecov.yml index 822e86a..37b89ab 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,6 +1,5 @@ ignore: - superqt/_version.py - - superqt/qtcompat/* - '*_tests*' coverage: status: diff --git a/docs/decorators.md b/docs/decorators.md index 7a1a0f0..083d969 100644 --- a/docs/decorators.md +++ b/docs/decorators.md @@ -16,7 +16,7 @@ an instance of To block and wait for the result, see [Synchronous mode](#synchronous-mode) ```python -from superqt.qtcompat.QtCore import QObject +from qtpy.QtCore import QObject from superqt import ensure_main_thread, ensure_object_thread @ensure_main_thread diff --git a/examples/basic.py b/examples/basic.py index 8d91fd5..4d245f9 100644 --- a/examples/basic.py +++ b/examples/basic.py @@ -1,6 +1,7 @@ +from qtpy.QtCore import Qt +from qtpy.QtWidgets import QApplication + from superqt import QRangeSlider -from superqt.qtcompat.QtCore import Qt -from superqt.qtcompat.QtWidgets import QApplication app = QApplication([]) diff --git a/examples/basic_float.py b/examples/basic_float.py index a4fed2b..82cc6a5 100644 --- a/examples/basic_float.py +++ b/examples/basic_float.py @@ -1,6 +1,7 @@ +from qtpy.QtCore import Qt +from qtpy.QtWidgets import QApplication + from superqt import QDoubleSlider -from superqt.qtcompat.QtCore import Qt -from superqt.qtcompat.QtWidgets import QApplication app = QApplication([]) diff --git a/examples/collapsible.py b/examples/collapsible.py index 8d4eedf..a57c885 100644 --- a/examples/collapsible.py +++ b/examples/collapsible.py @@ -1,6 +1,7 @@ """Example for QCollapsible""" +from qtpy.QtWidgets import QApplication, QLabel, QPushButton + from superqt import QCollapsible -from superqt.qtcompat.QtWidgets import QApplication, QLabel, QPushButton app = QApplication([]) diff --git a/examples/demo_widget.py b/examples/demo_widget.py index 94ff211..909d4e8 100644 --- a/examples/demo_widget.py +++ b/examples/demo_widget.py @@ -1,6 +1,7 @@ +from qtpy import QtCore +from qtpy import QtWidgets as QtW + from superqt import QRangeSlider -from superqt.qtcompat import QtCore -from superqt.qtcompat import QtWidgets as QtW QSS = """ QSlider { diff --git a/examples/eliding_label.py b/examples/eliding_label.py index 71fd7ff..9b055e9 100644 --- a/examples/eliding_label.py +++ b/examples/eliding_label.py @@ -1,5 +1,6 @@ +from qtpy.QtWidgets import QApplication + from superqt import QElidingLabel -from superqt.qtcompat.QtWidgets import QApplication app = QApplication([]) diff --git a/examples/float.py b/examples/float.py index c255b8b..027a5f3 100644 --- a/examples/float.py +++ b/examples/float.py @@ -1,6 +1,7 @@ +from qtpy.QtCore import Qt +from qtpy.QtWidgets import QApplication, QVBoxLayout, QWidget + from superqt import QDoubleRangeSlider, QDoubleSlider, QRangeSlider -from superqt.qtcompat.QtCore import Qt -from superqt.qtcompat.QtWidgets import QApplication, QVBoxLayout, QWidget app = QApplication([]) diff --git a/examples/fonticon1.py b/examples/fonticon1.py index 9971f73..a5dd059 100644 --- a/examples/fonticon1.py +++ b/examples/fonticon1.py @@ -6,9 +6,10 @@ except ImportError as e: "pip install git+https://github.com/tlambert03/fonticon-fontawesome5.git" ) +from qtpy.QtCore import QSize +from qtpy.QtWidgets import QApplication, QPushButton + from superqt.fonticon import icon, pulse -from superqt.qtcompat.QtCore import QSize -from superqt.qtcompat.QtWidgets import QApplication, QPushButton app = QApplication([]) diff --git a/examples/fonticon2.py b/examples/fonticon2.py index f3a49e6..4219eae 100644 --- a/examples/fonticon2.py +++ b/examples/fonticon2.py @@ -6,8 +6,9 @@ except ImportError as e: "pip install git+https://github.com/tlambert03/fonticon-fontawesome5.git" ) +from qtpy.QtWidgets import QApplication, QPushButton + from superqt.fonticon import setTextIcon -from superqt.qtcompat.QtWidgets import QApplication, QPushButton app = QApplication([]) diff --git a/examples/fonticon3.py b/examples/fonticon3.py index 6a90467..af85687 100644 --- a/examples/fonticon3.py +++ b/examples/fonticon3.py @@ -6,9 +6,10 @@ except ImportError as e: "pip install git+https://github.com/tlambert03/fonticon-fontawesome5.git" ) +from qtpy.QtCore import QSize +from qtpy.QtWidgets import QApplication, QPushButton + from superqt.fonticon import IconOpts, icon, pulse, spin -from superqt.qtcompat.QtCore import QSize -from superqt.qtcompat.QtWidgets import QApplication, QPushButton app = QApplication([]) diff --git a/examples/generic.py b/examples/generic.py index 6d31bc1..98b3af3 100644 --- a/examples/generic.py +++ b/examples/generic.py @@ -1,6 +1,7 @@ +from qtpy.QtCore import Qt +from qtpy.QtWidgets import QApplication + from superqt import QDoubleSlider -from superqt.qtcompat.QtCore import Qt -from superqt.qtcompat.QtWidgets import QApplication app = QApplication([]) diff --git a/examples/icon_explorer.py b/examples/icon_explorer.py index 46ca5ce..f5d915e 100644 --- a/examples/icon_explorer.py +++ b/examples/icon_explorer.py @@ -1,6 +1,7 @@ +from qtpy import QtCore, QtGui, QtWidgets +from qtpy.QtCore import Qt + from superqt.fonticon._plugins import loaded -from superqt.qtcompat import QtCore, QtGui, QtWidgets -from superqt.qtcompat.QtCore import Qt P = loaded(load_all=True) if not P: diff --git a/examples/labeled.py b/examples/labeled.py index a7915c4..0cddffd 100644 --- a/examples/labeled.py +++ b/examples/labeled.py @@ -1,11 +1,12 @@ +from qtpy.QtCore import Qt +from qtpy.QtWidgets import QApplication, QHBoxLayout, QVBoxLayout, QWidget + from superqt import ( QLabeledDoubleRangeSlider, QLabeledDoubleSlider, QLabeledRangeSlider, QLabeledSlider, ) -from superqt.qtcompat.QtCore import Qt -from superqt.qtcompat.QtWidgets import QApplication, QHBoxLayout, QVBoxLayout, QWidget app = QApplication([]) diff --git a/examples/multihandle.py b/examples/multihandle.py index 53b464b..3543ce0 100644 --- a/examples/multihandle.py +++ b/examples/multihandle.py @@ -1,5 +1,6 @@ +from qtpy.QtWidgets import QApplication + from superqt import QRangeSlider -from superqt.qtcompat.QtWidgets import QApplication app = QApplication([]) diff --git a/setup.cfg b/setup.cfg index 788922f..f92f454 100644 --- a/setup.cfg +++ b/setup.cfg @@ -35,6 +35,7 @@ project_urls = [options] packages = find: install_requires = + qtpy typing-extensions>=3.10.0.0 python_requires = >=3.7 include_package_data = True @@ -86,11 +87,6 @@ superqt = py.typed exclude = _version.py,.eggs,examples docstring-convention = numpy ignore = E203,W503,E501,C901,F403,F405,D100 -per-file-ignores = - src/superqt/qtcompat/QtCore.py:F401 - src/superqt/qtcompat/QtGui.py:F401 - src/superqt/qtcompat/QtWidgets.py:F401 - src/superqt/qtcompat/__init__.py:F401,F811 [pydocstyle] convention = numpy diff --git a/src/superqt/_eliding_label.py b/src/superqt/_eliding_label.py index 25fa392..877f613 100644 --- a/src/superqt/_eliding_label.py +++ b/src/superqt/_eliding_label.py @@ -1,8 +1,8 @@ from typing import List -from superqt.qtcompat.QtCore import QPoint, QRect, QSize, Qt -from superqt.qtcompat.QtGui import QFont, QFontMetrics, QResizeEvent, QTextLayout -from superqt.qtcompat.QtWidgets import QLabel +from qtpy.QtCore import QPoint, QRect, QSize, Qt +from qtpy.QtGui import QFont, QFontMetrics, QResizeEvent, QTextLayout +from qtpy.QtWidgets import QLabel class QElidingLabel(QLabel): diff --git a/src/superqt/collapsible/_collapsible.py b/src/superqt/collapsible/_collapsible.py index 773c976..de4000f 100644 --- a/src/superqt/collapsible/_collapsible.py +++ b/src/superqt/collapsible/_collapsible.py @@ -1,14 +1,14 @@ """A collapsible widget to hide and unhide child widgets""" from typing import Optional -from ..qtcompat.QtCore import ( +from qtpy.QtCore import ( QAbstractAnimation, QEasingCurve, QMargins, QPropertyAnimation, Qt, ) -from ..qtcompat.QtWidgets import QFrame, QPushButton, QVBoxLayout, QWidget +from qtpy.QtWidgets import QFrame, QPushButton, QVBoxLayout, QWidget class QCollapsible(QFrame): diff --git a/src/superqt/combobox/_enum_combobox.py b/src/superqt/combobox/_enum_combobox.py index 4d862c9..f9baa88 100644 --- a/src/superqt/combobox/_enum_combobox.py +++ b/src/superqt/combobox/_enum_combobox.py @@ -1,8 +1,8 @@ from enum import Enum, EnumMeta from typing import Optional, TypeVar -from ..qtcompat.QtCore import Signal -from ..qtcompat.QtWidgets import QComboBox +from qtpy.QtCore import Signal +from qtpy.QtWidgets import QComboBox EnumType = TypeVar("EnumType", bound=Enum) diff --git a/src/superqt/fonticon/__init__.py b/src/superqt/fonticon/__init__.py index 871bf55..7b4538c 100644 --- a/src/superqt/fonticon/__init__.py +++ b/src/superqt/fonticon/__init__.py @@ -22,8 +22,8 @@ from ._qfont_icon import DEFAULT_SCALING_FACTOR, IconOptionDict, IconOpts from ._qfont_icon import QFontIconStore as _QFIS if TYPE_CHECKING: - from superqt.qtcompat.QtGui import QFont, QTransform - from superqt.qtcompat.QtWidgets import QWidget + from qtpy.QtGui import QFont, QTransform + from qtpy.QtWidgets import QWidget from ._qfont_icon import QFontIcon, ValidColor diff --git a/src/superqt/fonticon/_animations.py b/src/superqt/fonticon/_animations.py index 85ada01..c86bab3 100644 --- a/src/superqt/fonticon/_animations.py +++ b/src/superqt/fonticon/_animations.py @@ -1,8 +1,8 @@ from abc import ABC, abstractmethod -from superqt.qtcompat.QtCore import QRectF, QTimer -from superqt.qtcompat.QtGui import QPainter -from superqt.qtcompat.QtWidgets import QWidget +from qtpy.QtCore import QRectF, QTimer +from qtpy.QtGui import QPainter +from qtpy.QtWidgets import QWidget class Animation(ABC): diff --git a/src/superqt/fonticon/_qfont_icon.py b/src/superqt/fonticon/_qfont_icon.py index ef87bd0..47c50a2 100644 --- a/src/superqt/fonticon/_qfont_icon.py +++ b/src/superqt/fonticon/_qfont_icon.py @@ -6,11 +6,9 @@ from dataclasses import dataclass from pathlib import Path from typing import DefaultDict, Dict, Optional, Sequence, Tuple, Type, Union, cast -from typing_extensions import TypedDict - -from ..qtcompat import QT_VERSION -from ..qtcompat.QtCore import QObject, QPoint, QRect, QSize, Qt -from ..qtcompat.QtGui import ( +from qtpy import QT_VERSION +from qtpy.QtCore import QObject, QPoint, QRect, QSize, Qt +from qtpy.QtGui import ( QColor, QFont, QFontDatabase, @@ -22,7 +20,9 @@ from ..qtcompat.QtGui import ( QPixmapCache, QTransform, ) -from ..qtcompat.QtWidgets import QApplication, QStyleOption, QWidget +from qtpy.QtWidgets import QApplication, QStyleOption, QWidget +from typing_extensions import TypedDict + from ..utils import QMessageHandler from ._animations import Animation diff --git a/src/superqt/qtcompat/Qt3DAnimation.pyi b/src/superqt/qtcompat/Qt3DAnimation.pyi deleted file mode 100644 index f357aa1..0000000 --- a/src/superqt/qtcompat/Qt3DAnimation.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.Qt3DAnimation import * -from PyQt6.Qt3DAnimation import * -from PySide2.Qt3DAnimation import * -from PySide6.Qt3DAnimation import * diff --git a/src/superqt/qtcompat/Qt3DCore.pyi b/src/superqt/qtcompat/Qt3DCore.pyi deleted file mode 100644 index 9d8f8e5..0000000 --- a/src/superqt/qtcompat/Qt3DCore.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.Qt3DCore import * -from PyQt6.Qt3DCore import * -from PySide2.Qt3DCore import * -from PySide6.Qt3DCore import * diff --git a/src/superqt/qtcompat/Qt3DExtras.pyi b/src/superqt/qtcompat/Qt3DExtras.pyi deleted file mode 100644 index 35d7b9e..0000000 --- a/src/superqt/qtcompat/Qt3DExtras.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.Qt3DExtras import * -from PyQt6.Qt3DExtras import * -from PySide2.Qt3DExtras import * -from PySide6.Qt3DExtras import * diff --git a/src/superqt/qtcompat/Qt3DInput.pyi b/src/superqt/qtcompat/Qt3DInput.pyi deleted file mode 100644 index 1569eed..0000000 --- a/src/superqt/qtcompat/Qt3DInput.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.Qt3DInput import * -from PyQt6.Qt3DInput import * -from PySide2.Qt3DInput import * -from PySide6.Qt3DInput import * diff --git a/src/superqt/qtcompat/Qt3DLogic.pyi b/src/superqt/qtcompat/Qt3DLogic.pyi deleted file mode 100644 index 580facd..0000000 --- a/src/superqt/qtcompat/Qt3DLogic.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.Qt3DLogic import * -from PyQt6.Qt3DLogic import * -from PySide2.Qt3DLogic import * -from PySide6.Qt3DLogic import * diff --git a/src/superqt/qtcompat/Qt3DRender.pyi b/src/superqt/qtcompat/Qt3DRender.pyi deleted file mode 100644 index 541e3ce..0000000 --- a/src/superqt/qtcompat/Qt3DRender.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.Qt3DRender import * -from PyQt6.Qt3DRender import * -from PySide2.Qt3DRender import * -from PySide6.Qt3DRender import * diff --git a/src/superqt/qtcompat/QtCharts.pyi b/src/superqt/qtcompat/QtCharts.pyi deleted file mode 100644 index e095480..0000000 --- a/src/superqt/qtcompat/QtCharts.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtCharts import * -from PyQt6.QtCharts import * -from PySide2.QtCharts import * -from PySide6.QtCharts import * diff --git a/src/superqt/qtcompat/QtConcurrent.pyi b/src/superqt/qtcompat/QtConcurrent.pyi deleted file mode 100644 index 7e665d0..0000000 --- a/src/superqt/qtcompat/QtConcurrent.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtConcurrent import * -from PyQt6.QtConcurrent import * -from PySide2.QtConcurrent import * -from PySide6.QtConcurrent import * diff --git a/src/superqt/qtcompat/QtCore.py b/src/superqt/qtcompat/QtCore.py deleted file mode 100644 index d184eb8..0000000 --- a/src/superqt/qtcompat/QtCore.py +++ /dev/null @@ -1,12 +0,0 @@ -# type: ignore -from . import API_NAME, _get_qtmodule - -_QtCore = _get_qtmodule(__name__) -globals().update(_QtCore.__dict__) - -if "PyQt" in API_NAME: - Property = _QtCore.pyqtProperty - Signal = _QtCore.pyqtSignal - SignalInstance = getattr(_QtCore, "pyqtBoundSignal", None) - Slot = _QtCore.pyqtSlot - __version__ = _QtCore.QT_VERSION_STR diff --git a/src/superqt/qtcompat/QtCore.pyi b/src/superqt/qtcompat/QtCore.pyi deleted file mode 100644 index f525ba8..0000000 --- a/src/superqt/qtcompat/QtCore.pyi +++ /dev/null @@ -1,10 +0,0 @@ -from PyQt5.QtCore import * -from PyQt6.QtCore import * -from PySide2.QtCore import * -from PySide6.QtCore import * - -Property = pyqtProperty -Signal = pyqtSignal -SignalInstance = pyqtBoundSignal -Slot = pyqtSlot -__version__: str diff --git a/src/superqt/qtcompat/QtDataVisualization.pyi b/src/superqt/qtcompat/QtDataVisualization.pyi deleted file mode 100644 index 45cc01d..0000000 --- a/src/superqt/qtcompat/QtDataVisualization.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtDataVisualization import * -from PyQt6.QtDataVisualization import * -from PySide2.QtDataVisualization import * -from PySide6.QtDataVisualization import * diff --git a/src/superqt/qtcompat/QtGui.py b/src/superqt/qtcompat/QtGui.py deleted file mode 100644 index de815df..0000000 --- a/src/superqt/qtcompat/QtGui.py +++ /dev/null @@ -1,13 +0,0 @@ -# type: ignore -from . import API_NAME, _get_qtmodule - -_QtGui = _get_qtmodule(__name__) -globals().update(_QtGui.__dict__) - -if "6" in API_NAME: - - def pos(self, *a): - _pos = self.position(*a) - return _pos.toPoint() - - _QtGui.QMouseEvent.pos = pos diff --git a/src/superqt/qtcompat/QtGui.pyi b/src/superqt/qtcompat/QtGui.pyi deleted file mode 100644 index 1df2e9a..0000000 --- a/src/superqt/qtcompat/QtGui.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtGui import * -from PyQt6.QtGui import * -from PySide2.QtGui import * -from PySide6.QtGui import * diff --git a/src/superqt/qtcompat/QtHelp.pyi b/src/superqt/qtcompat/QtHelp.pyi deleted file mode 100644 index 99c8dad..0000000 --- a/src/superqt/qtcompat/QtHelp.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtHelp import * -from PyQt6.QtHelp import * -from PySide2.QtHelp import * -from PySide6.QtHelp import * diff --git a/src/superqt/qtcompat/QtLocation.pyi b/src/superqt/qtcompat/QtLocation.pyi deleted file mode 100644 index eade933..0000000 --- a/src/superqt/qtcompat/QtLocation.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtLocation import * -from PyQt6.QtLocation import * -from PySide2.QtLocation import * -from PySide6.QtLocation import * diff --git a/src/superqt/qtcompat/QtMacExtras.pyi b/src/superqt/qtcompat/QtMacExtras.pyi deleted file mode 100644 index 0d81cea..0000000 --- a/src/superqt/qtcompat/QtMacExtras.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtMacExtras import * -from PyQt6.QtMacExtras import * -from PySide2.QtMacExtras import * -from PySide6.QtMacExtras import * diff --git a/src/superqt/qtcompat/QtMultimedia.pyi b/src/superqt/qtcompat/QtMultimedia.pyi deleted file mode 100644 index dc85fa5..0000000 --- a/src/superqt/qtcompat/QtMultimedia.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtMultimedia import * -from PyQt6.QtMultimedia import * -from PySide2.QtMultimedia import * -from PySide6.QtMultimedia import * diff --git a/src/superqt/qtcompat/QtMultimediaWidgets.pyi b/src/superqt/qtcompat/QtMultimediaWidgets.pyi deleted file mode 100644 index 85b52e3..0000000 --- a/src/superqt/qtcompat/QtMultimediaWidgets.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtMultimediaWidgets import * -from PyQt6.QtMultimediaWidgets import * -from PySide2.QtMultimediaWidgets import * -from PySide6.QtMultimediaWidgets import * diff --git a/src/superqt/qtcompat/QtNetwork.pyi b/src/superqt/qtcompat/QtNetwork.pyi deleted file mode 100644 index fc0b017..0000000 --- a/src/superqt/qtcompat/QtNetwork.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtNetwork import * -from PyQt6.QtNetwork import * -from PySide2.QtNetwork import * -from PySide6.QtNetwork import * diff --git a/src/superqt/qtcompat/QtOpenGL.pyi b/src/superqt/qtcompat/QtOpenGL.pyi deleted file mode 100644 index cbbc22c..0000000 --- a/src/superqt/qtcompat/QtOpenGL.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtOpenGL import * -from PyQt6.QtOpenGL import * -from PySide2.QtOpenGL import * -from PySide6.QtOpenGL import * diff --git a/src/superqt/qtcompat/QtOpenGLFunctions.pyi b/src/superqt/qtcompat/QtOpenGLFunctions.pyi deleted file mode 100644 index 4f3014b..0000000 --- a/src/superqt/qtcompat/QtOpenGLFunctions.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtOpenGLFunctions import * -from PyQt6.QtOpenGLFunctions import * -from PySide2.QtOpenGLFunctions import * -from PySide6.QtOpenGLFunctions import * diff --git a/src/superqt/qtcompat/QtPositioning.pyi b/src/superqt/qtcompat/QtPositioning.pyi deleted file mode 100644 index a15cdee..0000000 --- a/src/superqt/qtcompat/QtPositioning.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtPositioning import * -from PyQt6.QtPositioning import * -from PySide2.QtPositioning import * -from PySide6.QtPositioning import * diff --git a/src/superqt/qtcompat/QtPrintSupport.pyi b/src/superqt/qtcompat/QtPrintSupport.pyi deleted file mode 100644 index 6ef4723..0000000 --- a/src/superqt/qtcompat/QtPrintSupport.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtPrintSupport import * -from PyQt6.QtPrintSupport import * -from PySide2.QtPrintSupport import * -from PySide6.QtPrintSupport import * diff --git a/src/superqt/qtcompat/QtQml.pyi b/src/superqt/qtcompat/QtQml.pyi deleted file mode 100644 index 3af6fe2..0000000 --- a/src/superqt/qtcompat/QtQml.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtQml import * -from PyQt6.QtQml import * -from PySide2.QtQml import * -from PySide6.QtQml import * diff --git a/src/superqt/qtcompat/QtQuick.pyi b/src/superqt/qtcompat/QtQuick.pyi deleted file mode 100644 index a03b7e9..0000000 --- a/src/superqt/qtcompat/QtQuick.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtQuick import * -from PyQt6.QtQuick import * -from PySide2.QtQuick import * -from PySide6.QtQuick import * diff --git a/src/superqt/qtcompat/QtQuickControls2.pyi b/src/superqt/qtcompat/QtQuickControls2.pyi deleted file mode 100644 index 8b29962..0000000 --- a/src/superqt/qtcompat/QtQuickControls2.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtQuickControls2 import * -from PyQt6.QtQuickControls2 import * -from PySide2.QtQuickControls2 import * -from PySide6.QtQuickControls2 import * diff --git a/src/superqt/qtcompat/QtQuickWidgets.pyi b/src/superqt/qtcompat/QtQuickWidgets.pyi deleted file mode 100644 index b3d4878..0000000 --- a/src/superqt/qtcompat/QtQuickWidgets.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtQuickWidgets import * -from PyQt6.QtQuickWidgets import * -from PySide2.QtQuickWidgets import * -from PySide6.QtQuickWidgets import * diff --git a/src/superqt/qtcompat/QtRemoteObjects.pyi b/src/superqt/qtcompat/QtRemoteObjects.pyi deleted file mode 100644 index bda5536..0000000 --- a/src/superqt/qtcompat/QtRemoteObjects.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtRemoteObjects import * -from PyQt6.QtRemoteObjects import * -from PySide2.QtRemoteObjects import * -from PySide6.QtRemoteObjects import * diff --git a/src/superqt/qtcompat/QtScript.pyi b/src/superqt/qtcompat/QtScript.pyi deleted file mode 100644 index 1a2b3f3..0000000 --- a/src/superqt/qtcompat/QtScript.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtScript import * -from PyQt6.QtScript import * -from PySide2.QtScript import * -from PySide6.QtScript import * diff --git a/src/superqt/qtcompat/QtScriptTools.pyi b/src/superqt/qtcompat/QtScriptTools.pyi deleted file mode 100644 index 4471e2d..0000000 --- a/src/superqt/qtcompat/QtScriptTools.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtScriptTools import * -from PyQt6.QtScriptTools import * -from PySide2.QtScriptTools import * -from PySide6.QtScriptTools import * diff --git a/src/superqt/qtcompat/QtScxml.pyi b/src/superqt/qtcompat/QtScxml.pyi deleted file mode 100644 index 6831e1d..0000000 --- a/src/superqt/qtcompat/QtScxml.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtScxml import * -from PyQt6.QtScxml import * -from PySide2.QtScxml import * -from PySide6.QtScxml import * diff --git a/src/superqt/qtcompat/QtSensors.pyi b/src/superqt/qtcompat/QtSensors.pyi deleted file mode 100644 index 00147ba..0000000 --- a/src/superqt/qtcompat/QtSensors.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtSensors import * -from PyQt6.QtSensors import * -from PySide2.QtSensors import * -from PySide6.QtSensors import * diff --git a/src/superqt/qtcompat/QtSerialPort.pyi b/src/superqt/qtcompat/QtSerialPort.pyi deleted file mode 100644 index f018f40..0000000 --- a/src/superqt/qtcompat/QtSerialPort.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtSerialPort import * -from PyQt6.QtSerialPort import * -from PySide2.QtSerialPort import * -from PySide6.QtSerialPort import * diff --git a/src/superqt/qtcompat/QtSql.pyi b/src/superqt/qtcompat/QtSql.pyi deleted file mode 100644 index d4dad99..0000000 --- a/src/superqt/qtcompat/QtSql.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtSql import * -from PyQt6.QtSql import * -from PySide2.QtSql import * -from PySide6.QtSql import * diff --git a/src/superqt/qtcompat/QtSvg.pyi b/src/superqt/qtcompat/QtSvg.pyi deleted file mode 100644 index d7fe576..0000000 --- a/src/superqt/qtcompat/QtSvg.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtSvg import * -from PyQt6.QtSvg import * -from PySide2.QtSvg import * -from PySide6.QtSvg import * diff --git a/src/superqt/qtcompat/QtTest.pyi b/src/superqt/qtcompat/QtTest.pyi deleted file mode 100644 index 4bb798e..0000000 --- a/src/superqt/qtcompat/QtTest.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtTest import * -from PyQt6.QtTest import * -from PySide2.QtTest import * -from PySide6.QtTest import * diff --git a/src/superqt/qtcompat/QtTextToSpeech.pyi b/src/superqt/qtcompat/QtTextToSpeech.pyi deleted file mode 100644 index 4feebeb..0000000 --- a/src/superqt/qtcompat/QtTextToSpeech.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtTextToSpeech import * -from PyQt6.QtTextToSpeech import * -from PySide2.QtTextToSpeech import * -from PySide6.QtTextToSpeech import * diff --git a/src/superqt/qtcompat/QtUiTools.pyi b/src/superqt/qtcompat/QtUiTools.pyi deleted file mode 100644 index e55769c..0000000 --- a/src/superqt/qtcompat/QtUiTools.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtUiTools import * -from PyQt6.QtUiTools import * -from PySide2.QtUiTools import * -from PySide6.QtUiTools import * diff --git a/src/superqt/qtcompat/QtWebChannel.pyi b/src/superqt/qtcompat/QtWebChannel.pyi deleted file mode 100644 index 96f24e2..0000000 --- a/src/superqt/qtcompat/QtWebChannel.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtWebChannel import * -from PyQt6.QtWebChannel import * -from PySide2.QtWebChannel import * -from PySide6.QtWebChannel import * diff --git a/src/superqt/qtcompat/QtWebEngine.pyi b/src/superqt/qtcompat/QtWebEngine.pyi deleted file mode 100644 index 49a66ab..0000000 --- a/src/superqt/qtcompat/QtWebEngine.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtWebEngine import * -from PyQt6.QtWebEngine import * -from PySide2.QtWebEngine import * -from PySide6.QtWebEngine import * diff --git a/src/superqt/qtcompat/QtWebEngineCore.pyi b/src/superqt/qtcompat/QtWebEngineCore.pyi deleted file mode 100644 index e942ee4..0000000 --- a/src/superqt/qtcompat/QtWebEngineCore.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtWebEngineCore import * -from PyQt6.QtWebEngineCore import * -from PySide2.QtWebEngineCore import * -from PySide6.QtWebEngineCore import * diff --git a/src/superqt/qtcompat/QtWebEngineWidgets.pyi b/src/superqt/qtcompat/QtWebEngineWidgets.pyi deleted file mode 100644 index 195a903..0000000 --- a/src/superqt/qtcompat/QtWebEngineWidgets.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtWebEngineWidgets import * -from PyQt6.QtWebEngineWidgets import * -from PySide2.QtWebEngineWidgets import * -from PySide6.QtWebEngineWidgets import * diff --git a/src/superqt/qtcompat/QtWebSockets.pyi b/src/superqt/qtcompat/QtWebSockets.pyi deleted file mode 100644 index 2d0ba40..0000000 --- a/src/superqt/qtcompat/QtWebSockets.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtWebSockets import * -from PyQt6.QtWebSockets import * -from PySide2.QtWebSockets import * -from PySide6.QtWebSockets import * diff --git a/src/superqt/qtcompat/QtWidgets.py b/src/superqt/qtcompat/QtWidgets.py deleted file mode 100644 index 09a8397..0000000 --- a/src/superqt/qtcompat/QtWidgets.py +++ /dev/null @@ -1,16 +0,0 @@ -# type: ignore -from . import API_NAME, _get_qtmodule - -_QtWidgets = _get_qtmodule(__name__) -globals().update(_QtWidgets.__dict__) - - -QApplication = _QtWidgets.QApplication -if not hasattr(QApplication, "exec"): - QApplication.exec = _QtWidgets.QApplication.exec_ - -# backwargs compat with qt5 -if "6" in API_NAME: - _QtGui = _get_qtmodule("QtGui") - QAction = _QtGui.QAction - QShortcut = _QtGui.QShortcut diff --git a/src/superqt/qtcompat/QtWidgets.pyi b/src/superqt/qtcompat/QtWidgets.pyi deleted file mode 100644 index b59539d..0000000 --- a/src/superqt/qtcompat/QtWidgets.pyi +++ /dev/null @@ -1,12 +0,0 @@ -from PyQt5.QtWidgets import * -from PyQt6.QtWidgets import * -from PySide2.QtWidgets import * -from PySide6.QtWidgets import * - -QApplication.exec_ = QApplication.exec - -from PyQt6 import QtGui -from PySide6 import QtGui - -QAction = QtGui.QAction -QShortcut = QtGui.QShortcut diff --git a/src/superqt/qtcompat/QtXml.pyi b/src/superqt/qtcompat/QtXml.pyi deleted file mode 100644 index 50aa8e2..0000000 --- a/src/superqt/qtcompat/QtXml.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtXml import * -from PyQt6.QtXml import * -from PySide2.QtXml import * -from PySide6.QtXml import * diff --git a/src/superqt/qtcompat/QtXmlPatterns.pyi b/src/superqt/qtcompat/QtXmlPatterns.pyi deleted file mode 100644 index 1ef8044..0000000 --- a/src/superqt/qtcompat/QtXmlPatterns.pyi +++ /dev/null @@ -1,4 +0,0 @@ -from PyQt5.QtXmlPatterns import * -from PyQt6.QtXmlPatterns import * -from PySide2.QtXmlPatterns import * -from PySide6.QtXmlPatterns import * diff --git a/src/superqt/qtcompat/__init__.py b/src/superqt/qtcompat/__init__.py index 44f134c..52141e4 100644 --- a/src/superqt/qtcompat/__init__.py +++ b/src/superqt/qtcompat/__init__.py @@ -1,114 +1,20 @@ -from __future__ import annotations - -import os import sys import warnings -from importlib import abc, import_module, util -from typing import TYPE_CHECKING, Optional, Sequence, Union +from importlib import abc, util -if TYPE_CHECKING: - from importlib.machinery import ModuleSpec - from types import ModuleType +from qtpy import * # noqa + +warnings.warn( + "The superqt.qtcompat module is deprecated as of v0.3.0. " + "Please import from `qtpy` instead." +) -class QtMissingError(ImportError): - """Error raise if no bindings could be selected.""" - - -VALID_APIS = { - "pyqt5": "PyQt5", - "pyqt6": "PyQt6", - "pyside2": "PySide2", - "pyside6": "PySide6", -} - -# Detecting if a binding was specified by the user -_requested_api = os.getenv("QT_API", "").lower() -_forced_api = os.getenv("FORCE_QT_API") - -# warn if an invalid API has been requested -if _requested_api and _requested_api not in VALID_APIS: - warnings.warn( - f"invalid QT_API specified: {_requested_api}. " - f"Valid values include {set(VALID_APIS)}" - ) - _forced_api = None - _requested_api = "" - -# TODO: FORCE_QT_API requires also using QT_API ... does that make sense? - -# now we'll try to import QtCore -_QtCore: Optional[ModuleType] = None - -# If `FORCE_QT_API` is not set, we first look for previously imported bindings -if not _forced_api: - for api_name, module_name in VALID_APIS.items(): - if module_name in sys.modules: - _QtCore = import_module(f"{module_name}.QtCore") - break - -if _QtCore is None: - # try the requested API first, and if _forced_api is True, - # raise an ImportError if it doesn't work. - # Otherwise go through the list of Valid APIs until something imports - requested = VALID_APIS.get(_requested_api) - for module_name in sorted(VALID_APIS.values(), key=lambda x: x != requested): - try: - _QtCore = import_module(f"{module_name}.QtCore") - break - except ImportError: - if _forced_api: - ImportError( - "FORCE_QT_API set and unable to import requested QT_API: {e}" - ) - -# didn't find one... not going to work -if _QtCore is None: - raise QtMissingError(f"No QtCore could be found. Tried: {VALID_APIS.values()}") - -# load variables based on what we found. -if not _QtCore.__package__: - raise RuntimeError("QtCore does not declare __package__?") - -API_NAME = _QtCore.__package__ -PYSIDE2 = API_NAME == "PySide2" -PYSIDE6 = API_NAME == "PySide6" -PYQT5 = API_NAME == "PyQt5" -PYQT6 = API_NAME == "PyQt6" -QT_VERSION = getattr(_QtCore, "QT_VERSION_STR", "") or getattr(_QtCore, "__version__") - -# lastly, emit a warning if we ended up with an API other than the one requested -if _requested_api and API_NAME != VALID_APIS[_requested_api]: - warnings.warn( - f"Selected binding {_requested_api!r} could not be found, using {API_NAME!r}" - ) - - -# Setup the meta path finder that lets us import anything using `superqt.qtcompat.Mod` +# forward any requests for superqt.qtcompat.* to qtpy.* class SuperQtImporter(abc.MetaPathFinder): - def find_spec( - self, - fullname: str, - path: Optional[Sequence[Union[bytes, str]]], - target: Optional[ModuleType] = None, - ) -> Optional[ModuleSpec]: - """Find a spec for the specified module. - - If fullname is superqt.X or superqt.qtcompat.Xx ... - it will look for API_NAME.X instead... - - See https://docs.python.org/3/reference/import.html#the-meta-path - """ + def find_spec(self, fullname: str, path, target=None): # type: ignore if fullname.startswith(__name__): - spec = fullname.replace(__name__, API_NAME) - return util.find_spec(spec) - return None - - -def _get_qtmodule(mod_name: str) -> ModuleType: - """Convenience to get a submodule from the current QT_API""" - _mod_name = mod_name.rsplit(".", maxsplit=1)[-1] - return import_module(f"{API_NAME}.{_mod_name}") + return util.find_spec(fullname.replace(__name__, "qtpy")) sys.meta_path.append(SuperQtImporter()) diff --git a/src/superqt/sliders/__init__.pyi b/src/superqt/sliders/__init__.pyi index bf0c65f..c54dcf3 100644 --- a/src/superqt/sliders/__init__.pyi +++ b/src/superqt/sliders/__init__.pyi @@ -1,4 +1,4 @@ -from superqt.qtcompat.QtWidgets import QSlider +from qtpy.QtWidgets import QSlider from ._generic_range_slider import _GenericRangeSlider from ._generic_slider import _GenericSlider diff --git a/src/superqt/sliders/_generic_range_slider.py b/src/superqt/sliders/_generic_range_slider.py index d67b53a..f5142da 100644 --- a/src/superqt/sliders/_generic_range_slider.py +++ b/src/superqt/sliders/_generic_range_slider.py @@ -1,17 +1,9 @@ from typing import Generic, List, Sequence, Tuple, TypeVar, Union -from ..qtcompat import QtGui -from ..qtcompat.QtCore import ( - Property, - QEvent, - QPoint, - QPointF, - QRect, - QRectF, - Qt, - Signal, -) -from ..qtcompat.QtWidgets import QSlider, QStyle, QStyleOptionSlider, QStylePainter +from qtpy import QtGui +from qtpy.QtCore import Property, QEvent, QPoint, QPointF, QRect, QRectF, Qt, Signal +from qtpy.QtWidgets import QSlider, QStyle, QStyleOptionSlider, QStylePainter + from ._generic_slider import CC_SLIDER, SC_GROOVE, SC_HANDLE, SC_NONE, _GenericSlider from ._range_style import RangeSliderStyle, update_styles_from_stylesheet diff --git a/src/superqt/sliders/_generic_slider.py b/src/superqt/sliders/_generic_slider.py index 9063de3..87913ab 100644 --- a/src/superqt/sliders/_generic_slider.py +++ b/src/superqt/sliders/_generic_slider.py @@ -22,9 +22,9 @@ QRangeSlider. from typing import Generic, TypeVar -from ..qtcompat import QtGui -from ..qtcompat.QtCore import QEvent, QPoint, QPointF, QRect, Qt, Signal -from ..qtcompat.QtWidgets import ( +from qtpy import QtGui +from qtpy.QtCore import QEvent, QPoint, QPointF, QRect, Qt, Signal +from qtpy.QtWidgets import ( QApplication, QSlider, QStyle, diff --git a/src/superqt/sliders/_labeled.py b/src/superqt/sliders/_labeled.py index 46a0d87..91ee547 100644 --- a/src/superqt/sliders/_labeled.py +++ b/src/superqt/sliders/_labeled.py @@ -2,9 +2,9 @@ from enum import IntEnum from functools import partial from typing import Any -from ..qtcompat.QtCore import QPoint, QSize, Qt, Signal -from ..qtcompat.QtGui import QFontMetrics, QValidator -from ..qtcompat.QtWidgets import ( +from qtpy.QtCore import QPoint, QSize, Qt, Signal +from qtpy.QtGui import QFontMetrics, QValidator +from qtpy.QtWidgets import ( QAbstractSlider, QApplication, QDoubleSpinBox, @@ -16,6 +16,7 @@ from ..qtcompat.QtWidgets import ( QVBoxLayout, QWidget, ) + from ._sliders import QDoubleRangeSlider, QDoubleSlider, QRangeSlider diff --git a/src/superqt/sliders/_range_style.py b/src/superqt/sliders/_range_style.py index 7dc1de1..8728e91 100644 --- a/src/superqt/sliders/_range_style.py +++ b/src/superqt/sliders/_range_style.py @@ -5,9 +5,9 @@ import re from dataclasses import dataclass, replace from typing import TYPE_CHECKING -from ..qtcompat import QT_VERSION -from ..qtcompat.QtCore import Qt -from ..qtcompat.QtGui import ( +from qtpy import QT_VERSION +from qtpy.QtCore import Qt +from qtpy.QtGui import ( QBrush, QColor, QGradient, @@ -15,7 +15,7 @@ from ..qtcompat.QtGui import ( QPalette, QRadialGradient, ) -from ..qtcompat.QtWidgets import QApplication, QSlider, QStyleOptionSlider +from qtpy.QtWidgets import QApplication, QSlider, QStyleOptionSlider if TYPE_CHECKING: from ._generic_range_slider import _GenericRangeSlider diff --git a/src/superqt/sliders/_sliders.py b/src/superqt/sliders/_sliders.py index 9eb3a26..78747b6 100644 --- a/src/superqt/sliders/_sliders.py +++ b/src/superqt/sliders/_sliders.py @@ -1,4 +1,5 @@ -from ..qtcompat.QtCore import Signal +from qtpy.QtCore import Signal + from ._generic_range_slider import _GenericRangeSlider from ._generic_slider import _GenericSlider diff --git a/src/superqt/spinbox/_intspin.py b/src/superqt/spinbox/_intspin.py index 0b6cef6..7e33368 100644 --- a/src/superqt/spinbox/_intspin.py +++ b/src/superqt/spinbox/_intspin.py @@ -1,8 +1,8 @@ from enum import Enum -from ..qtcompat.QtCore import QSize, Qt, Signal -from ..qtcompat.QtGui import QFontMetrics, QValidator -from ..qtcompat.QtWidgets import QAbstractSpinBox, QStyle, QStyleOptionSpinBox +from qtpy.QtCore import QSize, Qt, Signal +from qtpy.QtGui import QFontMetrics, QValidator +from qtpy.QtWidgets import QAbstractSpinBox, QStyle, QStyleOptionSpinBox class _EmitPolicy(Enum): diff --git a/src/superqt/utils/_ensure_thread.py b/src/superqt/utils/_ensure_thread.py index 41926f0..86876fb 100644 --- a/src/superqt/utils/_ensure_thread.py +++ b/src/superqt/utils/_ensure_thread.py @@ -3,7 +3,7 @@ from concurrent.futures import Future from functools import wraps from typing import Callable, List, Optional -from superqt.qtcompat.QtCore import ( +from qtpy.QtCore import ( QCoreApplication, QMetaObject, QObject, diff --git a/src/superqt/utils/_message_handler.py b/src/superqt/utils/_message_handler.py index f61ea0a..51259c2 100644 --- a/src/superqt/utils/_message_handler.py +++ b/src/superqt/utils/_message_handler.py @@ -2,11 +2,7 @@ import logging from contextlib import suppress from typing import List, NamedTuple, Optional -from superqt.qtcompat.QtCore import ( - QMessageLogContext, - QtMsgType, - qInstallMessageHandler, -) +from qtpy.QtCore import QMessageLogContext, QtMsgType, qInstallMessageHandler class Record(NamedTuple): diff --git a/src/superqt/utils/_qthreading.py b/src/superqt/utils/_qthreading.py index 9ee89a4..8b1cf1e 100644 --- a/src/superqt/utils/_qthreading.py +++ b/src/superqt/utils/_qthreading.py @@ -20,10 +20,9 @@ from typing import ( overload, ) +from qtpy.QtCore import QObject, QRunnable, QThread, QThreadPool, QTimer, Signal from typing_extensions import Literal, ParamSpec -from ..qtcompat.QtCore import QObject, QRunnable, QThread, QThreadPool, QTimer, Signal - if TYPE_CHECKING: _T = TypeVar("_T") diff --git a/tests/test_collapsible.py b/tests/test_collapsible.py index 13f0df8..e4fe89a 100644 --- a/tests/test_collapsible.py +++ b/tests/test_collapsible.py @@ -1,8 +1,9 @@ """A test module for testing collapsible""" +from qtpy.QtCore import QEasingCurve +from qtpy.QtWidgets import QPushButton + from superqt import QCollapsible -from superqt.qtcompat.QtCore import QEasingCurve -from superqt.qtcompat.QtWidgets import QPushButton def test_checked_initialization(qtbot): diff --git a/tests/test_eliding_label.py b/tests/test_eliding_label.py index 6b243f7..df6cd3f 100644 --- a/tests/test_eliding_label.py +++ b/tests/test_eliding_label.py @@ -1,8 +1,9 @@ import platform +from qtpy.QtCore import QSize, Qt +from qtpy.QtGui import QResizeEvent + from superqt import QElidingLabel -from superqt.qtcompat.QtCore import QSize, Qt -from superqt.qtcompat.QtGui import QResizeEvent TEXT = ( "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do " diff --git a/tests/test_ensure_thread.py b/tests/test_ensure_thread.py index 242dd48..cad7dca 100644 --- a/tests/test_ensure_thread.py +++ b/tests/test_ensure_thread.py @@ -4,8 +4,8 @@ import time from concurrent.futures import Future, TimeoutError import pytest +from qtpy.QtCore import QCoreApplication, QObject, QThread, Signal -from superqt.qtcompat.QtCore import QCoreApplication, QObject, QThread, Signal from superqt.utils import ensure_main_thread, ensure_object_thread skip_on_ci = pytest.mark.skipif(bool(os.getenv("CI")), reason="github hangs") diff --git a/tests/test_fonticon/test_fonticon.py b/tests/test_fonticon/test_fonticon.py index 734533b..e6d6f78 100644 --- a/tests/test_fonticon/test_fonticon.py +++ b/tests/test_fonticon/test_fonticon.py @@ -1,11 +1,11 @@ from pathlib import Path import pytest +from qtpy.QtGui import QIcon, QPixmap +from qtpy.QtWidgets import QPushButton from superqt.fonticon import icon, pulse, setTextIcon, spin from superqt.fonticon._qfont_icon import QFontIconStore, _ensure_identifier -from superqt.qtcompat.QtGui import QIcon, QPixmap -from superqt.qtcompat.QtWidgets import QPushButton TEST_PREFIX = "ico" TEST_CHARNAME = "smiley" diff --git a/tests/test_fonticon/test_plugins.py b/tests/test_fonticon/test_plugins.py index 4fe648e..2ee2b7d 100644 --- a/tests/test_fonticon/test_plugins.py +++ b/tests/test_fonticon/test_plugins.py @@ -2,10 +2,10 @@ import sys from pathlib import Path import pytest +from qtpy.QtGui import QIcon, QPixmap from superqt.fonticon import _plugins, icon from superqt.fonticon._qfont_icon import QFontIconStore -from superqt.qtcompat.QtGui import QIcon, QPixmap try: from importlib.metadata import Distribution diff --git a/tests/test_large_int_spinbox.py b/tests/test_large_int_spinbox.py index e9845fd..8349d78 100644 --- a/tests/test_large_int_spinbox.py +++ b/tests/test_large_int_spinbox.py @@ -1,4 +1,5 @@ -from superqt.qtcompat.QtCore import Qt +from qtpy.QtCore import Qt + from superqt.spinbox import QLargeIntSpinBox diff --git a/tests/test_qmessage_handler.py b/tests/test_qmessage_handler.py index 5634e61..beeca9f 100644 --- a/tests/test_qmessage_handler.py +++ b/tests/test_qmessage_handler.py @@ -1,7 +1,8 @@ import logging +from qtpy import QtCore + from superqt import QMessageHandler -from superqt.qtcompat import QtCore def test_message_handler(): diff --git a/tests/test_sliders/_testutil.py b/tests/test_sliders/_testutil.py index 978367a..b26dafb 100644 --- a/tests/test_sliders/_testutil.py +++ b/tests/test_sliders/_testutil.py @@ -2,10 +2,9 @@ from contextlib import suppress from platform import system import pytest - -from superqt.qtcompat import QT_VERSION -from superqt.qtcompat.QtCore import QEvent, QPoint, QPointF, Qt -from superqt.qtcompat.QtGui import QMouseEvent, QWheelEvent +from qtpy import QT_VERSION +from qtpy.QtCore import QEvent, QPoint, QPointF, Qt +from qtpy.QtGui import QMouseEvent, QWheelEvent QT_VERSION = tuple(int(x) for x in QT_VERSION.split(".")) diff --git a/tests/test_sliders/test_float.py b/tests/test_sliders/test_float.py index e2f0a10..5e89d9c 100644 --- a/tests/test_sliders/test_float.py +++ b/tests/test_sliders/test_float.py @@ -1,6 +1,7 @@ import os import pytest +from qtpy import API_NAME from superqt import ( QDoubleRangeSlider, @@ -8,7 +9,6 @@ from superqt import ( QLabeledDoubleRangeSlider, QLabeledDoubleSlider, ) -from superqt.qtcompat import API_NAME range_types = {QDoubleRangeSlider, QLabeledDoubleRangeSlider} diff --git a/tests/test_sliders/test_generic_slider.py b/tests/test_sliders/test_generic_slider.py index 4196177..eae6f69 100644 --- a/tests/test_sliders/test_generic_slider.py +++ b/tests/test_sliders/test_generic_slider.py @@ -2,10 +2,10 @@ import math import platform import pytest +from qtpy.QtCore import QEvent, QPoint, QPointF, Qt +from qtpy.QtGui import QHoverEvent +from qtpy.QtWidgets import QStyle, QStyleOptionSlider -from superqt.qtcompat.QtCore import QEvent, QPoint, QPointF, Qt -from superqt.qtcompat.QtGui import QHoverEvent -from superqt.qtcompat.QtWidgets import QStyle, QStyleOptionSlider from superqt.sliders._generic_slider import _GenericSlider, _sliderValueFromPosition from ._testutil import _linspace, _mouse_event, _wheel_event, skip_on_linux_qt6 diff --git a/tests/test_sliders/test_range_slider.py b/tests/test_sliders/test_range_slider.py index d8cef96..992a982 100644 --- a/tests/test_sliders/test_range_slider.py +++ b/tests/test_sliders/test_range_slider.py @@ -1,11 +1,11 @@ import math import pytest +from qtpy.QtCore import QEvent, QPoint, QPointF, Qt +from qtpy.QtGui import QHoverEvent +from qtpy.QtWidgets import QStyle, QStyleOptionSlider from superqt import QDoubleRangeSlider, QRangeSlider -from superqt.qtcompat.QtCore import QEvent, QPoint, QPointF, Qt -from superqt.qtcompat.QtGui import QHoverEvent -from superqt.qtcompat.QtWidgets import QStyle, QStyleOptionSlider from ._testutil import _linspace, _mouse_event, _wheel_event, skip_on_linux_qt6 diff --git a/tests/test_sliders/test_single_value_sliders.py b/tests/test_sliders/test_single_value_sliders.py index baa290d..f6380a0 100644 --- a/tests/test_sliders/test_single_value_sliders.py +++ b/tests/test_sliders/test_single_value_sliders.py @@ -3,11 +3,11 @@ import platform from contextlib import suppress import pytest +from qtpy.QtCore import QEvent, QPoint, QPointF, Qt +from qtpy.QtGui import QHoverEvent +from qtpy.QtWidgets import QSlider, QStyle, QStyleOptionSlider from superqt import QDoubleSlider, QLabeledDoubleSlider, QLabeledSlider -from superqt.qtcompat.QtCore import QEvent, QPoint, QPointF, Qt -from superqt.qtcompat.QtGui import QHoverEvent -from superqt.qtcompat.QtWidgets import QSlider, QStyle, QStyleOptionSlider from superqt.sliders._generic_slider import _GenericSlider from ._testutil import ( diff --git a/tests/test_sliders/test_slider.py b/tests/test_sliders/test_slider.py index 6abd312..467551a 100644 --- a/tests/test_sliders/test_slider.py +++ b/tests/test_sliders/test_slider.py @@ -1,10 +1,10 @@ import platform import pytest +from qtpy import API_NAME +from qtpy.QtCore import Qt from superqt import QRangeSlider -from superqt.qtcompat import API_NAME -from superqt.qtcompat.QtCore import Qt from superqt.sliders._generic_range_slider import SC_BAR, SC_HANDLE, SC_NONE NOT_LINUX = platform.system() != "Linux" diff --git a/tox.ini b/tox.ini index 86ddb14..638b331 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py{37,38,39,310}-{linux,macos,windows}-{pyqt5,pyside2,pyqt6,pyside6},py37-linux-{pyqt511,pyside511,pyqt512,pyqt513,pyqt514} +envlist = py{37,38,39,310}-{linux,macos,windows}-{pyqt5,pyside2,pyqt6,pyside6},py37-linux-{pyqt512,pyqt513,pyqt514} toxworkdir=/tmp/.tox isolated_build=True @@ -12,7 +12,6 @@ exclude_lines = raise NotImplementedError() omit = superqt/_version.py - superqt/qtcompat/* *_tests* [gh-actions] @@ -37,8 +36,6 @@ BACKEND = pyside2: pyside2 pyqt6: pyqt6 pyside6: pyside6 - pyside511: pyside511 - pyqt511: pyqt511 pyqt512: pyqt512 pyqt513: pyqt513 pyqt514: pyqt514 @@ -50,8 +47,6 @@ platform = windows: win32 passenv = CI GITHUB_ACTIONS DISPLAY XAUTHORITY deps = - pyqt511: pyqt5==5.11.* - pyside511: pyside2==5.11.* pyqt512: pyqt5==5.12.* pyside512: pyside2==5.12.* pyqt513: pyqt5==5.13.*