From 09df332997689888d932fcccfd15d147b4fe7d44 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Thu, 29 Jun 2023 14:41:29 +0200 Subject: qt6 mypy: Fix typing around qenum_key 36 -> 30 errors --- qutebrowser/browser/webengine/notification.py | 6 +++--- qutebrowser/keyinput/eventfilter.py | 2 +- qutebrowser/misc/miscwidgets.py | 4 ++-- qutebrowser/utils/debug.py | 15 +++++++++------ 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/qutebrowser/browser/webengine/notification.py b/qutebrowser/browser/webengine/notification.py index 9afce02f1..f5c9fb92e 100644 --- a/qutebrowser/browser/webengine/notification.py +++ b/qutebrowser/browser/webengine/notification.py @@ -635,7 +635,7 @@ class HerbeNotificationAdapter(AbstractNotificationAdapter): def _on_error(self, error: QProcess.ProcessError) -> None: if error == QProcess.ProcessError.Crashed: return - name = debug.qenum_key(QProcess.ProcessError, error) + name = debug.qenum_key(QProcess, error) self.error.emit(f'herbe process error: {name}') @pyqtSlot(int) @@ -917,8 +917,8 @@ class DBusNotificationAdapter(AbstractNotificationAdapter): typ = msg.type() if typ != expected_type: - type_str = debug.qenum_key(QDBusMessage.MessageType, typ) - expected_type_str = debug.qenum_key(QDBusMessage.MessageType, expected_type) + type_str = debug.qenum_key(QDBusMessage, typ) + expected_type_str = debug.qenum_key(QDBusMessage, expected_type) raise Error( f"Got a message of type {type_str} but expected {expected_type_str}" f"(args: {msg.arguments()})") diff --git a/qutebrowser/keyinput/eventfilter.py b/qutebrowser/keyinput/eventfilter.py index 42f104cfe..a808c4dd8 100644 --- a/qutebrowser/keyinput/eventfilter.py +++ b/qutebrowser/keyinput/eventfilter.py @@ -93,7 +93,7 @@ class EventFilter(QObject): except AttributeError: # might not be fully initialized yet source = type(obj).__name__ - evtype = debug.qenum_key(QEvent.Type, event.type()) + evtype = debug.qenum_key(QEvent, cast(QEvent.Type, event.type())) log.misc.debug(f"{source} got event: {evtype}") if not isinstance(obj, QWindow): diff --git a/qutebrowser/misc/miscwidgets.py b/qutebrowser/misc/miscwidgets.py index a50be44ec..bbd0e68c2 100644 --- a/qutebrowser/misc/miscwidgets.py +++ b/qutebrowser/misc/miscwidgets.py @@ -464,8 +464,8 @@ class KeyTesterWidget(QWidget): lines = [ str(keyutils.KeyInfo.from_event(e)), '', - f"key: {debug.qenum_key(Qt.Key, e.key(), klass=Qt.Key)}", - f"modifiers: {debug.qflags_key(Qt.KeyboardModifier, e.modifiers())}", + f"key: {debug.qenum_key(Qt, e.key(), klass=Qt.Key)}", + f"modifiers: {debug.qflags_key(Qt, e.modifiers())}", 'text: {!r}'.format(e.text()), ] self._label.setText('\n'.join(lines)) diff --git a/qutebrowser/utils/debug.py b/qutebrowser/utils/debug.py index 47cbebb35..1373404ca 100644 --- a/qutebrowser/utils/debug.py +++ b/qutebrowser/utils/debug.py @@ -33,7 +33,7 @@ from qutebrowser.qt.core import Qt, QEvent, QMetaMethod, QObject, pyqtBoundSigna from qutebrowser.utils import log, utils, qtutils, objreg from qutebrowser.misc import objects -from qutebrowser.qt import sip +from qutebrowser.qt import sip, machinery def log_events(klass: Type[QObject]) -> Type[QObject]: @@ -99,7 +99,10 @@ def log_signals(obj: QObject) -> QObject: return obj -_EnumValueType = Union[sip.simplewrapper, int] +if machinery.IS_QT6: + _EnumValueType = enum.Enum +else: + _EnumValueType = Union[sip.simplewrapper, int] def _qenum_key_python( @@ -124,14 +127,14 @@ def _qenum_key_python( def _qenum_key_qt( - base: Type[_EnumValueType], + base: Type[sip.simplewrapper], value: _EnumValueType, klass: Type[_EnumValueType], ) -> Optional[str]: # On PyQt5, or PyQt6 with int passed: Try to ask Qt's introspection. # However, not every Qt enum value has a staticMetaObject try: - meta_obj = base.staticMetaObject # type: ignore[union-attr] + meta_obj = base.staticMetaObject # type: ignore[attr-defined] idx = meta_obj.indexOfEnumerator(klass.__name__) meta_enum = meta_obj.enumerator(idx) key = meta_enum.valueToKey(int(value)) # type: ignore[arg-type] @@ -149,7 +152,7 @@ def _qenum_key_qt( def qenum_key( - base: Type[_EnumValueType], + base: Type[sip.simplewrapper], value: _EnumValueType, klass: Type[_EnumValueType] = None, ) -> str: @@ -183,7 +186,7 @@ def qenum_key( return '0x{:04x}'.format(int(value)) # type: ignore[arg-type] -def qflags_key(base: Type[_EnumValueType], +def qflags_key(base: Type[sip.simplewrapper], value: _EnumValueType, klass: Type[_EnumValueType] = None) -> str: """Convert a Qt QFlags value to its keys as string. -- cgit v1.2.3-54-g00ecf