From 6beb45c1d138ae6a667f75b05ac89a410f0b745a Mon Sep 17 00:00:00 2001
From: Philippe F <phil.fremy@free.fr>
Date: Sat, 23 Apr 2022 23:38:11 +0200
Subject: [PATCH 1/3] Add missing platform specific stubs

---
 PyQt5-stubs/QAxContainer.pyi   | 105 ++++++++++++
 PyQt5-stubs/QtMacExtras.pyi    | 120 ++++++++++++++
 PyQt5-stubs/QtTextToSpeech.pyi | 105 ++++++++++++
 PyQt5-stubs/QtWinExtras.pyi    | 295 +++++++++++++++++++++++++++++++++
 4 files changed, 625 insertions(+)
 create mode 100644 PyQt5-stubs/QAxContainer.pyi
 create mode 100644 PyQt5-stubs/QtMacExtras.pyi
 create mode 100644 PyQt5-stubs/QtTextToSpeech.pyi
 create mode 100644 PyQt5-stubs/QtWinExtras.pyi

diff --git a/PyQt5-stubs/QAxContainer.pyi b/PyQt5-stubs/QAxContainer.pyi
new file mode 100644
index 00000000..542bca33
--- /dev/null
+++ b/PyQt5-stubs/QAxContainer.pyi
@@ -0,0 +1,105 @@
+# The PEP 484 type hints stub file for the QAxContainer module.
+#
+# Generated by SIP 6.4.0
+#
+# Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
+# 
+# This file is part of PyQt5.
+# 
+# This file may be used under the terms of the GNU General Public License
+# version 3.0 as published by the Free Software Foundation and appearing in
+# the file LICENSE included in the packaging of this file.  Please review the
+# following information to ensure the GNU General Public License version 3.0
+# requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+# 
+# If you do not wish to use this file under the terms of the GPL version 3.0
+# then you may purchase a commercial license.  For more information contact
+# info@riverbankcomputing.com.
+# 
+# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+
+import typing
+
+import PyQt5.sip
+
+from PyQt5 import QtWidgets
+
+# Support for QDate, QDateTime and QTime.
+import datetime
+
+# Convenient type aliases.
+PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal]
+PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal]
+
+# Convenient aliases for complicated OpenGL types.
+PYQT_OPENGL_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float],
+        PyQt5.sip.Buffer, None]
+PYQT_OPENGL_BOUND_ARRAY = typing.Union[typing.Sequence[int],
+        typing.Sequence[float], PyQt5.sip.Buffer, int, None]
+
+
+class QAxBase(sip.simplewrapper):
+
+    @typing.overload
+    def __init__(self) -> None: ...
+    @typing.overload
+    def __init__(self, a0: 'QAxBase') -> None: ...
+
+    def setClassContext(self, classContext: int) -> None: ...
+    def classContext(self) -> int: ...
+    def disableEventSink(self) -> None: ...
+    def disableClassInfo(self) -> None: ...
+    def disableMetaObject(self) -> None: ...
+    def setControl(self, a0: str) -> bool: ...
+    def clear(self) -> None: ...
+    def exception(self, a0: int, a1: str, a2: str, a3: str) -> None: ...
+    def propertyChanged(self, a0: str) -> None: ...
+    def signal(self, a0: str, a1: int, a2: PyQt5.sip.voidptr) -> None: ...
+    def asVariant(self) -> typing.Any: ...
+    def verbs(self) -> typing.List[str]: ...
+    def isNull(self) -> bool: ...
+    def setPropertyWritable(self, a0: str, a1: bool) -> None: ...
+    def propertyWritable(self, a0: str) -> bool: ...
+    def generateDocumentation(self) -> str: ...
+    def setPropertyBag(self, a0: typing.Dict[str, typing.Any]) -> None: ...
+    def propertyBag(self) -> typing.Dict[str, typing.Any]: ...
+    @typing.overload
+    def querySubObject(self, a0: str, a1: typing.Iterable[typing.Any]) -> 'QAxObject': ...
+    @typing.overload
+    def querySubObject(self, a0: str, value1: typing.Any = ..., value2: typing.Any = ..., value3: typing.Any = ..., value4: typing.Any = ..., value5: typing.Any = ..., value6: typing.Any = ..., value7: typing.Any = ..., value8: typing.Any = ...) -> 'QAxObject': ...
+    @typing.overload
+    def dynamicCall(self, a0: str, a1: typing.Iterable[typing.Any]) -> typing.Any: ...
+    @typing.overload
+    def dynamicCall(self, a0: str, value1: typing.Any = ..., value2: typing.Any = ..., value3: typing.Any = ..., value4: typing.Any = ..., value5: typing.Any = ..., value6: typing.Any = ..., value7: typing.Any = ..., value8: typing.Any = ...) -> typing.Any: ...
+    def control(self) -> str: ...
+
+
+class QAxObject(QtCore.QObject, QAxBase):
+
+    @typing.overload
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+    @typing.overload
+    def __init__(self, a0: str, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def connectNotify(self, a0: QtCore.QMetaMethod) -> None: ...
+    def doVerb(self, a0: str) -> bool: ...
+
+
+class QAxWidget(QtWidgets.QWidget, QAxBase):
+
+    @typing.overload
+    def __init__(self, parent: typing.Optional[QtWidgets.QWidget] = ..., flags: typing.Union[QtCore.Qt.WindowFlags, QtCore.Qt.WindowType] = ...) -> None: ...
+    @typing.overload
+    def __init__(self, a0: str, parent: typing.Optional[QtWidgets.QWidget] = ..., flags: typing.Union[QtCore.Qt.WindowFlags, QtCore.Qt.WindowType] = ...) -> None: ...
+
+    def connectNotify(self, a0: QtCore.QMetaMethod) -> None: ...
+    def translateKeyEvent(self, a0: int, a1: int) -> bool: ...
+    def resizeEvent(self, a0: QtGui.QResizeEvent) -> None: ...
+    def changeEvent(self, a0: QtCore.QEvent) -> None: ...
+    def createHostWindow(self, a0: bool) -> bool: ...
+    def minimumSizeHint(self) -> QtCore.QSize: ...
+    def sizeHint(self) -> QtCore.QSize: ...
+    def doVerb(self, a0: str) -> bool: ...
+    def clear(self) -> None: ...
diff --git a/PyQt5-stubs/QtMacExtras.pyi b/PyQt5-stubs/QtMacExtras.pyi
new file mode 100644
index 00000000..f92fbb5a
--- /dev/null
+++ b/PyQt5-stubs/QtMacExtras.pyi
@@ -0,0 +1,120 @@
+# The PEP 484 type hints stub file for the QtMacExtras module.
+#
+# Generated by SIP 6.4.0
+#
+# Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
+# 
+# This file is part of PyQt5.
+# 
+# This file may be used under the terms of the GNU General Public License
+# version 3.0 as published by the Free Software Foundation and appearing in
+# the file LICENSE included in the packaging of this file.  Please review the
+# following information to ensure the GNU General Public License version 3.0
+# requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+# 
+# If you do not wish to use this file under the terms of the GPL version 3.0
+# then you may purchase a commercial license.  For more information contact
+# info@riverbankcomputing.com.
+# 
+# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+
+import typing
+
+import PyQt5.sip
+
+from PyQt5 import QtGui
+from PyQt5 import QtCore
+
+# Support for QDate, QDateTime and QTime.
+import datetime
+
+# Convenient type aliases.
+PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal]
+PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal]
+
+# Convenient aliases for complicated OpenGL types.
+PYQT_OPENGL_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float],
+        PyQt5.sip.Buffer, None]
+PYQT_OPENGL_BOUND_ARRAY = typing.Union[typing.Sequence[int],
+        typing.Sequence[float], PyQt5.sip.Buffer, int, None]
+
+
+class QMacPasteboardMime(sip.simplewrapper):
+
+    class QMacPasteboardMimeType(int):
+        MIME_DND = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
+        MIME_CLIP = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
+        MIME_QT_CONVERTOR = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
+        MIME_QT3_CONVERTOR = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
+        MIME_ALL = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
+
+    @typing.overload
+    def __init__(self, t: int) -> None: ...
+    @typing.overload
+    def __init__(self, a0: 'QMacPasteboardMime') -> None: ...
+
+    def count(self, mimeData: QtCore.QMimeData) -> int: ...
+    def convertFromMime(self, mime: str, data: typing.Any, flav: str) -> typing.List[QtCore.QByteArray]: ...
+    def convertToMime(self, mime: str, data: typing.Iterable[typing.Union[QtCore.QByteArray, bytes, bytearray]], flav: str) -> typing.Any: ...
+    def flavorFor(self, mime: str) -> str: ...
+    def mimeFor(self, flav: str) -> str: ...
+    def canConvert(self, mime: str, flav: str) -> bool: ...
+    def convertorName(self) -> str: ...
+
+
+class NSToolbar(sip.simplewrapper): ...
+
+
+class QMacToolBar(QtCore.QObject):
+
+    @typing.overload
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+    @typing.overload
+    def __init__(self, identifier: str, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def nativeToolbar(self) -> NSToolbar: ...
+    def detachFromWindow(self) -> None: ...
+    def attachToWindow(self, window: QtGui.QWindow) -> None: ...
+    def allowedItems(self) -> typing.List['QMacToolBarItem']: ...
+    def setAllowedItems(self, allowedItems: typing.Iterable['QMacToolBarItem']) -> None: ...
+    def items(self) -> typing.List['QMacToolBarItem']: ...
+    def setItems(self, items: typing.Iterable['QMacToolBarItem']) -> None: ...
+    def addSeparator(self) -> None: ...
+    def addAllowedItem(self, icon: QtGui.QIcon, text: str) -> 'QMacToolBarItem': ...
+    def addItem(self, icon: QtGui.QIcon, text: str) -> 'QMacToolBarItem': ...
+
+
+class NSToolbarItem(sip.simplewrapper): ...
+
+
+class QMacToolBarItem(QtCore.QObject):
+
+    class StandardItem(int):
+        NoStandardItem = ... # type: QMacToolBarItem.StandardItem
+        Space = ... # type: QMacToolBarItem.StandardItem
+        FlexibleSpace = ... # type: QMacToolBarItem.StandardItem
+
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def activated(self) -> None: ...
+    def nativeToolBarItem(self) -> NSToolbarItem: ...
+    def setIcon(self, icon: QtGui.QIcon) -> None: ...
+    def icon(self) -> QtGui.QIcon: ...
+    def setText(self, text: str) -> None: ...
+    def text(self) -> str: ...
+    def setStandardItem(self, standardItem: 'QMacToolBarItem.StandardItem') -> None: ...
+    def standardItem(self) -> 'QMacToolBarItem.StandardItem': ...
+    def setSelectable(self, selectable: bool) -> None: ...
+    def selectable(self) -> bool: ...
+
+
+class QtMac(PyQt5.sip.simplewrapper):
+
+    def isMainWindow(self, window: QtGui.QWindow) -> bool: ...
+    def badgeLabelText(self) -> str: ...
+    def setBadgeLabelText(self, text: str) -> None: ...
+
+
+def qRegisterDraggedTypes(types: typing.Iterable[str]) -> None: ...
diff --git a/PyQt5-stubs/QtTextToSpeech.pyi b/PyQt5-stubs/QtTextToSpeech.pyi
new file mode 100644
index 00000000..dd029411
--- /dev/null
+++ b/PyQt5-stubs/QtTextToSpeech.pyi
@@ -0,0 +1,105 @@
+# The PEP 484 type hints stub file for the QtTextToSpeech module.
+#
+# Generated by SIP 6.4.0
+#
+# Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
+# 
+# This file is part of PyQt5.
+# 
+# This file may be used under the terms of the GNU General Public License
+# version 3.0 as published by the Free Software Foundation and appearing in
+# the file LICENSE included in the packaging of this file.  Please review the
+# following information to ensure the GNU General Public License version 3.0
+# requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+# 
+# If you do not wish to use this file under the terms of the GPL version 3.0
+# then you may purchase a commercial license.  For more information contact
+# info@riverbankcomputing.com.
+# 
+# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+
+import typing
+
+import PyQt5.sip
+
+from PyQt5 import QtCore
+
+# Support for QDate, QDateTime and QTime.
+import datetime
+
+# Convenient type aliases.
+PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal]
+PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal]
+
+
+class QTextToSpeech(QtCore.QObject):
+
+    class State(int):
+        Ready = ... # type: QTextToSpeech.State
+        Speaking = ... # type: QTextToSpeech.State
+        Paused = ... # type: QTextToSpeech.State
+        BackendError = ... # type: QTextToSpeech.State
+
+    @typing.overload
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+    @typing.overload
+    def __init__(self, engine: str, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def voiceChanged(self, voice: 'QVoice') -> None: ...
+    @typing.overload
+    def volumeChanged(self, volume: float) -> None: ...
+    @typing.overload
+    def volumeChanged(self, volume: int) -> None: ...
+    def pitchChanged(self, pitch: float) -> None: ...
+    def rateChanged(self, rate: float) -> None: ...
+    def localeChanged(self, locale: QtCore.QLocale) -> None: ...
+    def stateChanged(self, state: 'QTextToSpeech.State') -> None: ...
+    def setVoice(self, voice: 'QVoice') -> None: ...
+    def setVolume(self, volume: float) -> None: ...
+    def setPitch(self, pitch: float) -> None: ...
+    def setRate(self, rate: float) -> None: ...
+    def setLocale(self, locale: QtCore.QLocale) -> None: ...
+    def resume(self) -> None: ...
+    def pause(self) -> None: ...
+    def stop(self) -> None: ...
+    def say(self, text: str) -> None: ...
+    @staticmethod
+    def availableEngines() -> typing.List[str]: ...
+    def volume(self) -> float: ...
+    def pitch(self) -> float: ...
+    def rate(self) -> float: ...
+    def availableVoices(self) -> typing.List['QVoice']: ...
+    def voice(self) -> 'QVoice': ...
+    def locale(self) -> QtCore.QLocale: ...
+    def availableLocales(self) -> typing.List[QtCore.QLocale]: ...
+    def state(self) -> 'QTextToSpeech.State': ...
+
+
+class QVoice(sip.simplewrapper):
+
+    class Age(int):
+        Child = ... # type: QVoice.Age
+        Teenager = ... # type: QVoice.Age
+        Adult = ... # type: QVoice.Age
+        Senior = ... # type: QVoice.Age
+        Other = ... # type: QVoice.Age
+
+    class Gender(int):
+        Male = ... # type: QVoice.Gender
+        Female = ... # type: QVoice.Gender
+        Unknown = ... # type: QVoice.Gender
+
+    @typing.overload
+    def __init__(self) -> None: ...
+    @typing.overload
+    def __init__(self, other: 'QVoice') -> None: ...
+
+    @staticmethod
+    def ageName(age: 'QVoice.Age') -> str: ...
+    @staticmethod
+    def genderName(gender: 'QVoice.Gender') -> str: ...
+    def age(self) -> 'QVoice.Age': ...
+    def gender(self) -> 'QVoice.Gender': ...
+    def name(self) -> str: ...
diff --git a/PyQt5-stubs/QtWinExtras.pyi b/PyQt5-stubs/QtWinExtras.pyi
new file mode 100644
index 00000000..c8c32ac8
--- /dev/null
+++ b/PyQt5-stubs/QtWinExtras.pyi
@@ -0,0 +1,295 @@
+# The PEP 484 type hints stub file for the QtWinExtras module.
+#
+# Generated by SIP 6.4.0
+#
+# Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
+# 
+# This file is part of PyQt5.
+# 
+# This file may be used under the terms of the GNU General Public License
+# version 3.0 as published by the Free Software Foundation and appearing in
+# the file LICENSE included in the packaging of this file.  Please review the
+# following information to ensure the GNU General Public License version 3.0
+# requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+# 
+# If you do not wish to use this file under the terms of the GPL version 3.0
+# then you may purchase a commercial license.  For more information contact
+# info@riverbankcomputing.com.
+# 
+# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+
+import typing
+
+import PyQt5.sip
+
+from PyQt5 import QtWidgets
+
+# Support for QDate, QDateTime and QTime.
+import datetime
+
+# Convenient type aliases.
+PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal]
+PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal]
+
+# Convenient aliases for complicated OpenGL types.
+PYQT_OPENGL_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float],
+        PyQt5.sip.Buffer, None]
+PYQT_OPENGL_BOUND_ARRAY = typing.Union[typing.Sequence[int],
+        typing.Sequence[float], PyQt5.sip.Buffer, int, None]
+
+
+class QtWin(PyQt5.sip.simplewrapper):
+
+    class WindowFlip3DPolicy(int):
+        FlipDefault = ... # type: QtWin.WindowFlip3DPolicy
+        FlipExcludeBelow = ... # type: QtWin.WindowFlip3DPolicy
+        FlipExcludeAbove = ... # type: QtWin.WindowFlip3DPolicy
+
+    class HBitmapFormat(int):
+        HBitmapNoAlpha = ... # type: QtWin.HBitmapFormat
+        HBitmapPremultipliedAlpha = ... # type: QtWin.HBitmapFormat
+        HBitmapAlpha = ... # type: QtWin.HBitmapFormat
+
+    @typing.overload
+    def taskbarDeleteTab(self, a0: QtGui.QWindow) -> None: ...
+    @typing.overload
+    def taskbarDeleteTab(self, window: QtWidgets.QWidget) -> None: ...
+    @typing.overload
+    def taskbarAddTab(self, a0: QtGui.QWindow) -> None: ...
+    @typing.overload
+    def taskbarAddTab(self, window: QtWidgets.QWidget) -> None: ...
+    @typing.overload
+    def taskbarActivateTabAlt(self, a0: QtGui.QWindow) -> None: ...
+    @typing.overload
+    def taskbarActivateTabAlt(self, window: QtWidgets.QWidget) -> None: ...
+    @typing.overload
+    def taskbarActivateTab(self, a0: QtGui.QWindow) -> None: ...
+    @typing.overload
+    def taskbarActivateTab(self, window: QtWidgets.QWidget) -> None: ...
+    @typing.overload
+    def markFullscreenWindow(self, a0: QtGui.QWindow, fullscreen: bool = ...) -> None: ...
+    @typing.overload
+    def markFullscreenWindow(self, window: QtWidgets.QWidget, fullscreen: bool = ...) -> None: ...
+    def setCurrentProcessExplicitAppUserModelID(self, id: str) -> None: ...
+    def isCompositionOpaque(self) -> bool: ...
+    def setCompositionEnabled(self, enabled: bool) -> None: ...
+    def isCompositionEnabled(self) -> bool: ...
+    @typing.overload
+    def disableBlurBehindWindow(self, window: QtGui.QWindow) -> None: ...
+    @typing.overload
+    def disableBlurBehindWindow(self, window: QtWidgets.QWidget) -> None: ...
+    @typing.overload
+    def enableBlurBehindWindow(self, window: QtGui.QWindow, region: QtGui.QRegion) -> None: ...
+    @typing.overload
+    def enableBlurBehindWindow(self, window: QtGui.QWindow) -> None: ...
+    @typing.overload
+    def enableBlurBehindWindow(self, window: QtWidgets.QWidget, region: QtGui.QRegion) -> None: ...
+    @typing.overload
+    def enableBlurBehindWindow(self, window: QtWidgets.QWidget) -> None: ...
+    @typing.overload
+    def resetExtendedFrame(self, window: QtGui.QWindow) -> None: ...
+    @typing.overload
+    def resetExtendedFrame(self, window: QtWidgets.QWidget) -> None: ...
+    @typing.overload
+    def extendFrameIntoClientArea(self, window: QtGui.QWindow, left: int, top: int, right: int, bottom: int) -> None: ...
+    @typing.overload
+    def extendFrameIntoClientArea(self, window: QtGui.QWindow, margins: QtCore.QMargins) -> None: ...
+    @typing.overload
+    def extendFrameIntoClientArea(self, window: QtWidgets.QWidget, margins: QtCore.QMargins) -> None: ...
+    @typing.overload
+    def extendFrameIntoClientArea(self, window: QtWidgets.QWidget, left: int, top: int, right: int, bottom: int) -> None: ...
+    @typing.overload
+    def windowFlip3DPolicy(self, a0: QtGui.QWindow) -> 'QtWin.WindowFlip3DPolicy': ...
+    @typing.overload
+    def windowFlip3DPolicy(self, window: QtWidgets.QWidget) -> 'QtWin.WindowFlip3DPolicy': ...
+    @typing.overload
+    def setWindowFlip3DPolicy(self, window: QtGui.QWindow, policy: 'QtWin.WindowFlip3DPolicy') -> None: ...
+    @typing.overload
+    def setWindowFlip3DPolicy(self, window: QtWidgets.QWidget, policy: 'QtWin.WindowFlip3DPolicy') -> None: ...
+    @typing.overload
+    def isWindowPeekDisallowed(self, window: QtGui.QWindow) -> bool: ...
+    @typing.overload
+    def isWindowPeekDisallowed(self, window: QtWidgets.QWidget) -> bool: ...
+    @typing.overload
+    def setWindowDisallowPeek(self, window: QtGui.QWindow, disallow: bool) -> None: ...
+    @typing.overload
+    def setWindowDisallowPeek(self, window: QtWidgets.QWidget, disallow: bool) -> None: ...
+    @typing.overload
+    def isWindowExcludedFromPeek(self, window: QtGui.QWindow) -> bool: ...
+    @typing.overload
+    def isWindowExcludedFromPeek(self, window: QtWidgets.QWidget) -> bool: ...
+    @typing.overload
+    def setWindowExcludedFromPeek(self, window: QtGui.QWindow, exclude: bool) -> None: ...
+    @typing.overload
+    def setWindowExcludedFromPeek(self, window: QtWidgets.QWidget, exclude: bool) -> None: ...
+    def realColorizationColor(self) -> QtGui.QColor: ...
+    def colorizationColor(self) -> typing.Tuple[QtGui.QColor, bool]: ...
+    def errorStringFromHresult(self, hresult: int) -> str: ...
+    def stringFromHresult(self, hresult: int) -> str: ...
+    def fromHRGN(self, hrgn: PyQt5.sip.voidptr) -> QtGui.QRegion: ...
+    def toHRGN(self, region: QtGui.QRegion) -> PyQt5.sip.voidptr: ...
+    def fromHICON(self, icon: PyQt5.sip.voidptr) -> QtGui.QPixmap: ...
+    def imageFromHBITMAP(self, hdc: PyQt5.sip.voidptr, bitmap: PyQt5.sip.voidptr, width: int, height: int) -> QtGui.QImage: ...
+    def toHICON(self, p: QtGui.QPixmap) -> PyQt5.sip.voidptr: ...
+    def fromHBITMAP(self, bitmap: PyQt5.sip.voidptr, format: 'QtWin.HBitmapFormat' = ...) -> QtGui.QPixmap: ...
+    def toHBITMAP(self, p: QtGui.QPixmap, format: 'QtWin.HBitmapFormat' = ...) -> PyQt5.sip.voidptr: ...
+    def createMask(self, bitmap: QtGui.QBitmap) -> PyQt5.sip.voidptr: ...
+
+
+class QWinJumpList(QtCore.QObject):
+
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def clear(self) -> None: ...
+    @typing.overload
+    def addCategory(self, category: 'QWinJumpListCategory') -> None: ...
+    @typing.overload
+    def addCategory(self, title: str, items: typing.Iterable['QWinJumpListItem'] = ...) -> 'QWinJumpListCategory': ...
+    def categories(self) -> typing.List['QWinJumpListCategory']: ...
+    def tasks(self) -> 'QWinJumpListCategory': ...
+    def frequent(self) -> 'QWinJumpListCategory': ...
+    def recent(self) -> 'QWinJumpListCategory': ...
+    def setIdentifier(self, identifier: str) -> None: ...
+    def identifier(self) -> str: ...
+
+
+class QWinJumpListCategory(PyQt5.sip.wrapper):
+
+    class Type(int):
+        Custom = ... # type: QWinJumpListCategory.Type
+        Recent = ... # type: QWinJumpListCategory.Type
+        Frequent = ... # type: QWinJumpListCategory.Type
+        Tasks = ... # type: QWinJumpListCategory.Type
+
+    def __init__(self, title: str = ...) -> None: ...
+
+    def clear(self) -> None: ...
+    def addSeparator(self) -> 'QWinJumpListItem': ...
+    @typing.overload
+    def addLink(self, title: str, executablePath: str, arguments: typing.Iterable[str] = ...) -> 'QWinJumpListItem': ...
+    @typing.overload
+    def addLink(self, icon: QtGui.QIcon, title: str, executablePath: str, arguments: typing.Iterable[str] = ...) -> 'QWinJumpListItem': ...
+    def addDestination(self, filePath: str) -> 'QWinJumpListItem': ...
+    def addItem(self, item: 'QWinJumpListItem') -> None: ...
+    def items(self) -> typing.List['QWinJumpListItem']: ...
+    def isEmpty(self) -> bool: ...
+    def count(self) -> int: ...
+    def setTitle(self, title: str) -> None: ...
+    def title(self) -> str: ...
+    def setVisible(self, visible: bool) -> None: ...
+    def isVisible(self) -> bool: ...
+    def type(self) -> 'QWinJumpListCategory.Type': ...
+
+
+class QWinJumpListItem(PyQt5.sip.wrapper):
+
+    class Type(int):
+        Destination = ... # type: QWinJumpListItem.Type
+        Link = ... # type: QWinJumpListItem.Type
+        Separator = ... # type: QWinJumpListItem.Type
+
+    def __init__(self, type: 'QWinJumpListItem.Type') -> None: ...
+
+    def arguments(self) -> typing.List[str]: ...
+    def setArguments(self, arguments: typing.Iterable[str]) -> None: ...
+    def description(self) -> str: ...
+    def setDescription(self, description: str) -> None: ...
+    def title(self) -> str: ...
+    def setTitle(self, title: str) -> None: ...
+    def icon(self) -> QtGui.QIcon: ...
+    def setIcon(self, icon: QtGui.QIcon) -> None: ...
+    def workingDirectory(self) -> str: ...
+    def setWorkingDirectory(self, workingDirectory: str) -> None: ...
+    def filePath(self) -> str: ...
+    def setFilePath(self, filePath: str) -> None: ...
+    def type(self) -> 'QWinJumpListItem.Type': ...
+    def setType(self, type: 'QWinJumpListItem.Type') -> None: ...
+
+
+class QWinTaskbarButton(QtCore.QObject):
+
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def clearOverlayIcon(self) -> None: ...
+    def setOverlayAccessibleDescription(self, description: str) -> None: ...
+    def setOverlayIcon(self, icon: QtGui.QIcon) -> None: ...
+    def eventFilter(self, a0: QtCore.QObject, a1: QtCore.QEvent) -> bool: ...
+    def progress(self) -> 'QWinTaskbarProgress': ...
+    def overlayAccessibleDescription(self) -> str: ...
+    def overlayIcon(self) -> QtGui.QIcon: ...
+    def window(self) -> QtGui.QWindow: ...
+    def setWindow(self, window: QtGui.QWindow) -> None: ...
+
+
+class QWinTaskbarProgress(QtCore.QObject):
+
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def visibilityChanged(self, visible: bool) -> None: ...
+    def maximumChanged(self, maximum: int) -> None: ...
+    def minimumChanged(self, minimum: int) -> None: ...
+    def valueChanged(self, value: int) -> None: ...
+    def stop(self) -> None: ...
+    def setPaused(self, paused: bool) -> None: ...
+    def resume(self) -> None: ...
+    def pause(self) -> None: ...
+    def setVisible(self, visible: bool) -> None: ...
+    def hide(self) -> None: ...
+    def show(self) -> None: ...
+    def reset(self) -> None: ...
+    def setRange(self, minimum: int, maximum: int) -> None: ...
+    def setMaximum(self, maximum: int) -> None: ...
+    def setMinimum(self, minimum: int) -> None: ...
+    def setValue(self, value: int) -> None: ...
+    def isStopped(self) -> bool: ...
+    def isPaused(self) -> bool: ...
+    def isVisible(self) -> bool: ...
+    def maximum(self) -> int: ...
+    def minimum(self) -> int: ...
+    def value(self) -> int: ...
+
+
+class QWinThumbnailToolBar(QtCore.QObject):
+
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def iconicLivePreviewPixmapRequested(self) -> None: ...
+    def iconicThumbnailPixmapRequested(self) -> None: ...
+    def setIconicLivePreviewPixmap(self, a0: QtGui.QPixmap) -> None: ...
+    def setIconicThumbnailPixmap(self, a0: QtGui.QPixmap) -> None: ...
+    def clear(self) -> None: ...
+    def iconicLivePreviewPixmap(self) -> QtGui.QPixmap: ...
+    def iconicThumbnailPixmap(self) -> QtGui.QPixmap: ...
+    def setIconicPixmapNotificationsEnabled(self, enabled: bool) -> None: ...
+    def iconicPixmapNotificationsEnabled(self) -> bool: ...
+    def count(self) -> int: ...
+    def buttons(self) -> typing.List['QWinThumbnailToolButton']: ...
+    def setButtons(self, buttons: typing.Iterable['QWinThumbnailToolButton']) -> None: ...
+    def removeButton(self, button: 'QWinThumbnailToolButton') -> None: ...
+    def addButton(self, button: 'QWinThumbnailToolButton') -> None: ...
+    def window(self) -> QtGui.QWindow: ...
+    def setWindow(self, window: QtGui.QWindow) -> None: ...
+
+
+class QWinThumbnailToolButton(QtCore.QObject):
+
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def clicked(self) -> None: ...
+    def click(self) -> None: ...
+    def isFlat(self) -> bool: ...
+    def setFlat(self, flat: bool) -> None: ...
+    def dismissOnClick(self) -> bool: ...
+    def setDismissOnClick(self, dismiss: bool) -> None: ...
+    def isVisible(self) -> bool: ...
+    def setVisible(self, visible: bool) -> None: ...
+    def isInteractive(self) -> bool: ...
+    def setInteractive(self, interactive: bool) -> None: ...
+    def isEnabled(self) -> bool: ...
+    def setEnabled(self, enabled: bool) -> None: ...
+    def icon(self) -> QtGui.QIcon: ...
+    def setIcon(self, icon: QtGui.QIcon) -> None: ...
+    def toolTip(self) -> str: ...
+    def setToolTip(self, toolTip: str) -> None: ...

