summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2023-06-29 14:25:55 +0200
committerFlorian Bruhin <me@the-compiler.org>2023-06-29 21:10:01 +0200
commitc42ce858201bb67a464ee9cf12cde03643b45152 (patch)
treed1f865442e540590df289ca7496eb25b9b830682
parent2ac6b0768b04ad2deed7e24dfe52a2d4c42cf704 (diff)
downloadqutebrowser-c42ce858201bb67a464ee9cf12cde03643b45152.tar.gz
qutebrowser-c42ce858201bb67a464ee9cf12cde03643b45152.zip
qt6 mypy: Add missing pyqtProperty
39 -> 36 errors
-rw-r--r--qutebrowser/qt/core.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/qutebrowser/qt/core.py b/qutebrowser/qt/core.py
index d9323f877..733b4bc9c 100644
--- a/qutebrowser/qt/core.py
+++ b/qutebrowser/qt/core.py
@@ -12,6 +12,7 @@ Any API exported from this module is based on the Qt 6 API:
https://doc.qt.io/qt-6/qtcore-index.html
"""
+from typing import TYPE_CHECKING
from qutebrowser.qt import machinery
machinery.init_implicit()
@@ -23,5 +24,70 @@ elif machinery.USE_PYQT5:
from PyQt5.QtCore import *
elif machinery.USE_PYQT6:
from PyQt6.QtCore import *
+
+ if TYPE_CHECKING:
+ # FIXME:mypy PyQt6-stubs issue
+ # WORKAROUND for missing pyqtProperty typing, ported from PyQt5-stubs:
+ # https://github.com/python-qt-tools/PyQt5-stubs/blob/5.15.6.0/PyQt5-stubs/QtCore.pyi#L70-L111
+ import typing
+
+ TPropertyTypeVal = typing.TypeVar('TPropertyTypeVal')
+
+ TPropGetter = typing.TypeVar('TPropGetter', bound=typing.Callable[[QObjectT], TPropertyTypeVal])
+ TPropSetter = typing.TypeVar('TPropSetter', bound=typing.Callable[[QObjectT, TPropertyTypeVal], None])
+ TPropDeleter = typing.TypeVar('TPropDeleter', bound=typing.Callable[[QObjectT], None])
+ TPropResetter = typing.TypeVar('TPropResetter', bound=typing.Callable[[QObjectT], None])
+
+ class pyqtProperty:
+ def __init__(
+ self,
+ type: typing.Union[type, str],
+ fget: typing.Optional[
+ typing.Callable[[QObjectT], TPropertyTypeVal]
+ ] = None,
+ fset: typing.Optional[
+ typing.Callable[[QObjectT, TPropertyTypeVal], None]
+ ] = None,
+ freset: typing.Optional[typing.Callable[[QObjectT], None]] = None,
+ fdel: typing.Optional[typing.Callable[[QObjectT], None]] = None,
+ doc: typing.Optional[str] = "",
+ designable: bool = True,
+ scriptable: bool = True,
+ stored: bool = True,
+ user: bool = True,
+ constant: bool = True,
+ final: bool = True,
+ notify: typing.Optional[pyqtSignal] = None,
+ revision: int = 0,
+ ) -> None:
+ ...
+
+ type: typing.Union[type, str]
+ fget: typing.Optional[typing.Callable[[], TPropertyTypeVal]]
+ fset: typing.Optional[typing.Callable[[TPropertyTypeVal], None]]
+ freset: typing.Optional[typing.Callable[[], None]]
+ fdel: typing.Optional[typing.Callable[[], None]]
+
+ def read(self, func: TPropGetter) -> "pyqtProperty":
+ ...
+
+ def write(self, func: TPropSetter) -> "pyqtProperty":
+ ...
+
+ def reset(self, func: TPropResetter) -> "pyqtProperty":
+ ...
+
+ def getter(self, func: TPropGetter) -> "pyqtProperty":
+ ...
+
+ def setter(self, func: TPropSetter) -> "pyqtProperty":
+ ...
+
+ def deleter(self, func: TPropDeleter) -> "pyqtProperty":
+ ...
+
+ def __call__(self, func: TPropGetter) -> "pyqtProperty":
+ ...
+
else:
raise machinery.UnknownWrapper()