summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2023-06-29 14:55:28 +0200
committerFlorian Bruhin <me@the-compiler.org>2023-06-29 21:10:43 +0200
commitf2c308c6c1dde02575d6d09fe4973fd0be9b52ed (patch)
tree8a34ef4dbfab3f9f34fbd6a2f98ef27073c7e7ed
parent09df332997689888d932fcccfd15d147b4fe7d44 (diff)
downloadqutebrowser-f2c308c6c1dde02575d6d09fe4973fd0be9b52ed.tar.gz
qutebrowser-f2c308c6c1dde02575d6d09fe4973fd0be9b52ed.zip
qt6 mypy: Fix remaining issues
30 -> 0 errors
-rw-r--r--qutebrowser/browser/webengine/notification.py10
-rw-r--r--qutebrowser/keyinput/keyutils.py10
-rw-r--r--qutebrowser/keyinput/modeman.py2
-rw-r--r--qutebrowser/misc/crashdialog.py3
-rw-r--r--qutebrowser/misc/earlyinit.py7
-rw-r--r--qutebrowser/misc/httpclient.py3
-rw-r--r--qutebrowser/misc/nativeeventfilter.py8
-rw-r--r--qutebrowser/qt/sip.py2
-rw-r--r--qutebrowser/utils/debug.py8
-rw-r--r--qutebrowser/utils/urlutils.py6
-rw-r--r--qutebrowser/utils/version.py8
11 files changed, 36 insertions, 31 deletions
diff --git a/qutebrowser/browser/webengine/notification.py b/qutebrowser/browser/webengine/notification.py
index f5c9fb92e..ba00b066b 100644
--- a/qutebrowser/browser/webengine/notification.py
+++ b/qutebrowser/browser/webengine/notification.py
@@ -691,11 +691,12 @@ def _as_uint32(x: int) -> QVariant:
variant = QVariant(x)
if machinery.IS_QT5:
- target_type = QVariant.Type.UInt
+ target = QVariant.Type.UInt
else: # Qt 6
- target_type = QMetaType(QMetaType.Type.UInt.value)
+ # FIXME:mypy PyQt6-stubs issue
+ target = QMetaType(QMetaType.Type.UInt.value) # type: ignore[call-overload]
- successful = variant.convert(target_type)
+ successful = variant.convert(target)
assert successful
return variant
@@ -1110,7 +1111,8 @@ class DBusNotificationAdapter(AbstractNotificationAdapter):
return None
bits = qimage.constBits().asstring(size)
- image_data.add(QByteArray(bits))
+ # FIXME:mypy PyQt6-stubs issue
+ image_data.add(QByteArray(bits)) # type: ignore[call-overload]
image_data.endStructure()
return image_data
diff --git a/qutebrowser/keyinput/keyutils.py b/qutebrowser/keyinput/keyutils.py
index aecca59a8..a5ffd026a 100644
--- a/qutebrowser/keyinput/keyutils.py
+++ b/qutebrowser/keyinput/keyutils.py
@@ -228,8 +228,8 @@ def _check_valid_utf8(s: str, data: Union[Qt.Key, _ModifierType]) -> None:
try:
s.encode('utf-8')
except UnicodeEncodeError as e: # pragma: no cover
- raise ValueError("Invalid encoding in 0x{:x} -> {}: {}"
- .format(int(data), s, e))
+ i = qtutils.extract_enum_val(data)
+ raise ValueError(f"Invalid encoding in 0x{i:x} -> {s}: {e}")
def _key_to_string(key: Qt.Key) -> str:
@@ -399,7 +399,7 @@ class KeyInfo:
except ValueError as ex:
raise InvalidKeyError(str(ex))
key = _remap_unicode(key, e.text())
- modifiers = cast(Qt.KeyboardModifier, e.modifiers())
+ modifiers = e.modifiers()
return cls(key, modifiers)
@classmethod
@@ -675,7 +675,7 @@ class KeySequence:
raise KeyParseError(None, f"Got invalid key: {e}")
_assert_plain_key(key)
- _assert_plain_modifier(cast(Qt.KeyboardModifier, ev.modifiers()))
+ _assert_plain_modifier(ev.modifiers())
key = _remap_unicode(key, ev.text())
modifiers: _ModifierType = ev.modifiers()
@@ -725,7 +725,7 @@ class KeySequence:
modifiers |= Qt.KeyboardModifier.ControlModifier
infos = list(self)
- infos.append(KeyInfo(key, cast(Qt.KeyboardModifier, modifiers)))
+ infos.append(KeyInfo(key, modifiers))
return self.__class__(*infos)
diff --git a/qutebrowser/keyinput/modeman.py b/qutebrowser/keyinput/modeman.py
index 671c2519e..927c93512 100644
--- a/qutebrowser/keyinput/modeman.py
+++ b/qutebrowser/keyinput/modeman.py
@@ -467,7 +467,7 @@ class ModeManager(QObject):
QEvent.Type.ShortcutOverride:
functools.partial(self._handle_keypress, dry_run=True),
}
- handler = handlers[event.type()]
+ handler = handlers[cast(QEvent.Type, event.type())]
return handler(cast(QKeyEvent, event))
@cmdutils.register(instance='mode-manager', scope='window')
diff --git a/qutebrowser/misc/crashdialog.py b/qutebrowser/misc/crashdialog.py
index b3998cf27..1d709c0e4 100644
--- a/qutebrowser/misc/crashdialog.py
+++ b/qutebrowser/misc/crashdialog.py
@@ -633,7 +633,8 @@ class ReportErrorDialog(QDialog):
hbox = QHBoxLayout()
hbox.addStretch()
btn = QPushButton("Close")
- btn.clicked.connect(self.close)
+ # FIXME:mypy PyQt6-stubs issue
+ btn.clicked.connect(self.close) # type: ignore[arg-type]
hbox.addWidget(btn)
vbox.addLayout(hbox)
diff --git a/qutebrowser/misc/earlyinit.py b/qutebrowser/misc/earlyinit.py
index 8dcf0dce0..7011a28e9 100644
--- a/qutebrowser/misc/earlyinit.py
+++ b/qutebrowser/misc/earlyinit.py
@@ -286,12 +286,9 @@ def configure_pyqt():
pyqtRemoveInputHook()
from qutebrowser.qt import sip
- try:
- sip.enableoverflowchecking(True)
- except AttributeError:
+ if machinery.IS_QT5:
# default in PyQt6
- # FIXME:qt6 solve this in qutebrowser/qt/sip.py equivalent?
- pass
+ sip.enableoverflowchecking(True)
def init_log(args):
diff --git a/qutebrowser/misc/httpclient.py b/qutebrowser/misc/httpclient.py
index da205ae50..23943c27c 100644
--- a/qutebrowser/misc/httpclient.py
+++ b/qutebrowser/misc/httpclient.py
@@ -80,7 +80,8 @@ class HTTPClient(QObject):
request = HTTPRequest(url)
request.setHeader(QNetworkRequest.KnownHeaders.ContentTypeHeader,
'application/x-www-form-urlencoded;charset=utf-8')
- reply = self._nam.post(request, encoded_data)
+ # FIXME:mypy PyQt6-stubs issue
+ reply = self._nam.post(request, encoded_data) # type: ignore[call-overload]
self._handle_reply(reply)
def get(self, url):
diff --git a/qutebrowser/misc/nativeeventfilter.py b/qutebrowser/misc/nativeeventfilter.py
index 6213a7223..3bb9d4bbb 100644
--- a/qutebrowser/misc/nativeeventfilter.py
+++ b/qutebrowser/misc/nativeeventfilter.py
@@ -22,7 +22,7 @@
This entire file is a giant WORKAROUND for https://bugreports.qt.io/browse/QTBUG-114334.
"""
-from typing import Tuple, Union
+from typing import Tuple, Union, cast
import enum
import ctypes
import ctypes.util
@@ -113,8 +113,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, 0)
- _FILTER_EVENT_RET = (True, 0)
+ _PASS_EVENT_RET = (False, cast(sip.voidptr, 0))
+ _FILTER_EVENT_RET = (True, cast(sip.voidptr, 0))
def __init__(self) -> None:
super().__init__()
@@ -147,7 +147,7 @@ class NativeEventFilter(QAbstractNativeEventFilter):
def nativeEventFilter(
self, evtype: Union[bytes, QByteArray], message: sip.voidptr
- ) -> Tuple[bool, int]:
+ ) -> Tuple[bool, sip.voidptr]:
"""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/sip.py b/qutebrowser/qt/sip.py
index 7e4bf246d..67431a9bf 100644
--- a/qutebrowser/qt/sip.py
+++ b/qutebrowser/qt/sip.py
@@ -32,6 +32,6 @@ elif machinery.USE_PYQT6:
# While upstream recommends using PyQt5.sip ever since PyQt5 5.11, some
# distributions still package later versions of PyQt5 with a top-level
# "sip" rather than "PyQt5.sip".
- from sip import *
+ from sip import * # type: ignore[import]
else:
raise machinery.UnknownWrapper()
diff --git a/qutebrowser/utils/debug.py b/qutebrowser/utils/debug.py
index 1373404ca..15796c5d2 100644
--- a/qutebrowser/utils/debug.py
+++ b/qutebrowser/utils/debug.py
@@ -100,7 +100,7 @@ def log_signals(obj: QObject) -> QObject:
if machinery.IS_QT6:
- _EnumValueType = enum.Enum
+ _EnumValueType = Union[enum.Enum, int]
else:
_EnumValueType = Union[sip.simplewrapper, int]
@@ -219,9 +219,9 @@ def qflags_key(base: Type[sip.simplewrapper],
bits = []
names = []
mask = 0x01
- value = qtutils.extract_enum_val(value)
- while mask <= value:
- if value & mask:
+ intval = qtutils.extract_enum_val(value)
+ while mask <= intval:
+ if intval & mask:
bits.append(mask)
mask <<= 1
for bit in bits:
diff --git a/qutebrowser/utils/urlutils.py b/qutebrowser/utils/urlutils.py
index 58862925e..866d0a662 100644
--- a/qutebrowser/utils/urlutils.py
+++ b/qutebrowser/utils/urlutils.py
@@ -28,6 +28,7 @@ import urllib.parse
import mimetypes
from typing import Optional, Tuple, Union, Iterable
+from qutebrowser.qt import machinery
from qutebrowser.qt.core import QUrl
from qutebrowser.qt.network import QHostInfo, QHostAddress, QNetworkProxy
@@ -505,9 +506,10 @@ def same_domain(url1: QUrl, url2: QUrl) -> bool:
#
# There are no other callers of same_domain, and url2 will only be ever valid when
# we use a NetworkManager from QtWebKit. However, QtWebKit is Qt 5 only.
+ assert machinery.IS_QT6, machinery.INFO
- suffix1 = url1.topLevelDomain()
- suffix2 = url2.topLevelDomain()
+ suffix1 = url1.topLevelDomain() # type: ignore[attr-defined]
+ suffix2 = url2.topLevelDomain() # type: ignore[attr-defined]
if not suffix1:
return url1.host() == url2.host()
diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py
index 83171ba6a..ebe361390 100644
--- a/qutebrowser/utils/version.py
+++ b/qutebrowser/utils/version.py
@@ -1045,11 +1045,13 @@ def opengl_info() -> Optional[OpenGLInfo]: # pragma: no cover
return None
if vf is None:
- log.init.debug("Getting version functions failed!")
+ log.init.debug( # type: ignore[unreachable]
+ "Getting version functions failed!")
return None
- vendor = vf.glGetString(vf.GL_VENDOR)
- version = vf.glGetString(vf.GL_VERSION)
+ # FIXME:mypy PyQt6-stubs issue?
+ vendor = vf.glGetString(vf.GL_VENDOR) # type: ignore[attr-defined]
+ version = vf.glGetString(vf.GL_VERSION) # type: ignore[attr-defined]
return OpenGLInfo.parse(vendor=vendor, version=version)
finally: