summaryrefslogtreecommitdiff
path: root/qutebrowser
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2023-06-14 18:57:23 +0200
committerFlorian Bruhin <me@the-compiler.org>2023-06-14 19:03:34 +0200
commit69c21a57512ab4913319341f5f0139aac88515db (patch)
treec343fb0d5e6e780d4cf272be4fb1d9b09d890c34 /qutebrowser
parent54aef75a2960f0bffd335dddcfd68b673b12075a (diff)
downloadqutebrowser-69c21a57512ab4913319341f5f0139aac88515db.tar.gz
qutebrowser-69c21a57512ab4913319341f5f0139aac88515db.zip
qt: Use outcomes dict instead of attributes for SelectionInfo
Diffstat (limited to 'qutebrowser')
-rw-r--r--qutebrowser/qt/machinery.py28
1 files changed, 13 insertions, 15 deletions
diff --git a/qutebrowser/qt/machinery.py b/qutebrowser/qt/machinery.py
index 27c54f081..e0a5e4cdd 100644
--- a/qutebrowser/qt/machinery.py
+++ b/qutebrowser/qt/machinery.py
@@ -16,7 +16,7 @@ import html
import argparse
import importlib
import dataclasses
-from typing import Optional
+from typing import Optional, Dict
# Packagers: Patch the line below to change the default wrapper for Qt 6 packages, e.g.:
# sed -i 's/_DEFAULT_WRAPPER = "PyQt5"/_DEFAULT_WRAPPER = "PyQt6"/' qutebrowser/qt/machinery.py
@@ -86,33 +86,31 @@ class SelectionReason(enum.Enum):
class SelectionInfo:
"""Information about outcomes of importing Qt wrappers."""
- pyqt5: Optional[str] = None
- pyqt6: Optional[str] = None
wrapper: Optional[str] = None
+ outcomes: Dict[str, str] = dataclasses.field(default_factory=dict)
reason: SelectionReason = SelectionReason.unknown
def set_module_error(self, name: str, error: Exception) -> None:
"""Set the outcome for a module import."""
- setattr(self, name.lower(), f"{type(error).__name__}: {error}")
+ self.outcomes[name] = f"{type(error).__name__}: {error}"
def use_wrapper(self, wrapper: str) -> None:
"""Set the wrapper to use."""
self.wrapper = wrapper
- setattr(self, wrapper.lower(), "success")
+ self.outcomes[wrapper] = "success"
def __str__(self) -> str:
- if self.pyqt5 is None and self.pyqt6 is None:
- # No autoselect -> shorter output
+ if not self.outcomes:
+ # No modules were tried to be imported (no autoselection)
+ # Thus, we can have a shorter output instead of adding noise.
return f"Qt wrapper: {self.wrapper} (via {self.reason.value})"
- pyqt6 = self.pyqt6 or "not imported"
- pyqt5 = self.pyqt5 or "not imported"
- lines = [
- "Qt wrapper info:",
- f" PyQt6: {pyqt6}",
- f" PyQt5: {pyqt5}",
- f" -> selected: {self.wrapper} (via {self.reason.value})"
- ]
+ lines = ["Qt wrapper info:"]
+ for wrapper in WRAPPERS:
+ outcome = self.outcomes.get(wrapper, "not imported")
+ lines.append(f" {wrapper}: {outcome}")
+
+ lines.append(f" -> selected: {self.wrapper} (via {self.reason.value})")
return "\n".join(lines)
def to_html(self) -> str: