diff options
Diffstat (limited to 'qutebrowser/utils/qtlog.py')
-rw-r--r-- | qutebrowser/utils/qtlog.py | 30 |
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) |