Improve Python Support (#567)

- Reduce requirements for the python build.
- Fix version number.
- Generate type hints for *.pyi files.
- Make functional for sip-build
- Reduced the unnecessary depth of the package.

NOTE: This is a breaking change for python users, where, `from PyQtAds import QtAds` is changed to `import PyQtAds as QtAds`( or simply `import PyQtAds`)
This commit is contained in:
Nate Skulic 2023-10-05 00:23:54 -05:00 committed by GitHub
parent c0985f6497
commit 55ef6ef863
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 23 additions and 19 deletions

View File

@ -2,7 +2,7 @@ import os
import sys import sys
from PyQt5 import uic from PyQt5 import uic
from PyQtAds import QtAds import PyQtAds as QtAds
UI_FILE = os.path.join(os.path.dirname(__file__), 'StatusDialog.ui') UI_FILE = os.path.join(os.path.dirname(__file__), 'StatusDialog.ui')
StatusDialogUI, StatusDialogBase = uic.loadUiType(UI_FILE) StatusDialogUI, StatusDialogBase = uic.loadUiType(UI_FILE)

View File

@ -8,7 +8,7 @@ from PyQt5.QtWidgets import (QApplication, QLabel, QCalendarWidget, QFrame, QTre
QTableWidget, QFileSystemModel, QPlainTextEdit, QToolBar, QTableWidget, QFileSystemModel, QPlainTextEdit, QToolBar,
QWidgetAction, QComboBox, QAction, QSizePolicy, QInputDialog) QWidgetAction, QComboBox, QAction, QSizePolicy, QInputDialog)
from PyQtAds import QtAds import PyQtAds as QtAds
UI_FILE = os.path.join(os.path.dirname(__file__), 'mainwindow.ui') UI_FILE = os.path.join(os.path.dirname(__file__), 'mainwindow.ui')
MainWindowUI, MainWindowBase = uic.loadUiType(UI_FILE) MainWindowUI, MainWindowBase = uic.loadUiType(UI_FILE)

View File

@ -8,7 +8,7 @@ from PyQt5.QtWidgets import (QApplication, QLabel, QCalendarWidget, QFrame, QTre
QTableWidget, QFileSystemModel, QPlainTextEdit, QToolBar, QTableWidget, QFileSystemModel, QPlainTextEdit, QToolBar,
QWidgetAction, QComboBox, QAction, QSizePolicy, QInputDialog) QWidgetAction, QComboBox, QAction, QSizePolicy, QInputDialog)
from PyQtAds import QtAds import PyQtAds as QtAds
UI_FILE = os.path.join(os.path.dirname(__file__), 'mainwindow.ui') UI_FILE = os.path.join(os.path.dirname(__file__), 'mainwindow.ui')
MainWindowUI, MainWindowBase = uic.loadUiType(UI_FILE) MainWindowUI, MainWindowBase = uic.loadUiType(UI_FILE)

View File

@ -1,6 +1,6 @@
import sys import sys
from PyQtAds import QtAds import PyQtAds as QtAds
from PyQt5.QtGui import QCloseEvent from PyQt5.QtGui import QCloseEvent
from PyQt5.QtCore import (qDebug, pyqtSlot, QObject, pyqtSignal) from PyQt5.QtCore import (qDebug, pyqtSlot, QObject, pyqtSignal)
from PyQt5.QtWidgets import (QMainWindow, QAction, QTextEdit, QApplication, from PyQt5.QtWidgets import (QMainWindow, QAction, QTextEdit, QApplication,
@ -70,4 +70,4 @@ if __name__ == '__main__':
action.triggered.connect(on_action2_triggered) action.triggered.connect(on_action2_triggered)
w.show() w.show()
app.exec_() app.exec_()

View File

@ -3,7 +3,7 @@ import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout, QMessageBox, from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout, QMessageBox,
QInputDialog, QMenu, QLineEdit) QInputDialog, QMenu, QLineEdit)
from PyQt5.QtGui import QIcon from PyQt5.QtGui import QIcon
from PyQtAds import QtAds import PyQtAds as QtAds
from dockindockmanager import DockInDockManager from dockindockmanager import DockInDockManager
from perspectiveactions import LoadPerspectiveAction, RemovePerspectiveAction from perspectiveactions import LoadPerspectiveAction, RemovePerspectiveAction
@ -200,4 +200,4 @@ class DockInDockWidget(QWidget):
for closed in self.getManager().dockWidgetsMap().values(): for closed in self.getManager().dockWidgetsMap().values():
if not closed in visible_widgets: if not closed in visible_widgets:
self.dumpStatus(widget=closed, tab=tab, suffix=" (closed)") self.dumpStatus(widget=closed, tab=tab, suffix=" (closed)")

View File

@ -1,7 +1,7 @@
from PyQt5.QtWidgets import QAction, QMenu, QInputDialog, QLineEdit from PyQt5.QtWidgets import QAction, QMenu, QInputDialog, QLineEdit
from PyQt5.QtCore import QSettings from PyQt5.QtCore import QSettings
from PyQtAds import QtAds import PyQtAds as QtAds
CHILD_PREFIX = "Child-" CHILD_PREFIX = "Child-"
@ -211,4 +211,4 @@ class MoveDockWidgetAction(QAction):
widget.dockManager().removeDockWidget(widget) widget.dockManager().removeDockWidget(widget)
move_to.addDockWidget(QtAds.CenterDockWidgetArea, widget, move_to.getInsertDefaultPos()) move_to.addDockWidget(QtAds.CenterDockWidgetArea, widget, move_to.getInsertDefaultPos())
else: else:
assert False assert False

View File

