summaryrefslogtreecommitdiff
path: root/qutebrowser/utils/qtlog.py
diff options
context:
space:
mode:
authorPhilipp Albrecht <palbrecht@mailbox.org>2023-07-13 13:13:38 +0200
committerPhilipp Albrecht <palbrecht@mailbox.org>2023-07-20 15:09:48 +0200
commitf91ace96223cac8161c16dd061907e138fe85111 (patch)
tree8cc99a09cafea3a2c1650aef4b6aa16d8ef19260 /qutebrowser/utils/qtlog.py
parentebfe9b7aa0c4ba9d451f993e08955004aaec4345 (diff)
downloadqutebrowser-f91ace96223cac8161c16dd061907e138fe85111.tar.gz
qutebrowser-f91ace96223cac8161c16dd061907e138fe85111.zip
Move hide_qt_warning() to qtlog
Just to keep related things together.
Diffstat (limited to 'qutebrowser/utils/qtlog.py')
-rw-r--r--qutebrowser/utils/qtlog.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/qutebrowser/utils/qtlog.py b/qutebrowser/utils/qtlog.py
index e0b310d93..2e3c21668 100644
--- a/qutebrowser/utils/qtlog.py
+++ b/qutebrowser/utils/qtlog.py
@@ -211,3 +211,33 @@ def qt_message_handler(msg_type: qtcore.QtMsgType,
msg=msg, args=(), exc_info=None, func=func,
sinfo=stack)
qt.handle(record)
+
+
+class QtWarningFilter(logging.Filter):
+
+ """Filter to filter Qt warnings.
+
+ Attributes:
+ _pattern: The start of the message.
+ """
+
+ def __init__(self, pattern: str) -> None:
+ super().__init__()
+ self._pattern = pattern
+
+ def filter(self, record: logging.LogRecord) -> bool:
+ """Determine if the specified record is to be logged."""
+ do_log = not record.msg.strip().startswith(self._pattern)
+ return do_log
+
+
+@contextlib.contextmanager
+def hide_qt_warning(pattern: str, logger: str = 'qt') -> Iterator[None]:
+ """Hide Qt warnings matching the given regex."""
+ log_filter = QtWarningFilter(pattern)
+ logger_obj = logging.getLogger(logger)
+ logger_obj.addFilter(log_filter)
+ try:
+ yield
+ finally:
+ logger_obj.removeFilter(log_filter)