summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2023-06-29 23:27:29 +0200
committerFlorian Bruhin <me@the-compiler.org>2023-06-29 23:27:29 +0200
commit41f374a6625fa773ce9440d1e0eef4d155e51f9c (patch)
tree80575a16003d6e13851e7e5ff8bd360753668a4e
parent50a1f004f058b95bbd6223300dd015db862dd746 (diff)
downloadqutebrowser-41f374a6625fa773ce9440d1e0eef4d155e51f9c.tar.gz
qutebrowser-41f374a6625fa773ce9440d1e0eef4d155e51f9c.zip
qt6 mypy: Fix lint
-rw-r--r--qutebrowser/browser/network/pac.py2
-rw-r--r--qutebrowser/browser/webengine/webenginequtescheme.py1
-rw-r--r--qutebrowser/mainwindow/statusbar/bar.py1
-rw-r--r--qutebrowser/misc/nativeeventfilter.py10
-rw-r--r--qutebrowser/qt/_core_pyqtproperty.py73
-rw-r--r--qutebrowser/qt/core.py64
-rw-r--r--qutebrowser/utils/urlutils.py13
7 files changed, 89 insertions, 75 deletions
diff --git a/qutebrowser/browser/network/pac.py b/qutebrowser/browser/network/pac.py
index 8a67850f5..7e24f5a49 100644
--- a/qutebrowser/browser/network/pac.py
+++ b/qutebrowser/browser/network/pac.py
@@ -215,7 +215,7 @@ class PACResolver:
"""
qtutils.ensure_valid(query.url())
- string_flags: urlutils.URL_FLAGS_T
+ string_flags: urlutils.UrlFlagsType
if from_file:
string_flags = QUrl.ComponentFormattingOption.PrettyDecoded
else:
diff --git a/qutebrowser/browser/webengine/webenginequtescheme.py b/qutebrowser/browser/webengine/webenginequtescheme.py
index 205380484..63ff752fd 100644
--- a/qutebrowser/browser/webengine/webenginequtescheme.py
+++ b/qutebrowser/browser/webengine/webenginequtescheme.py
@@ -30,6 +30,7 @@ from qutebrowser.utils import log, qtutils
# FIXME:mypy PyQt6-stubs issue?
_QUTE = QByteArray(b'qute') # type: ignore[call-overload,unused-ignore]
+
class QuteSchemeHandler(QWebEngineUrlSchemeHandler):
"""Handle qute://* requests on QtWebEngine."""
diff --git a/qutebrowser/mainwindow/statusbar/bar.py b/qutebrowser/mainwindow/statusbar/bar.py
index 92e77df2f..b9e1d7465 100644
--- a/qutebrowser/mainwindow/statusbar/bar.py
+++ b/qutebrowser/mainwindow/statusbar/bar.py
@@ -23,7 +23,6 @@ import enum
import dataclasses
from qutebrowser.qt.core import pyqtSignal, pyqtProperty, pyqtSlot, Qt, QSize, QTimer
-from qutebrowser.qt.core import pyqtProperty
from qutebrowser.qt.widgets import QWidget, QHBoxLayout, QStackedLayout, QSizePolicy
from qutebrowser.browser import browsertab
diff --git a/qutebrowser/misc/nativeeventfilter.py b/qutebrowser/misc/nativeeventfilter.py
index dad22ef7d..963baeea7 100644
--- a/qutebrowser/misc/nativeeventfilter.py
+++ b/qutebrowser/misc/nativeeventfilter.py
@@ -106,9 +106,9 @@ class xcb_query_extension_reply_t(ctypes.Structure): # noqa: N801
if machinery.IS_QT6:
- _POINTER_RET_T = sip.voidptr
+ _PointerRetType = sip.voidptr
else:
- _POINTER_RET_T = int
+ _PointerRetType = int
class NativeEventFilter(QAbstractNativeEventFilter):
@@ -119,8 +119,8 @@ class NativeEventFilter(QAbstractNativeEventFilter):
#
# Tuple because PyQt uses the second value as the *result out-pointer, which
# according to the Qt documentation is only used on Windows.
- _PASS_EVENT_RET = (False, cast(_POINTER_RET_T, 0))
- _FILTER_EVENT_RET = (True, cast(_POINTER_RET_T, 0))
+ _PASS_EVENT_RET = (False, cast(_PointerRetType, 0))
+ _FILTER_EVENT_RET = (True, cast(_PointerRetType, 0))
def __init__(self) -> None:
super().__init__()
@@ -153,7 +153,7 @@ class NativeEventFilter(QAbstractNativeEventFilter):
def nativeEventFilter(
self, evtype: Union[bytes, QByteArray], message: sip.voidptr
- ) -> Tuple[bool, _POINTER_RET_T]:
+ ) -> Tuple[bool, _PointerRetType]:
"""Handle XCB events."""
# We're only installed when the platform plugin is xcb
assert evtype == b"xcb_generic_event_t", evtype
diff --git a/qutebrowser/qt/_core_pyqtproperty.py b/qutebrowser/qt/_core_pyqtproperty.py
new file mode 100644
index 000000000..7f89b8e5b
--- /dev/null
+++ b/qutebrowser/qt/_core_pyqtproperty.py
@@ -0,0 +1,73 @@
+# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et:
+
+"""
+# 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
+"""
+
+# flake8: noqa
+# pylint: disable=invalid-name,undefined-variable,too-many-arguments,redefined-builtin,unused-argument
+
+import typing
+from PyQt6.QtCore import QObjectT, pyqtSignal
+
+if typing.TYPE_CHECKING:
+
+ 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":
+ ...
diff --git a/qutebrowser/qt/core.py b/qutebrowser/qt/core.py
index 733b4bc9c..3349b3c17 100644
--- a/qutebrowser/qt/core.py
+++ b/qutebrowser/qt/core.py
@@ -26,68 +26,6 @@ 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":
- ...
-
+ from qutebrowser.qt._core_pyqtproperty import pyqtProperty
else:
raise machinery.UnknownWrapper()
diff --git a/qutebrowser/utils/urlutils.py b/qutebrowser/utils/urlutils.py
index e9abb104b..f9eada254 100644
--- a/qutebrowser/utils/urlutils.py
+++ b/qutebrowser/utils/urlutils.py
@@ -43,8 +43,11 @@ from qutebrowser.browser.network import pac
if machinery.IS_QT6:
- URL_FLAGS_T = Union[QUrl.UrlFormattingOption, QUrl.ComponentFormattingOption]
+ UrlFlagsType = Union[QUrl.UrlFormattingOption, QUrl.ComponentFormattingOption]
+
class FormatOption:
+ """Simple wrapper around Qt enums to fix typing problems on Qt 5."""
+
ENCODED = QUrl.ComponentFormattingOption.FullyEncoded
ENCODE_UNICODE = QUrl.ComponentFormattingOption.EncodeUnicode
DECODE_RESERVED = QUrl.ComponentFormattingOption.DecodeReserved
@@ -52,7 +55,7 @@ if machinery.IS_QT6:
REMOVE_SCHEME = QUrl.UrlFormattingOption.RemoveScheme
REMOVE_PASSWORD = QUrl.UrlFormattingOption.RemovePassword
else:
- URL_FLAGS_T = Union[
+ UrlFlagsType = Union[
QUrl.FormattingOptions,
QUrl.UrlFormattingOption,
QUrl.ComponentFormattingOption,
@@ -64,7 +67,8 @@ else:
Teach mypy that | works for QUrl.FormattingOptions.
"""
- def __or__(self, f: URL_FLAGS_T) -> '_QtFormattingOptions':
+
+ def __or__(self, f: UrlFlagsType) -> '_QtFormattingOptions':
return super() | f # type: ignore[operator,return-value]
class FormatOption:
@@ -73,6 +77,7 @@ else:
Pretend that all ComponentFormattingOption values are also valid
QUrl.FormattingOptions values, i.e. can be passed to QUrl.toString().
"""
+
ENCODED = cast(
_QtFormattingOptions, QUrl.ComponentFormattingOption.FullyEncoded)
ENCODE_UNICODE = cast(
@@ -86,8 +91,6 @@ else:
_QtFormattingOptions, QUrl.UrlFormattingOption.RemovePassword)
-
-
# URL schemes supported by QtWebEngine
WEBENGINE_SCHEMES = [
'about',