summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2022-05-17 13:19:40 +0200
committerFlorian Bruhin <me@the-compiler.org>2022-06-22 17:41:12 +0200
commite17001ba92b6c992ed2f618726641a1a9f424ec1 (patch)
tree7d8f9ea4eb19cfe086a4bdf088eb67e418daa483
parenta0b5da42462dfa8b8ab830919c35d46d10647134 (diff)
downloadqutebrowser-e17001ba92b6c992ed2f618726641a1a9f424ec1.tar.gz
qutebrowser-e17001ba92b6c992ed2f618726641a1a9f424ec1.zip
lint: Split up debug.qenum_key
-rw-r--r--qutebrowser/utils/debug.py69
1 files changed, 47 insertions, 22 deletions
diff --git a/qutebrowser/utils/debug.py b/qutebrowser/utils/debug.py
index 02ec72d88..ff6c3b9c2 100644
--- a/qutebrowser/utils/debug.py
+++ b/qutebrowser/utils/debug.py
@@ -102,31 +102,15 @@ def log_signals(obj: QObject) -> QObject:
_EnumValueType = Union[sip.simplewrapper, int]
-def qenum_key(base: Type[_EnumValueType],
- value: _EnumValueType,
- klass: Type[_EnumValueType] = None) -> str:
- """Convert a Qt Enum value to its key as a string.
-
- Args:
- base: The object the enum is in, e.g. QFrame.
- value: The value to get.
- klass: The enum class the value belongs to.
- If None, the class will be auto-guessed.
-
- Return:
- The key associated with the value as a string if it could be found.
- The original value as a string if not.
- """
- if klass is None:
- klass = value.__class__
- if klass == int:
- raise TypeError("Can't guess enum class of an int!")
-
- # New-style PyQt6: Try getting value from Python enum
+def _qenum_key_python(
+ value: _EnumValueType,
+ klass: Type[_EnumValueType] = None,
+) -> Optional[str]:
+ """New-style PyQt6: Try getting value from Python enum."""
if isinstance(value, enum.Enum) and value.name:
return value.name
- # PyQt6, but we got an int with klass passed: Try asking Python enum for member
+ # We got an int with klass passed: Try asking Python enum for member
if issubclass(klass, enum.Enum):
try:
name = klass(value).name
@@ -135,6 +119,14 @@ def qenum_key(base: Type[_EnumValueType],
except ValueError:
pass
+ return None
+
+
+def _qenum_key_qt(
+ base: Type[_EnumValueType],
+ value: _EnumValueType,
+ klass: Type[_EnumValueType] = None,
+) -> 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:
@@ -152,6 +144,39 @@ def qenum_key(base: Type[_EnumValueType],
if isinstance(obj, klass) and obj == value:
return name
+ return None
+
+
+def qenum_key(
+ base: Type[_EnumValueType],
+ value: _EnumValueType,
+ klass: Type[_EnumValueType] = None,
+) -> str:
+ """Convert a Qt Enum value to its key as a string.
+
+ Args:
+ base: The object the enum is in, e.g. QFrame.
+ value: The value to get.
+ klass: The enum class the value belongs to.
+ If None, the class will be auto-guessed.
+
+ Return:
+ The key associated with the value as a string if it could be found.
+ The original value as a string if not.
+ """
+ if klass is None:
+ klass = value.__class__
+ if klass == int:
+ raise TypeError("Can't guess enum class of an int!")
+
+ name = _qenum_key_python(value=value, klass=klass)
+ if name is not None:
+ return name
+
+ name = _qenum_key_qt(base=base, value=value, klass=klass)
+ if name is not None:
+ return name
+
# Last resort fallback: Hex value
return '0x{:04x}'.format(int(value)) # type: ignore[arg-type]