From 92e43e3ea07c1deeee9016c30453d93c66a6383d Mon Sep 17 00:00:00 2001
From: Philippe F <phil.fremy@free.fr>
Date: Mon, 2 May 2022 22:25:26 +0200
Subject: [PATCH 2/3] Oups, Reverting forced commit "Add missing platform
 specific stubs"

This reverts commit 6beb45c1d138ae6a667f75b05ac89a410f0b745a.
---
 PyQt5-stubs/QAxContainer.pyi   | 105 ------------
 PyQt5-stubs/QtMacExtras.pyi    | 120 --------------
 PyQt5-stubs/QtTextToSpeech.pyi | 105 ------------
 PyQt5-stubs/QtWinExtras.pyi    | 295 ---------------------------------
 4 files changed, 625 deletions(-)
 delete mode 100644 PyQt5-stubs/QAxContainer.pyi
 delete mode 100644 PyQt5-stubs/QtMacExtras.pyi
 delete mode 100644 PyQt5-stubs/QtTextToSpeech.pyi
 delete mode 100644 PyQt5-stubs/QtWinExtras.pyi

diff --git a/PyQt5-stubs/QAxContainer.pyi b/PyQt5-stubs/QAxContainer.pyi
deleted file mode 100644
index 542bca33..00000000
--- a/PyQt5-stubs/QAxContainer.pyi
+++ /dev/null
@@ -1,105 +0,0 @@
-# The PEP 484 type hints stub file for the QAxContainer module.
-#
-# Generated by SIP 6.4.0
-#
-# Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
-# 
-# This file is part of PyQt5.
-# 
-# This file may be used under the terms of the GNU General Public License
-# version 3.0 as published by the Free Software Foundation and appearing in
-# the file LICENSE included in the packaging of this file.  Please review the
-# following information to ensure the GNU General Public License version 3.0
-# requirements will be met: http://www.gnu.org/copyleft/gpl.html.
-# 
-# If you do not wish to use this file under the terms of the GPL version 3.0
-# then you may purchase a commercial license.  For more information contact
-# info@riverbankcomputing.com.
-# 
-# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-
-import typing
-
-import PyQt5.sip
-
-from PyQt5 import QtWidgets
-
-# Support for QDate, QDateTime and QTime.
-import datetime
-
-# Convenient type aliases.
-PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal]
-PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal]
-
-# Convenient aliases for complicated OpenGL types.
-PYQT_OPENGL_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float],
-        PyQt5.sip.Buffer, None]
-PYQT_OPENGL_BOUND_ARRAY = typing.Union[typing.Sequence[int],
-        typing.Sequence[float], PyQt5.sip.Buffer, int, None]
-
-
-class QAxBase(sip.simplewrapper):
-
-    @typing.overload
-    def __init__(self) -> None: ...
-    @typing.overload
-    def __init__(self, a0: 'QAxBase') -> None: ...
-
-    def setClassContext(self, classContext: int) -> None: ...
-    def classContext(self) -> int: ...
-    def disableEventSink(self) -> None: ...
-    def disableClassInfo(self) -> None: ...
-    def disableMetaObject(self) -> None: ...
-    def setControl(self, a0: str) -> bool: ...
-    def clear(self) -> None: ...
-    def exception(self, a0: int, a1: str, a2: str, a3: str) -> None: ...
-    def propertyChanged(self, a0: str) -> None: ...
-    def signal(self, a0: str, a1: int, a2: PyQt5.sip.voidptr) -> None: ...
-    def asVariant(self) -> typing.Any: ...
-    def verbs(self) -> typing.List[str]: ...
-    def isNull(self) -> bool: ...
-    def setPropertyWritable(self, a0: str, a1: bool) -> None: ...
-    def propertyWritable(self, a0: str) -> bool: ...
-    def generateDocumentation(self) -> str: ...
-    def setPropertyBag(self, a0: typing.Dict[str, typing.Any]) -> None: ...
-    def propertyBag(self) -> typing.Dict[str, typing.Any]: ...
-    @typing.overload
-    def querySubObject(self, a0: str, a1: typing.Iterable[typing.Any]) -> 'QAxObject': ...
-    @typing.overload
-    def querySubObject(self, a0: str, value1: typing.Any = ..., value2: typing.Any = ..., value3: typing.Any = ..., value4: typing.Any = ..., value5: typing.Any = ..., value6: typing.Any = ..., value7: typing.Any = ..., value8: typing.Any = ...) -> 'QAxObject': ...
-    @typing.overload
-    def dynamicCall(self, a0: str, a1: typing.Iterable[typing.Any]) -> typing.Any: ...
-    @typing.overload
-    def dynamicCall(self, a0: str, value1: typing.Any = ..., value2: typing.Any = ..., value3: typing.Any = ..., value4: typing.Any = ..., value5: typing.Any = ..., value6: typing.Any = ..., value7: typing.Any = ..., value8: typing.Any = ...) -> typing.Any: ...
-    def control(self) -> str: ...
-
-
-class QAxObject(QtCore.QObject, QAxBase):
-
-    @typing.overload
-    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
-    @typing.overload
-    def __init__(self, a0: str, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
-
-    def connectNotify(self, a0: QtCore.QMetaMethod) -> None: ...
-    def doVerb(self, a0: str) -> bool: ...
-
-
-class QAxWidget(QtWidgets.QWidget, QAxBase):
-
-    @typing.overload
-    def __init__(self, parent: typing.Optional[QtWidgets.QWidget] = ..., flags: typing.Union[QtCore.Qt.WindowFlags, QtCore.Qt.WindowType] = ...) -> None: ...
-    @typing.overload
-    def __init__(self, a0: str, parent: typing.Optional[QtWidgets.QWidget] = ..., flags: typing.Union[QtCore.Qt.WindowFlags, QtCore.Qt.WindowType] = ...) -> None: ...
-
-    def connectNotify(self, a0: QtCore.QMetaMethod) -> None: ...
-    def translateKeyEvent(self, a0: int, a1: int) -> bool: ...
-    def resizeEvent(self, a0: QtGui.QResizeEvent) -> None: ...
-    def changeEvent(self, a0: QtCore.QEvent) -> None: ...
-    def createHostWindow(self, a0: bool) -> bool: ...
-    def minimumSizeHint(self) -> QtCore.QSize: ...
-    def sizeHint(self) -> QtCore.QSize: ...
-    def doVerb(self, a0: str) -> bool: ...
-    def clear(self) -> None: ...
diff --git a/PyQt5-stubs/QtMacExtras.pyi b/PyQt5-stubs/QtMacExtras.pyi
deleted file mode 100644
index f92fbb5a..00000000
--- a/PyQt5-stubs/QtMacExtras.pyi
+++ /dev/null
@@ -1,120 +0,0 @@
-# The PEP 484 type hints stub file for the QtMacExtras module.
-#
-# Generated by SIP 6.4.0
-#
-# Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
-# 
-# This file is part of PyQt5.
-# 
-# This file may be used under the terms of the GNU General Public License
-# version 3.0 as published by the Free Software Foundation and appearing in
-# the file LICENSE included in the packaging of this file.  Please review the
-# following information to ensure the GNU General Public License version 3.0
-# requirements will be met: http://www.gnu.org/copyleft/gpl.html.
-# 
-# If you do not wish to use this file under the terms of the GPL version 3.0
-# then you may purchase a commercial license.  For more information contact
-# info@riverbankcomputing.com.
-# 
-# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-
-import typing
-
-import PyQt5.sip
-
-from PyQt5 import QtGui
-from PyQt5 import QtCore
-
-# Support for QDate, QDateTime and QTime.
-import datetime
-
-# Convenient type aliases.
-PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal]
-PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal]
-
-# Convenient aliases for complicated OpenGL types.
-PYQT_OPENGL_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float],
-        PyQt5.sip.Buffer, None]
-PYQT_OPENGL_BOUND_ARRAY = typing.Union[typing.Sequence[int],
-        typing.Sequence[float], PyQt5.sip.Buffer, int, None]
-
-
-class QMacPasteboardMime(sip.simplewrapper):
-
-    class QMacPasteboardMimeType(int):
-        MIME_DND = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
-        MIME_CLIP = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
-        MIME_QT_CONVERTOR = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
-        MIME_QT3_CONVERTOR = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
-        MIME_ALL = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
-
-    @typing.overload
-    def __init__(self, t: int) -> None: ...
-    @typing.overload
-    def __init__(self, a0: 'QMacPasteboardMime') -> None: ...
-
-    def count(self, mimeData: QtCore.QMimeData) -> int: ...
-    def convertFromMime(self, mime: str, data: typing.Any, flav: str) -> typing.List[QtCore.QByteArray]: ...
-    def convertToMime(self, mime: str, data: typing.Iterable[typing.Union[QtCore.QByteArray, bytes, bytearray]], flav: str) -> typing.Any: ...
-    def flavorFor(self, mime: str) -> str: ...
-    def mimeFor(self, flav: str) -> str: ...
-    def canConvert(self, mime: str, flav: str) -> bool: ...
-    def convertorName(self) -> str: ...
-
-
-class NSToolbar(sip.simplewrapper): ...
-
-
-class QMacToolBar(QtCore.QObject):
-
-    @typing.overload
-    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
-    @typing.overload
-    def __init__(self, identifier: str, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
-
-    def nativeToolbar(self) -> NSToolbar: ...
-    def detachFromWindow(self) -> None: ...
-    def attachToWindow(self, window: QtGui.QWindow) -> None: ...
-    def allowedItems(self) -> typing.List['QMacToolBarItem']: ...
-    def setAllowedItems(self, allowedItems: typing.Iterable['QMacToolBarItem']) -> None: ...
-    def items(self) -> typing.List['QMacToolBarItem']: ...
-    def setItems(self, items: typing.Iterable['QMacToolBarItem']) -> None: ...
-    def addSeparator(self) -> None: ...
-    def addAllowedItem(self, icon: QtGui.QIcon, text: str) -> 'QMacToolBarItem': ...
-    def addItem(self, icon: QtGui.QIcon, text: str) -> 'QMacToolBarItem': ...
-
-
-class NSToolbarItem(sip.simplewrapper): ...
-
-
-class QMacToolBarItem(QtCore.QObject):
-
-    class StandardItem(int):
-        NoStandardItem = ... # type: QMacToolBarItem.StandardItem
-        Space = ... # type: QMacToolBarItem.StandardItem
-        FlexibleSpace = ... # type: QMacToolBarItem.StandardItem
-
-    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
-
-    def activated(self) -> None: ...
-    def nativeToolBarItem(self) -> NSToolbarItem: ...
-    def setIcon(self, icon: QtGui.QIcon) -> None: ...
-    def icon(self) -> QtGui.QIcon: ...
-    def setText(self, text: str) -> None: ...
-    def text(self) -> str: ...
-    def setStandardItem(self, standardItem: 'QMacToolBarItem.StandardItem') -> None: ...
-    def standardItem(self) -> 'QMacToolBarItem.StandardItem': ...
-    def setSelectable(self, selectable: bool) -> None: ...
-    def selectable(self) -> bool: ...
-
-
-class QtMac(PyQt5.sip.simplewrapper):
-
-    def isMainWindow(self, window: QtGui.QWindow) -> bool: ...
-    def badgeLabelText(self) -> str: ...
-    def setBadgeLabelText(self, text: str) -> None: ...
-
-
-def qRegisterDraggedTypes(types: typing.Iterable[str]) -> None: ...
diff --git a/PyQt5-stubs/QtTextToSpeech.pyi b/PyQt5-stubs/QtTextToSpeech.pyi
deleted file mode 100644
index dd029411..00000000
--- a/PyQt5-stubs/QtTextToSpeech.pyi
+++ /dev/null
@@ -1,105 +0,0 @@
-# The PEP 484 type hints stub file for the QtTextToSpeech module.
-#
-# Generated by SIP 6.4.0
-#
-# Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
-# 
-# This file is part of PyQt5.
-# 
-# This file may be used under the terms of the GNU General Public License
-# version 3.0 as published by the Free Software Foundation and appearing in
-# the file LICENSE included in the packaging of this file.  Please review the
-# following information to ensure the GNU General Public License version 3.0
-# requirements will be met: http://www.gnu.org/copyleft/gpl.html.
-# 
-# If you do not wish to use this file under the terms of the GPL version 3.0
-# then you may purchase a commercial license.  For more information contact
-# info@riverbankcomputing.com.
-# 
-# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-
-import typing
-
-import PyQt5.sip
-
-from PyQt5 import QtCore
-
-# Support for QDate, QDateTime and QTime.
-import datetime
-
-# Convenient type aliases.
-PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal]
-PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal]
-
-
-class QTextToSpeech(QtCore.QObject):
-
-    class State(int):
-        Ready = ... # type: QTextToSpeech.State
-        Speaking = ... # type: QTextToSpeech.State
-        Paused = ... # type: QTextToSpeech.State
-        BackendError = ... # type: QTextToSpeech.State
-
-    @typing.overload
-    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
-    @typing.overload
-    def __init__(self, engine: str, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
-
-    def voiceChanged(self, voice: 'QVoice') -> None: ...
-    @typing.overload
-    def volumeChanged(self, volume: float) -> None: ...
-    @typing.overload
-    def volumeChanged(self, volume: int) -> None: ...
-    def pitchChanged(self, pitch: float) -> None: ...
-    def rateChanged(self, rate: float) -> None: ...
-    def localeChanged(self, locale: QtCore.QLocale) -> None: ...
-    def stateChanged(self, state: 'QTextToSpeech.State') -> None: ...
-    def setVoice(self, voice: 'QVoice') -> None: ...
-    def setVolume(self, volume: float) -> None: ...
-    def setPitch(self, pitch: float) -> None: ...
-    def setRate(self, rate: float) -> None: ...
-    def setLocale(self, locale: QtCore.QLocale) -> None: ...
-    def resume(self) -> None: ...
-    def pause(self) -> None: ...
-    def stop(self) -> None: ...
-    def say(self, text: str) -> None: ...
-    @staticmethod
-    def availableEngines() -> typing.List[str]: ...
-    def volume(self) -> float: ...
-    def pitch(self) -> float: ...
-    def rate(self) -> float: ...
-    def availableVoices(self) -> typing.List['QVoice']: ...
-    def voice(self) -> 'QVoice': ...
-    def locale(self) -> QtCore.QLocale: ...
-    def availableLocales(self) -> typing.List[QtCore.QLocale]: ...
-    def state(self) -> 'QTextToSpeech.State': ...
-
-
-class QVoice(sip.simplewrapper):
-
-    class Age(int):
-        Child = ... # type: QVoice.Age
-        Teenager = ... # type: QVoice.Age
-        Adult = ... # type: QVoice.Age
-        Senior = ... # type: QVoice.Age
-        Other = ... # type: QVoice.Age
-
-    class Gender(int):
-        Male = ... # type: QVoice.Gender
-        Female = ... # type: QVoice.Gender
-        Unknown = ... # type: QVoice.Gender
-
-    @typing.overload
-    def __init__(self) -> None: ...
-    @typing.overload
-    def __init__(self, other: 'QVoice') -> None: ...
-
-    @staticmethod
-    def ageName(age: 'QVoice.Age') -> str: ...
-    @staticmethod
-    def genderName(gender: 'QVoice.Gender') -> str: ...
-    def age(self) -> 'QVoice.Age': ...
-    def gender(self) -> 'QVoice.Gender': ...
-    def name(self) -> str: ...
diff --git a/PyQt5-stubs/QtWinExtras.pyi b/PyQt5-stubs/QtWinExtras.pyi
deleted file mode 100644
index c8c32ac8..00000000
--- a/PyQt5-stubs/QtWinExtras.pyi
+++ /dev/null
@@ -1,295 +0,0 @@
-# The PEP 484 type hints stub file for the QtWinExtras module.
-#
-# Generated by SIP 6.4.0
-#
-# Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
-# 
-# This file is part of PyQt5.
-# 
-# This file may be used under the terms of the GNU General Public License
-# version 3.0 as published by the Free Software Foundation and appearing in
-# the file LICENSE included in the packaging of this file.  Please review the
-# following information to ensure the GNU General Public License version 3.0
-# requirements will be met: http://www.gnu.org/copyleft/gpl.html.
-# 
-# If you do not wish to use this file under the terms of the GPL version 3.0
-# then you may purchase a commercial license.  For more information contact
-# info@riverbankcomputing.com.
-# 
-# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-
-import typing
-
-import PyQt5.sip
-
-from PyQt5 import QtWidgets
-
-# Support for QDate, QDateTime and QTime.
-import datetime
-
-# Convenient type aliases.
-PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal]
-PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal]
-
-# Convenient aliases for complicated OpenGL types.
-PYQT_OPENGL_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float],
-        PyQt5.sip.Buffer, None]
-PYQT_OPENGL_BOUND_ARRAY = typing.Union[typing.Sequence[int],
-        typing.Sequence[float], PyQt5.sip.Buffer, int, None]
-
-
-class QtWin(PyQt5.sip.simplewrapper):
-
-    class WindowFlip3DPolicy(int):
-        FlipDefault = ... # type: QtWin.WindowFlip3DPolicy
-        FlipExcludeBelow = ... # type: QtWin.WindowFlip3DPolicy
-        FlipExcludeAbove = ... # type: QtWin.WindowFlip3DPolicy
-
-    class HBitmapFormat(int):
-        HBitmapNoAlpha = ... # type: QtWin.HBitmapFormat
-        HBitmapPremultipliedAlpha = ... # type: QtWin.HBitmapFormat
-        HBitmapAlpha = ... # type: QtWin.HBitmapFormat
-
-    @typing.overload
-    def taskbarDeleteTab(self, a0: QtGui.QWindow) -> None: ...
-    @typing.overload
-    def taskbarDeleteTab(self, window: QtWidgets.QWidget) -> None: ...
-    @typing.overload
-    def taskbarAddTab(self, a0: QtGui.QWindow) -> None: ...
-    @typing.overload
-    def taskbarAddTab(self, window: QtWidgets.QWidget) -> None: ...
-    @typing.overload
-    def taskbarActivateTabAlt(self, a0: QtGui.QWindow) -> None: ...
-    @typing.overload
-    def taskbarActivateTabAlt(self, window: QtWidgets.QWidget) -> None: ...
-    @typing.overload
-    def taskbarActivateTab(self, a0: QtGui.QWindow) -> None: ...
-    @typing.overload
-    def taskbarActivateTab(self, window: QtWidgets.QWidget) -> None: ...
-    @typing.overload
-    def markFullscreenWindow(self, a0: QtGui.QWindow, fullscreen: bool = ...) -> None: ...
-    @typing.overload
-    def markFullscreenWindow(self, window: QtWidgets.QWidget, fullscreen: bool = ...) -> None: ...
-    def setCurrentProcessExplicitAppUserModelID(self, id: str) -> None: ...
-    def isCompositionOpaque(self) -> bool: ...
-    def setCompositionEnabled(self, enabled: bool) -> None: ...
-    def isCompositionEnabled(self) -> bool: ...
-    @typing.overload
-    def disableBlurBehindWindow(self, window: QtGui.QWindow) -> None: ...
-    @typing.overload
-    def disableBlurBehindWindow(self, window: QtWidgets.QWidget) -> None: ...
-    @typing.overload
-    def enableBlurBehindWindow(self, window: QtGui.QWindow, region: QtGui.QRegion) -> None: ...
-    @typing.overload
-    def enableBlurBehindWindow(self, window: QtGui.QWindow) -> None: ...
-    @typing.overload
-    def enableBlurBehindWindow(self, window: QtWidgets.QWidget, region: QtGui.QRegion) -> None: ...
-    @typing.overload
-    def enableBlurBehindWindow(self, window: QtWidgets.QWidget) -> None: ...
-    @typing.overload
-    def resetExtendedFrame(self, window: QtGui.QWindow) -> None: ...
-    @typing.overload
-    def resetExtendedFrame(self, window: QtWidgets.QWidget) -> None: ...
-    @typing.overload
-    def extendFrameIntoClientArea(self, window: QtGui.QWindow, left: int, top: int, right: int, bottom: int) -> None: ...
-    @typing.overload
-    def extendFrameIntoClientArea(self, window: QtGui.QWindow, margins: QtCore.QMargins) -> None: ...
-    @typing.overload
-    def extendFrameIntoClientArea(self, window: QtWidgets.QWidget, margins: QtCore.QMargins) -> None: ...
-    @typing.overload
-    def extendFrameIntoClientArea(self, window: QtWidgets.QWidget, left: int, top: int, right: int, bottom: int) -> None: ...
-    @typing.overload
-    def windowFlip3DPolicy(self, a0: QtGui.QWindow) -> 'QtWin.WindowFlip3DPolicy': ...
-    @typing.overload
-    def windowFlip3DPolicy(self, window: QtWidgets.QWidget) -> 'QtWin.WindowFlip3DPolicy': ...
-    @typing.overload
-    def setWindowFlip3DPolicy(self, window: QtGui.QWindow, policy: 'QtWin.WindowFlip3DPolicy') -> None: ...
-    @typing.overload
-    def setWindowFlip3DPolicy(self, window: QtWidgets.QWidget, policy: 'QtWin.WindowFlip3DPolicy') -> None: ...
-    @typing.overload
-    def isWindowPeekDisallowed(self, window: QtGui.QWindow) -> bool: ...
-    @typing.overload
-    def isWindowPeekDisallowed(self, window: QtWidgets.QWidget) -> bool: ...
-    @typing.overload
-    def setWindowDisallowPeek(self, window: QtGui.QWindow, disallow: bool) -> None: ...
-    @typing.overload
-    def setWindowDisallowPeek(self, window: QtWidgets.QWidget, disallow: bool) -> None: ...
-    @typing.overload
-    def isWindowExcludedFromPeek(self, window: QtGui.QWindow) -> bool: ...
-    @typing.overload
-    def isWindowExcludedFromPeek(self, window: QtWidgets.QWidget) -> bool: ...
-    @typing.overload
-    def setWindowExcludedFromPeek(self, window: QtGui.QWindow, exclude: bool) -> None: ...
-    @typing.overload
-    def setWindowExcludedFromPeek(self, window: QtWidgets.QWidget, exclude: bool) -> None: ...
-    def realColorizationColor(self) -> QtGui.QColor: ...
-    def colorizationColor(self) -> typing.Tuple[QtGui.QColor, bool]: ...
-    def errorStringFromHresult(self, hresult: int) -> str: ...
-    def stringFromHresult(self, hresult: int) -> str: ...
-    def fromHRGN(self, hrgn: PyQt5.sip.voidptr) -> QtGui.QRegion: ...
-    def toHRGN(self, region: QtGui.QRegion) -> PyQt5.sip.voidptr: ...
-    def fromHICON(self, icon: PyQt5.sip.voidptr) -> QtGui.QPixmap: ...
-    def imageFromHBITMAP(self, hdc: PyQt5.sip.voidptr, bitmap: PyQt5.sip.voidptr, width: int, height: int) -> QtGui.QImage: ...
-    def toHICON(self, p: QtGui.QPixmap) -> PyQt5.sip.voidptr: ...
-    def fromHBITMAP(self, bitmap: PyQt5.sip.voidptr, format: 'QtWin.HBitmapFormat' = ...) -> QtGui.QPixmap: ...
-    def toHBITMAP(self, p: QtGui.QPixmap, format: 'QtWin.HBitmapFormat' = ...) -> PyQt5.sip.voidptr: ...
-    def createMask(self, bitmap: QtGui.QBitmap) -> PyQt5.sip.voidptr: ...
-
-
-class QWinJumpList(QtCore.QObject):
-
-    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
-
-    def clear(self) -> None: ...
-    @typing.overload
-    def addCategory(self, category: 'QWinJumpListCategory') -> None: ...
-    @typing.overload
-    def addCategory(self, title: str, items: typing.Iterable['QWinJumpListItem'] = ...) -> 'QWinJumpListCategory': ...
-    def categories(self) -> typing.List['QWinJumpListCategory']: ...
-    def tasks(self) -> 'QWinJumpListCategory': ...
-    def frequent(self) -> 'QWinJumpListCategory': ...
-    def recent(self) -> 'QWinJumpListCategory': ...
-    def setIdentifier(self, identifier: str) -> None: ...
-    def identifier(self) -> str: ...
-
-
-class QWinJumpListCategory(PyQt5.sip.wrapper):
-
-    class Type(int):
-        Custom = ... # type: QWinJumpListCategory.Type
-        Recent = ... # type: QWinJumpListCategory.Type
-        Frequent = ... # type: QWinJumpListCategory.Type
-        Tasks = ... # type: QWinJumpListCategory.Type
-
-    def __init__(self, title: str = ...) -> None: ...
-
-    def clear(self) -> None: ...
-    def addSeparator(self) -> 'QWinJumpListItem': ...
-    @typing.overload
-    def addLink(self, title: str, executablePath: str, arguments: typing.Iterable[str] = ...) -> 'QWinJumpListItem': ...
-    @typing.overload
-    def addLink(self, icon: QtGui.QIcon, title: str, executablePath: str, arguments: typing.Iterable[str] = ...) -> 'QWinJumpListItem': ...
-    def addDestination(self, filePath: str) -> 'QWinJumpListItem': ...
-    def addItem(self, item: 'QWinJumpListItem') -> None: ...
-    def items(self) -> typing.List['QWinJumpListItem']: ...
-    def isEmpty(self) -> bool: ...
-    def count(self) -> int: ...
-    def setTitle(self, title: str) -> None: ...
-    def title(self) -> str: ...
-    def setVisible(self, visible: bool) -> None: ...
-    def isVisible(self) -> bool: ...
-    def type(self) -> 'QWinJumpListCategory.Type': ...
-
-
-class QWinJumpListItem(PyQt5.sip.wrapper):
-
-    class Type(int):
-        Destination = ... # type: QWinJumpListItem.Type
-        Link = ... # type: QWinJumpListItem.Type
-        Separator = ... # type: QWinJumpListItem.Type
-
-    def __init__(self, type: 'QWinJumpListItem.Type') -> None: ...
-
-    def arguments(self) -> typing.List[str]: ...
-    def setArguments(self, arguments: typing.Iterable[str]) -> None: ...
-    def description(self) -> str: ...
-    def setDescription(self, description: str) -> None: ...
-    def title(self) -> str: ...
-    def setTitle(self, title: str) -> None: ...
-    def icon(self) -> QtGui.QIcon: ...
-    def setIcon(self, icon: QtGui.QIcon) -> None: ...
-    def workingDirectory(self) -> str: ...
-    def setWorkingDirectory(self, workingDirectory: str) -> None: ...
-    def filePath(self) -> str: ...
-    def setFilePath(self, filePath: str) -> None: ...
-    def type(self) -> 'QWinJumpListItem.Type': ...
-    def setType(self, type: 'QWinJumpListItem.Type') -> None: ...
-
-
-class QWinTaskbarButton(QtCore.QObject):
-
-    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
-
-    def clearOverlayIcon(self) -> None: ...
-    def setOverlayAccessibleDescription(self, description: str) -> None: ...
-    def setOverlayIcon(self, icon: QtGui.QIcon) -> None: ...
-    def eventFilter(self, a0: QtCore.QObject, a1: QtCore.QEvent) -> bool: ...
-    def progress(self) -> 'QWinTaskbarProgress': ...
-    def overlayAccessibleDescription(self) -> str: ...
-    def overlayIcon(self) -> QtGui.QIcon: ...
-    def window(self) -> QtGui.QWindow: ...
-    def setWindow(self, window: QtGui.QWindow) -> None: ...
-
-
-class QWinTaskbarProgress(QtCore.QObject):
-
-    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
-
-    def visibilityChanged(self, visible: bool) -> None: ...
-    def maximumChanged(self, maximum: int) -> None: ...
-    def minimumChanged(self, minimum: int) -> None: ...
-    def valueChanged(self, value: int) -> None: ...
-    def stop(self) -> None: ...
-    def setPaused(self, paused: bool) -> None: ...
-    def resume(self) -> None: ...
-    def pause(self) -> None: ...
-    def setVisible(self, visible: bool) -> None: ...
-    def hide(self) -> None: ...
-    def show(self) -> None: ...
-    def reset(self) -> None: ...
-    def setRange(self, minimum: int, maximum: int) -> None: ...
-    def setMaximum(self, maximum: int) -> None: ...
-    def setMinimum(self, minimum: int) -> None: ...
-    def setValue(self, value: int) -> None: ...
-    def isStopped(self) -> bool: ...
-    def isPaused(self) -> bool: ...
-    def isVisible(self) -> bool: ...
-    def maximum(self) -> int: ...
-    def minimum(self) -> int: ...
-    def value(self) -> int: ...
-
-
-class QWinThumbnailToolBar(QtCore.QObject):
-
-    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
-
-    def iconicLivePreviewPixmapRequested(self) -> None: ...
-    def iconicThumbnailPixmapRequested(self) -> None: ...
-    def setIconicLivePreviewPixmap(self, a0: QtGui.QPixmap) -> None: ...
-    def setIconicThumbnailPixmap(self, a0: QtGui.QPixmap) -> None: ...
-    def clear(self) -> None: ...
-    def iconicLivePreviewPixmap(self) -> QtGui.QPixmap: ...
-    def iconicThumbnailPixmap(self) -> QtGui.QPixmap: ...
-    def setIconicPixmapNotificationsEnabled(self, enabled: bool) -> None: ...
-    def iconicPixmapNotificationsEnabled(self) -> bool: ...
-    def count(self) -> int: ...
-    def buttons(self) -> typing.List['QWinThumbnailToolButton']: ...
-    def setButtons(self, buttons: typing.Iterable['QWinThumbnailToolButton']) -> None: ...
-    def removeButton(self, button: 'QWinThumbnailToolButton') -> None: ...
-    def addButton(self, button: 'QWinThumbnailToolButton') -> None: ...
-    def window(self) -> QtGui.QWindow: ...
-    def setWindow(self, window: QtGui.QWindow) -> None: ...
-
-
-class QWinThumbnailToolButton(QtCore.QObject):
-
-    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
-
-    def clicked(self) -> None: ...
-    def click(self) -> None: ...
-    def isFlat(self) -> bool: ...
-    def setFlat(self, flat: bool) -> None: ...
-    def dismissOnClick(self) -> bool: ...
-    def setDismissOnClick(self, dismiss: bool) -> None: ...
-    def isVisible(self) -> bool: ...
-    def setVisible(self, visible: bool) -> None: ...
-    def isInteractive(self) -> bool: ...
-    def setInteractive(self, interactive: bool) -> None: ...
-    def isEnabled(self) -> bool: ...
-    def setEnabled(self, enabled: bool) -> None: ...
-    def icon(self) -> QtGui.QIcon: ...
-    def setIcon(self, icon: QtGui.QIcon) -> None: ...
-    def toolTip(self) -> str: ...
-    def setToolTip(self, toolTip: str) -> None: ...

