diff options
author | Florian Bruhin <me@the-compiler.org> | 2023-06-29 14:25:55 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2023-06-29 21:10:01 +0200 |
commit | c42ce858201bb67a464ee9cf12cde03643b45152 (patch) | |
tree | d1f865442e540590df289ca7496eb25b9b830682 | |
parent | 2ac6b0768b04ad2deed7e24dfe52a2d4c42cf704 (diff) | |
download | qutebrowser-c42ce858201bb67a464ee9cf12cde03643b45152.tar.gz qutebrowser-c42ce858201bb67a464ee9cf12cde03643b45152.zip |
qt6 mypy: Add missing pyqtProperty
39 -> 36 errors
-rw-r--r-- | qutebrowser/qt/core.py | 66 |
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() |