@ -4,7 +4,7 @@ import atexit
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
from PyQt5.QtCore import Qt from PyQt5.QtCore import Qt
from PyQtAds import QtAds import PyQtAds as QtAds
from perspectives import PerspectivesManager from perspectives import PerspectivesManager
from dockindock import DockInDockWidget from dockindock import DockInDockWidget
@ -69,4 +69,4 @@ if __name__ == '__main__':
w = MainWindow() w = MainWindow()
w.show() w.show()
app.exec_() app.exec_()

View File

@ -4,7 +4,7 @@ import shutil
import atexit import atexit
from PyQt5.QtCore import pyqtSignal, QSettings, QObject from PyQt5.QtCore import pyqtSignal, QSettings, QObject
from PyQtAds import QtAds import PyQtAds as QtAds
from dockindockmanager import DockInDockManager from dockindockmanager import DockInDockManager
from dockindock import DockInDockWidget from dockindock import DockInDockWidget
@ -200,4 +200,4 @@ class PerspectivesManager(QObject):
except FileNotFoundError: except FileNotFoundError:
pass pass
if not shutil.copy(settings.fileName(), to_save): if not shutil.copy(settings.fileName(), to_save):
assert False assert False

View File

@ -6,7 +6,7 @@ from PyQt5.QtCore import Qt, QSignalBlocker
from PyQt5.QtWidgets import (QApplication, QMainWindow, QLabel, QComboBox, QTableWidget, from PyQt5.QtWidgets import (QApplication, QMainWindow, QLabel, QComboBox, QTableWidget,
QAction, QWidgetAction, QSizePolicy, QInputDialog) QAction, QWidgetAction, QSizePolicy, QInputDialog)
from PyQt5.QtGui import QCloseEvent from PyQt5.QtGui import QCloseEvent
from PyQtAds import QtAds import PyQtAds as QtAds
UI_FILE = os.path.join(os.path.dirname(__file__), 'mainwindow.ui') UI_FILE = os.path.join(os.path.dirname(__file__), 'mainwindow.ui')
@ -105,4 +105,4 @@ if __name__ == '__main__':
w = CMainWindow() w = CMainWindow()
w.show() w.show()
app.exec_() app.exec_()

View File

@ -5,7 +5,7 @@ from PyQt5 import uic
from PyQt5.QtCore import Qt, QMargins from PyQt5.QtCore import Qt, QMargins
from PyQt5.QtWidgets import QApplication, QLabel, QVBoxLayout, QPlainTextEdit from PyQt5.QtWidgets import QApplication, QLabel, QVBoxLayout, QPlainTextEdit
from PyQtAds import QtAds import PyQtAds as QtAds
UI_FILE = os.path.join(os.path.dirname(__file__), 'MainWindow.ui') UI_FILE = os.path.join(os.path.dirname(__file__), 'MainWindow.ui')
MainWindowUI, MainWindowBase = uic.loadUiType(UI_FILE) MainWindowUI, MainWindowBase = uic.loadUiType(UI_FILE)

View File

@ -6,7 +6,7 @@ from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QCloseEvent from PyQt5.QtGui import QCloseEvent
from PyQt5.QtWidgets import QApplication, QLabel from PyQt5.QtWidgets import QApplication, QLabel
from PyQtAds import QtAds import PyQtAds as QtAds
UI_FILE = os.path.join(os.path.dirname(__file__), 'MainWindow.ui') UI_FILE = os.path.join(os.path.dirname(__file__), 'MainWindow.ui')
MainWindowUI, MainWindowBase = uic.loadUiType(UI_FILE) MainWindowUI, MainWindowBase = uic.loadUiType(UI_FILE)

View File

@ -1,12 +1,12 @@
# Specify the build system. # Specify the build system.
[build-system] [build-system]
requires = ["sip >=6.0.2, <6.3", "PyQt-builder >=1.6, <2", "PyQt5==5.15.4", "PyQt5-sip<13,>=12.8"] requires = ["sip >=6.0.2", "PyQt-builder >=1.6", "PyQt5>=5.15", "PyQt5-sip>=12.8"]
build-backend = "sipbuild.api" build-backend = "sipbuild.api"
# Specify the PEP 566 metadata for the project. # Specify the PEP 566 metadata for the project.
[tool.sip.metadata] [tool.sip.metadata]
name = "PyQtAds" name = "PyQtAds"
version = "4.0.2" version = "4.4.1"
summary = "Python bindings for Qt Advanced Docking System" summary = "Python bindings for Qt Advanced Docking System"
home-page = "https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/" home-page = "https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/"
license = "LGPL v2.1" license = "LGPL v2.1"
@ -16,8 +16,10 @@ description-content-type = "text/markdown"
[tool.sip.project] [tool.sip.project]
tag-prefix = "QtAds" tag-prefix = "QtAds"
dunder-init = true
[tool.sip.bindings.ads] [tool.sip.bindings.ads]
pep484-pyi = true
define-macros = ["ADS_SHARED_EXPORT"] define-macros = ["ADS_SHARED_EXPORT"]
sip-file = "ads.sip" sip-file = "ads.sip"
include-dirs = ["src"] include-dirs = ["src"]

View File

@ -1,4 +1,6 @@
%Module(name=PyQtAds, call_super_init=True, keyword_arguments="Optional", use_limited_api=True) %Module(name=PyQtAds, call_super_init=True, keyword_arguments="Optional", use_limited_api=True)
%HideNamespace(name=ads)
%Import QtCore/QtCoremod.sip %Import QtCore/QtCoremod.sip
%DefaultSupertype sip.simplewrapper %DefaultSupertype sip.simplewrapper