From 42ded79391a16268c93adc1a137885b4a33febc6 Mon Sep 17 00:00:00 2001
From: Philippe F <phil.fremy@free.fr>
Date: Sat, 23 Apr 2022 23:38:11 +0200
Subject: [PATCH 3/3] Add missing platform specific stubs

---
 PyQt5-stubs/QAxContainer.pyi   | 105 ++++++++++++
 PyQt5-stubs/QtMacExtras.pyi    | 120 ++++++++++++++
 PyQt5-stubs/QtTextToSpeech.pyi | 105 ++++++++++++
 PyQt5-stubs/QtWinExtras.pyi    | 295 +++++++++++++++++++++++++++++++++
 4 files changed, 625 insertions(+)
 create mode 100644 PyQt5-stubs/QAxContainer.pyi
 create mode 100644 PyQt5-stubs/QtMacExtras.pyi
 create mode 100644 PyQt5-stubs/QtTextToSpeech.pyi
 create mode 100644 PyQt5-stubs/QtWinExtras.pyi

diff --git a/PyQt5-stubs/QAxContainer.pyi b/PyQt5-stubs/QAxContainer.pyi
new file mode 100644
index 00000000..542bca33
--- /dev/null
+++ b/PyQt5-stubs/QAxContainer.pyi
@@ -0,0 +1,105 @@
+# The PEP 484 type hints stub file for the QAxContainer module.
+#
+# Generated by SIP 6.4.0
+#
+# Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
+# 
+# This file is part of PyQt5.
+# 
+# This file may be used under the terms of the GNU General Public License
+# version 3.0 as published by the Free Software Foundation and appearing in
+# the file LICENSE included in the packaging of this file.  Please review the
+# following information to ensure the GNU General Public License version 3.0
+# requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+# 
+# If you do not wish to use this file under the terms of the GPL version 3.0
+# then you may purchase a commercial license.  For more information contact
+# info@riverbankcomputing.com.
+# 
+# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+
+import typing
+
+import PyQt5.sip
+
+from PyQt5 import QtWidgets
+
+# Support for QDate, QDateTime and QTime.
+import datetime
+
+# Convenient type aliases.
+PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal]
+PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal]
+
+# Convenient aliases for complicated OpenGL types.
+PYQT_OPENGL_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float],
+        PyQt5.sip.Buffer, None]
+PYQT_OPENGL_BOUND_ARRAY = typing.Union[typing.Sequence[int],
+        typing.Sequence[float], PyQt5.sip.Buffer, int, None]
+
+
+class QAxBase(sip.simplewrapper):
+
+    @typing.overload
+    def __init__(self) -> None: ...
+    @typing.overload
+    def __init__(self, a0: 'QAxBase') -> None: ...
+
+    def setClassContext(self, classContext: int) -> None: ...
+    def classContext(self) -> int: ...
+    def disableEventSink(self) -> None: ...
+    def disableClassInfo(self) -> None: ...
+    def disableMetaObject(self) -> None: ...
+    def setControl(self, a0: str) -> bool: ...
+    def clear(self) -> None: ...
+    def exception(self, a0: int, a1: str, a2: str, a3: str) -> None: ...
+    def propertyChanged(self, a0: str) -> None: ...
+    def signal(self, a0: str, a1: int, a2: PyQt5.sip.voidptr) -> None: ...
+    def asVariant(self) -> typing.Any: ...
+    def verbs(self) -> typing.List[str]: ...
+    def isNull(self) -> bool: ...
+    def setPropertyWritable(self, a0: str, a1: bool) -> None: ...
+    def propertyWritable(self, a0: str) -> bool: ...
+    def generateDocumentation(self) -> str: ...
+    def setPropertyBag(self, a0: typing.Dict[str, typing.Any]) -> None: ...
+    def propertyBag(self) -> typing.Dict[str, typing.Any]: ...
+    @typing.overload
+    def querySubObject(self, a0: str, a1: typing.Iterable[typing.Any]) -> 'QAxObject': ...
+    @typing.overload
+    def querySubObject(self, a0: str, value1: typing.Any = ..., value2: typing.Any = ..., value3: typing.Any = ..., value4: typing.Any = ..., value5: typing.Any = ..., value6: typing.Any = ..., value7: typing.Any = ..., value8: typing.Any = ...) -> 'QAxObject': ...
+    @typing.overload
+    def dynamicCall(self, a0: str, a1: typing.Iterable[typing.Any]) -> typing.Any: ...
+    @typing.overload
+    def dynamicCall(self, a0: str, value1: typing.Any = ..., value2: typing.Any = ..., value3: typing.Any = ..., value4: typing.Any = ..., value5: typing.Any = ..., value6: typing.Any = ..., value7: typing.Any = ..., value8: typing.Any = ...) -> typing.Any: ...
+    def control(self) -> str: ...
+
+
+class QAxObject(QtCore.QObject, QAxBase):
+
+    @typing.overload
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+    @typing.overload
+    def __init__(self, a0: str, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def connectNotify(self, a0: QtCore.QMetaMethod) -> None: ...
+    def doVerb(self, a0: str) -> bool: ...
+
+
+class QAxWidget(QtWidgets.QWidget, QAxBase):
+
+    @typing.overload
+    def __init__(self, parent: typing.Optional[QtWidgets.QWidget] = ..., flags: typing.Union[QtCore.Qt.WindowFlags, QtCore.Qt.WindowType] = ...) -> None: ...
+    @typing.overload
+    def __init__(self, a0: str, parent: typing.Optional[QtWidgets.QWidget] = ..., flags: typing.Union[QtCore.Qt.WindowFlags, QtCore.Qt.WindowType] = ...) -> None: ...
+
+    def connectNotify(self, a0: QtCore.QMetaMethod) -> None: ...
+    def translateKeyEvent(self, a0: int, a1: int) -> bool: ...
+    def resizeEvent(self, a0: QtGui.QResizeEvent) -> None: ...
+    def changeEvent(self, a0: QtCore.QEvent) -> None: ...
+    def createHostWindow(self, a0: bool) -> bool: ...
+    def minimumSizeHint(self) -> QtCore.QSize: ...
+    def sizeHint(self) -> QtCore.QSize: ...
+    def doVerb(self, a0: str) -> bool: ...
+    def clear(self) -> None: ...
diff --git a/PyQt5-stubs/QtMacExtras.pyi b/PyQt5-stubs/QtMacExtras.pyi
new file mode 100644
index 00000000..f92fbb5a
--- /dev/null
+++ b/PyQt5-stubs/QtMacExtras.pyi
@@ -0,0 +1,120 @@
+# The PEP 484 type hints stub file for the QtMacExtras module.
+#
+# Generated by SIP 6.4.0
+#
+# Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
+# 
+# This file is part of PyQt5.
+# 
+# This file may be used under the terms of the GNU General Public License
+# version 3.0 as published by the Free Software Foundation and appearing in
+# the file LICENSE included in the packaging of this file.  Please review the
+# following information to ensure the GNU General Public License version 3.0
+# requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+# 
+# If you do not wish to use this file under the terms of the GPL version 3.0
+# then you may purchase a commercial license.  For more information contact
+# info@riverbankcomputing.com.
+# 
+# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+
+import typing
+
+import PyQt5.sip
+
+from PyQt5 import QtGui
+from PyQt5 import QtCore
+
+# Support for QDate, QDateTime and QTime.
+import datetime
+
+# Convenient type aliases.
+PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal]
+PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal]
+
+# Convenient aliases for complicated OpenGL types.
+PYQT_OPENGL_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float],
+        PyQt5.sip.Buffer, None]
+PYQT_OPENGL_BOUND_ARRAY = typing.Union[typing.Sequence[int],
+        typing.Sequence[float], PyQt5.sip.Buffer, int, None]
+
+
+class QMacPasteboardMime(sip.simplewrapper):
+
+    class QMacPasteboardMimeType(int):
+        MIME_DND = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
+        MIME_CLIP = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
+        MIME_QT_CONVERTOR = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
+        MIME_QT3_CONVERTOR = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
+        MIME_ALL = ... # type: QMacPasteboardMime.QMacPasteboardMimeType
+
+    @typing.overload
+    def __init__(self, t: int) -> None: ...
+    @typing.overload
+    def __init__(self, a0: 'QMacPasteboardMime') -> None: ...
+
+    def count(self, mimeData: QtCore.QMimeData) -> int: ...
+    def convertFromMime(self, mime: str, data: typing.Any, flav: str) -> typing.List[QtCore.QByteArray]: ...
+    def convertToMime(self, mime: str, data: typing.Iterable[typing.Union[QtCore.QByteArray, bytes, bytearray]], flav: str) -> typing.Any: ...
+    def flavorFor(self, mime: str) -> str: ...
+    def mimeFor(self, flav: str) -> str: ...
+    def canConvert(self, mime: str, flav: str) -> bool: ...
+    def convertorName(self) -> str: ...
+
+
+class NSToolbar(sip.simplewrapper): ...
+
+
+class QMacToolBar(QtCore.QObject):
+
+    @typing.overload
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+    @typing.overload
+    def __init__(self, identifier: str, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def nativeToolbar(self) -> NSToolbar: ...
+    def detachFromWindow(self) -> None: ...
+    def attachToWindow(self, window: QtGui.QWindow) -> None: ...
+    def allowedItems(self) -> typing.List['QMacToolBarItem']: ...
+    def setAllowedItems(self, allowedItems: typing.Iterable['QMacToolBarItem']) -> None: ...
+    def items(self) -> typing.List['QMacToolBarItem']: ...
+    def setItems(self, items: typing.Iterable['QMacToolBarItem']) -> None: ...
+    def addSeparator(self) -> None: ...
+    def addAllowedItem(self, icon: QtGui.QIcon, text: str) -> 'QMacToolBarItem': ...
+    def addItem(self, icon: QtGui.QIcon, text: str) -> 'QMacToolBarItem': ...
+
+
+class NSToolbarItem(sip.simplewrapper): ...
+
+
+class QMacToolBarItem(QtCore.QObject):
+
+    class StandardItem(int):
+        NoStandardItem = ... # type: QMacToolBarItem.StandardItem
+        Space = ... # type: QMacToolBarItem.StandardItem
+        FlexibleSpace = ... # type: QMacToolBarItem.StandardItem
+
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def activated(self) -> None: ...
+    def nativeToolBarItem(self) -> NSToolbarItem: ...
+    def setIcon(self, icon: QtGui.QIcon) -> None: ...
+    def icon(self) -> QtGui.QIcon: ...
+    def setText(self, text: str) -> None: ...
+    def text(self) -> str: ...
+    def setStandardItem(self, standardItem: 'QMacToolBarItem.StandardItem') -> None: ...
+    def standardItem(self) -> 'QMacToolBarItem.StandardItem': ...
+    def setSelectable(self, selectable: bool) -> None: ...
+    def selectable(self) -> bool: ...
+
+
+class QtMac(PyQt5.sip.simplewrapper):
+
+    def isMainWindow(self, window: QtGui.QWindow) -> bool: ...
+    def badgeLabelText(self) -> str: ...
+    def setBadgeLabelText(self, text: str) -> None: ...
+
+
+def qRegisterDraggedTypes(types: typing.Iterable[str]) -> None: ...
diff --git a/PyQt5-stubs/QtTextToSpeech.pyi b/PyQt5-stubs/QtTextToSpeech.pyi
new file mode 100644
index 00000000..dd029411
--- /dev/null
+++ b/PyQt5-stubs/QtTextToSpeech.pyi
@@ -0,0 +1,105 @@
+# The PEP 484 type hints stub file for the QtTextToSpeech module.
+#
+# Generated by SIP 6.4.0
+#
+# Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
+# 
+# This file is part of PyQt5.
+# 
+# This file may be used under the terms of the GNU General Public License
+# version 3.0 as published by the Free Software Foundation and appearing in
+# the file LICENSE included in the packaging of this file.  Please review the
+# following information to ensure the GNU General Public License version 3.0
+# requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+# 
+# If you do not wish to use this file under the terms of the GPL version 3.0
+# then you may purchase a commercial license.  For more information contact
+# info@riverbankcomputing.com.
+# 
+# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+
+import typing
+
+import PyQt5.sip
+
+from PyQt5 import QtCore
+
+# Support for QDate, QDateTime and QTime.
+import datetime
+
+# Convenient type aliases.
+PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal]
+PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal]
+
+
+class QTextToSpeech(QtCore.QObject):
+
+    class State(int):
+        Ready = ... # type: QTextToSpeech.State
+        Speaking = ... # type: QTextToSpeech.State
+        Paused = ... # type: QTextToSpeech.State
+        BackendError = ... # type: QTextToSpeech.State
+
+    @typing.overload
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+    @typing.overload
+    def __init__(self, engine: str, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def voiceChanged(self, voice: 'QVoice') -> None: ...
+    @typing.overload
+    def volumeChanged(self, volume: float) -> None: ...
+    @typing.overload
+    def volumeChanged(self, volume: int) -> None: ...
+    def pitchChanged(self, pitch: float) -> None: ...
+    def rateChanged(self, rate: float) -> None: ...
+    def localeChanged(self, locale: QtCore.QLocale) -> None: ...
+    def stateChanged(self, state: 'QTextToSpeech.State') -> None: ...
+    def setVoice(self, voice: 'QVoice') -> None: ...
+    def setVolume(self, volume: float) -> None: ...
+    def setPitch(self, pitch: float) -> None: ...
+    def setRate(self, rate: float) -> None: ...
+    def setLocale(self, locale: QtCore.QLocale) -> None: ...
+    def resume(self) -> None: ...
+    def pause(self) -> None: ...
+    def stop(self) -> None: ...
+    def say(self, text: str) -> None: ...
+    @staticmethod
+    def availableEngines() -> typing.List[str]: ...
+    def volume(self) -> float: ...
+    def pitch(self) -> float: ...
+    def rate(self) -> float: ...
+    def availableVoices(self) -> typing.List['QVoice']: ...
+    def voice(self) -> 'QVoice': ...
+    def locale(self) -> QtCore.QLocale: ...
+    def availableLocales(self) -> typing.List[QtCore.QLocale]: ...
+    def state(self) -> 'QTextToSpeech.State': ...
+
+
+class QVoice(sip.simplewrapper):
+
+    class Age(int):
+        Child = ... # type: QVoice.Age
+        Teenager = ... # type: QVoice.Age
+        Adult = ... # type: QVoice.Age
+        Senior = ... # type: QVoice.Age
+        Other = ... # type: QVoice.Age
+
+    class Gender(int):
+        Male = ... # type: QVoice.Gender
+        Female = ... # type: QVoice.Gender
+        Unknown = ... # type: QVoice.Gender
+
+    @typing.overload
+    def __init__(self) -> None: ...
+    @typing.overload
+    def __init__(self, other: 'QVoice') -> None: ...
+
+    @staticmethod
+    def ageName(age: 'QVoice.Age') -> str: ...
+    @staticmethod
+    def genderName(gender: 'QVoice.Gender') -> str: ...
+    def age(self) -> 'QVoice.Age': ...
+    def gender(self) -> 'QVoice.Gender': ...
+    def name(self) -> str: ...
diff --git a/PyQt5-stubs/QtWinExtras.pyi b/PyQt5-stubs/QtWinExtras.pyi
new file mode 100644
index 00000000..c8c32ac8
--- /dev/null
+++ b/PyQt5-stubs/QtWinExtras.pyi
@@ -0,0 +1,295 @@
+# The PEP 484 type hints stub file for the QtWinExtras module.
+#
+# Generated by SIP 6.4.0
+#
+# Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
+# 
+# This file is part of PyQt5.
+# 
+# This file may be used under the terms of the GNU General Public License
+# version 3.0 as published by the Free Software Foundation and appearing in
+# the file LICENSE included in the packaging of this file.  Please review the
+# following information to ensure the GNU General Public License version 3.0
+# requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+# 
+# If you do not wish to use this file under the terms of the GPL version 3.0
+# then you may purchase a commercial license.  For more information contact
+# info@riverbankcomputing.com.
+# 
+# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+
+import typing
+
+import PyQt5.sip
+
+from PyQt5 import QtWidgets
+
+# Support for QDate, QDateTime and QTime.
+import datetime
+
+# Convenient type aliases.
+PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal]
+PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal]
+
+# Convenient aliases for complicated OpenGL types.
+PYQT_OPENGL_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float],
+        PyQt5.sip.Buffer, None]
+PYQT_OPENGL_BOUND_ARRAY = typing.Union[typing.Sequence[int],
+        typing.Sequence[float], PyQt5.sip.Buffer, int, None]
+
+
+class QtWin(PyQt5.sip.simplewrapper):
+
+    class WindowFlip3DPolicy(int):
+        FlipDefault = ... # type: QtWin.WindowFlip3DPolicy
+        FlipExcludeBelow = ... # type: QtWin.WindowFlip3DPolicy
+        FlipExcludeAbove = ... # type: QtWin.WindowFlip3DPolicy
+
+    class HBitmapFormat(int):
+        HBitmapNoAlpha = ... # type: QtWin.HBitmapFormat
+        HBitmapPremultipliedAlpha = ... # type: QtWin.HBitmapFormat
+        HBitmapAlpha = ... # type: QtWin.HBitmapFormat
+
+    @typing.overload
+    def taskbarDeleteTab(self, a0: QtGui.QWindow) -> None: ...
+    @typing.overload
+    def taskbarDeleteTab(self, window: QtWidgets.QWidget) -> None: ...
+    @typing.overload
+    def taskbarAddTab(self, a0: QtGui.QWindow) -> None: ...
+    @typing.overload
+    def taskbarAddTab(self, window: QtWidgets.QWidget) -> None: ...
+    @typing.overload
+    def taskbarActivateTabAlt(self, a0: QtGui.QWindow) -> None: ...
+    @typing.overload
+    def taskbarActivateTabAlt(self, window: QtWidgets.QWidget) -> None: ...
+    @typing.overload
+    def taskbarActivateTab(self, a0: QtGui.QWindow) -> None: ...
+    @typing.overload
+    def taskbarActivateTab(self, window: QtWidgets.QWidget) -> None: ...
+    @typing.overload
+    def markFullscreenWindow(self, a0: QtGui.QWindow, fullscreen: bool = ...) -> None: ...
+    @typing.overload
+    def markFullscreenWindow(self, window: QtWidgets.QWidget, fullscreen: bool = ...) -> None: ...
+    def setCurrentProcessExplicitAppUserModelID(self, id: str) -> None: ...
+    def isCompositionOpaque(self) -> bool: ...
+    def setCompositionEnabled(self, enabled: bool) -> None: ...
+    def isCompositionEnabled(self) -> bool: ...
+    @typing.overload
+    def disableBlurBehindWindow(self, window: QtGui.QWindow) -> None: ...
+    @typing.overload
+    def disableBlurBehindWindow(self, window: QtWidgets.QWidget) -> None: ...
+    @typing.overload
+    def enableBlurBehindWindow(self, window: QtGui.QWindow, region: QtGui.QRegion) -> None: ...
+    @typing.overload
+    def enableBlurBehindWindow(self, window: QtGui.QWindow) -> None: ...
+    @typing.overload
+    def enableBlurBehindWindow(self, window: QtWidgets.QWidget, region: QtGui.QRegion) -> None: ...
+    @typing.overload
+    def enableBlurBehindWindow(self, window: QtWidgets.QWidget) -> None: ...
+    @typing.overload
+    def resetExtendedFrame(self, window: QtGui.QWindow) -> None: ...
+    @typing.overload
+    def resetExtendedFrame(self, window: QtWidgets.QWidget) -> None: ...
+    @typing.overload
+    def extendFrameIntoClientArea(self, window: QtGui.QWindow, left: int, top: int, right: int, bottom: int) -> None: ...
+    @typing.overload
+    def extendFrameIntoClientArea(self, window: QtGui.QWindow, margins: QtCore.QMargins) -> None: ...
+    @typing.overload
+    def extendFrameIntoClientArea(self, window: QtWidgets.QWidget, margins: QtCore.QMargins) -> None: ...
+    @typing.overload
+    def extendFrameIntoClientArea(self, window: QtWidgets.QWidget, left: int, top: int, right: int, bottom: int) -> None: ...
+    @typing.overload
+    def windowFlip3DPolicy(self, a0: QtGui.QWindow) -> 'QtWin.WindowFlip3DPolicy': ...
+    @typing.overload
+    def windowFlip3DPolicy(self, window: QtWidgets.QWidget) -> 'QtWin.WindowFlip3DPolicy': ...
+    @typing.overload
+    def setWindowFlip3DPolicy(self, window: QtGui.QWindow, policy: 'QtWin.WindowFlip3DPolicy') -> None: ...
+    @typing.overload
+    def setWindowFlip3DPolicy(self, window: QtWidgets.QWidget, policy: 'QtWin.WindowFlip3DPolicy') -> None: ...
+    @typing.overload
+    def isWindowPeekDisallowed(self, window: QtGui.QWindow) -> bool: ...
+    @typing.overload
+    def isWindowPeekDisallowed(self, window: QtWidgets.QWidget) -> bool: ...
+    @typing.overload
+    def setWindowDisallowPeek(self, window: QtGui.QWindow, disallow: bool) -> None: ...
+    @typing.overload
+    def setWindowDisallowPeek(self, window: QtWidgets.QWidget, disallow: bool) -> None: ...
+    @typing.overload
+    def isWindowExcludedFromPeek(self, window: QtGui.QWindow) -> bool: ...
+    @typing.overload
+    def isWindowExcludedFromPeek(self, window: QtWidgets.QWidget) -> bool: ...
+    @typing.overload
+    def setWindowExcludedFromPeek(self, window: QtGui.QWindow, exclude: bool) -> None: ...
+    @typing.overload
+    def setWindowExcludedFromPeek(self, window: QtWidgets.QWidget, exclude: bool) -> None: ...
+    def realColorizationColor(self) -> QtGui.QColor: ...
+    def colorizationColor(self) -> typing.Tuple[QtGui.QColor, bool]: ...
+    def errorStringFromHresult(self, hresult: int) -> str: ...
+    def stringFromHresult(self, hresult: int) -> str: ...
+    def fromHRGN(self, hrgn: PyQt5.sip.voidptr) -> QtGui.QRegion: ...
+    def toHRGN(self, region: QtGui.QRegion) -> PyQt5.sip.voidptr: ...
+    def fromHICON(self, icon: PyQt5.sip.voidptr) -> QtGui.QPixmap: ...
+    def imageFromHBITMAP(self, hdc: PyQt5.sip.voidptr, bitmap: PyQt5.sip.voidptr, width: int, height: int) -> QtGui.QImage: ...
+    def toHICON(self, p: QtGui.QPixmap) -> PyQt5.sip.voidptr: ...
+    def fromHBITMAP(self, bitmap: PyQt5.sip.voidptr, format: 'QtWin.HBitmapFormat' = ...) -> QtGui.QPixmap: ...
+    def toHBITMAP(self, p: QtGui.QPixmap, format: 'QtWin.HBitmapFormat' = ...) -> PyQt5.sip.voidptr: ...
+    def createMask(self, bitmap: QtGui.QBitmap) -> PyQt5.sip.voidptr: ...
+
+
+class QWinJumpList(QtCore.QObject):
+
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def clear(self) -> None: ...
+    @typing.overload
+    def addCategory(self, category: 'QWinJumpListCategory') -> None: ...
+    @typing.overload
+    def addCategory(self, title: str, items: typing.Iterable['QWinJumpListItem'] = ...) -> 'QWinJumpListCategory': ...
+    def categories(self) -> typing.List['QWinJumpListCategory']: ...
+    def tasks(self) -> 'QWinJumpListCategory': ...
+    def frequent(self) -> 'QWinJumpListCategory': ...
+    def recent(self) -> 'QWinJumpListCategory': ...
+    def setIdentifier(self, identifier: str) -> None: ...
+    def identifier(self) -> str: ...
+
+
+class QWinJumpListCategory(PyQt5.sip.wrapper):
+
+    class Type(int):
+        Custom = ... # type: QWinJumpListCategory.Type
+        Recent = ... # type: QWinJumpListCategory.Type
+        Frequent = ... # type: QWinJumpListCategory.Type
+        Tasks = ... # type: QWinJumpListCategory.Type
+
+    def __init__(self, title: str = ...) -> None: ...
+
+    def clear(self) -> None: ...
+    def addSeparator(self) -> 'QWinJumpListItem': ...
+    @typing.overload
+    def addLink(self, title: str, executablePath: str, arguments: typing.Iterable[str] = ...) -> 'QWinJumpListItem': ...
+    @typing.overload
+    def addLink(self, icon: QtGui.QIcon, title: str, executablePath: str, arguments: typing.Iterable[str] = ...) -> 'QWinJumpListItem': ...
+    def addDestination(self, filePath: str) -> 'QWinJumpListItem': ...
+    def addItem(self, item: 'QWinJumpListItem') -> None: ...
+    def items(self) -> typing.List['QWinJumpListItem']: ...
+    def isEmpty(self) -> bool: ...
+    def count(self) -> int: ...
+    def setTitle(self, title: str) -> None: ...
+    def title(self) -> str: ...
+    def setVisible(self, visible: bool) -> None: ...
+    def isVisible(self) -> bool: ...
+    def type(self) -> 'QWinJumpListCategory.Type': ...
+
+
+class QWinJumpListItem(PyQt5.sip.wrapper):
+
+    class Type(int):
+        Destination = ... # type: QWinJumpListItem.Type
+        Link = ... # type: QWinJumpListItem.Type
+        Separator = ... # type: QWinJumpListItem.Type
+
+    def __init__(self, type: 'QWinJumpListItem.Type') -> None: ...
+
+    def arguments(self) -> typing.List[str]: ...
+    def setArguments(self, arguments: typing.Iterable[str]) -> None: ...
+    def description(self) -> str: ...
+    def setDescription(self, description: str) -> None: ...
+    def title(self) -> str: ...
+    def setTitle(self, title: str) -> None: ...
+    def icon(self) -> QtGui.QIcon: ...
+    def setIcon(self, icon: QtGui.QIcon) -> None: ...
+    def workingDirectory(self) -> str: ...
+    def setWorkingDirectory(self, workingDirectory: str) -> None: ...
+    def filePath(self) -> str: ...
+    def setFilePath(self, filePath: str) -> None: ...
+    def type(self) -> 'QWinJumpListItem.Type': ...
+    def setType(self, type: 'QWinJumpListItem.Type') -> None: ...
+
+
+class QWinTaskbarButton(QtCore.QObject):
+
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def clearOverlayIcon(self) -> None: ...
+    def setOverlayAccessibleDescription(self, description: str) -> None: ...
+    def setOverlayIcon(self, icon: QtGui.QIcon) -> None: ...
+    def eventFilter(self, a0: QtCore.QObject, a1: QtCore.QEvent) -> bool: ...
+    def progress(self) -> 'QWinTaskbarProgress': ...
+    def overlayAccessibleDescription(self) -> str: ...
+    def overlayIcon(self) -> QtGui.QIcon: ...
+    def window(self) -> QtGui.QWindow: ...
+    def setWindow(self, window: QtGui.QWindow) -> None: ...
+
+
+class QWinTaskbarProgress(QtCore.QObject):
+
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def visibilityChanged(self, visible: bool) -> None: ...
+    def maximumChanged(self, maximum: int) -> None: ...
+    def minimumChanged(self, minimum: int) -> None: ...
+    def valueChanged(self, value: int) -> None: ...
+    def stop(self) -> None: ...
+    def setPaused(self, paused: bool) -> None: ...
+    def resume(self) -> None: ...
+    def pause(self) -> None: ...
+    def setVisible(self, visible: bool) -> None: ...
+    def hide(self) -> None: ...
+    def show(self) -> None: ...
+    def reset(self) -> None: ...
+    def setRange(self, minimum: int, maximum: int) -> None: ...
+    def setMaximum(self, maximum: int) -> None: ...
+    def setMinimum(self, minimum: int) -> None: ...
+    def setValue(self, value: int) -> None: ...
+    def isStopped(self) -> bool: ...
+    def isPaused(self) -> bool: ...
+    def isVisible(self) -> bool: ...
+    def maximum(self) -> int: ...
+    def minimum(self) -> int: ...
+    def value(self) -> int: ...
+
+
+class QWinThumbnailToolBar(QtCore.QObject):
+
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def iconicLivePreviewPixmapRequested(self) -> None: ...
+    def iconicThumbnailPixmapRequested(self) -> None: ...
+    def setIconicLivePreviewPixmap(self, a0: QtGui.QPixmap) -> None: ...
+    def setIconicThumbnailPixmap(self, a0: QtGui.QPixmap) -> None: ...
+    def clear(self) -> None: ...
+    def iconicLivePreviewPixmap(self) -> QtGui.QPixmap: ...
+    def iconicThumbnailPixmap(self) -> QtGui.QPixmap: ...
+    def setIconicPixmapNotificationsEnabled(self, enabled: bool) -> None: ...
+    def iconicPixmapNotificationsEnabled(self) -> bool: ...
+    def count(self) -> int: ...
+    def buttons(self) -> typing.List['QWinThumbnailToolButton']: ...
+    def setButtons(self, buttons: typing.Iterable['QWinThumbnailToolButton']) -> None: ...
+    def removeButton(self, button: 'QWinThumbnailToolButton') -> None: ...
+    def addButton(self, button: 'QWinThumbnailToolButton') -> None: ...
+    def window(self) -> QtGui.QWindow: ...
+    def setWindow(self, window: QtGui.QWindow) -> None: ...
+
+
+class QWinThumbnailToolButton(QtCore.QObject):
+
+    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
+
+    def clicked(self) -> None: ...
+    def click(self) -> None: ...
+    def isFlat(self) -> bool: ...
+    def setFlat(self, flat: bool) -> None: ...
+    def dismissOnClick(self) -> bool: ...
+    def setDismissOnClick(self, dismiss: bool) -> None: ...
+    def isVisible(self) -> bool: ...
+    def setVisible(self, visible: bool) -> None: ...
+    def isInteractive(self) -> bool: ...
+    def setInteractive(self, interactive: bool) -> None: ...
+    def isEnabled(self) -> bool: ...
+    def setEnabled(self, enabled: bool) -> None: ...
+    def icon(self) -> QtGui.QIcon: ...
+    def setIcon(self, icon: QtGui.QIcon) -> None: ...
+    def toolTip(self) -> str: ...
+    def setToolTip(self, toolTip: str) -> None: ...