Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package qutebrowser for openSUSE:Factory checked in at 2021-08-03 22:48:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/qutebrowser (Old) and /work/SRC/openSUSE:Factory/.qutebrowser.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qutebrowser" Tue Aug 3 22:48:39 2021 rev:54 rq:909841 version:2.3.1 Changes: -------- --- /work/SRC/openSUSE:Factory/qutebrowser/qutebrowser.changes 2021-06-29 22:43:50.306919467 +0200 +++ /work/SRC/openSUSE:Factory/.qutebrowser.new.1899/qutebrowser.changes 2021-08-03 22:48:54.464484789 +0200 @@ -1,0 +2,17 @@ +Tue Aug 3 00:07:38 UTC 2021 - Mia Herkt <[email protected]> + +- Update to version 2.3.1 +Fixed + * Updated the workaround for Google Account log in claiming that + this browser isn't secure. For an equivalent workaround on + older versions, run: :set -u https://accounts.google.com/* + content.headers.user_agent "Mozilla/5.0 ({os_info}; rv:90.0) + Gecko/20100101 Firefox/90.0" + * Corrupt cache file exceptions with adblock 0.5.0+ are now + handled properly. + * Crash when entering unicode surrogates into the filename + prompt. + * UnboundLocalError in qute-keepass when the database couldn't be + opened. + +------------------------------------------------------------------- Old: ---- qutebrowser-2.3.0.tar.gz qutebrowser-2.3.0.tar.gz.asc New: ---- qutebrowser-2.3.1.tar.gz qutebrowser-2.3.1.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ qutebrowser.spec ++++++ --- /var/tmp/diff_new_pack.K0aBXE/_old 2021-08-03 22:48:55.372483694 +0200 +++ /var/tmp/diff_new_pack.K0aBXE/_new 2021-08-03 22:48:55.372483694 +0200 @@ -17,7 +17,7 @@ Name: qutebrowser -Version: 2.3.0 +Version: 2.3.1 Release: 0 Summary: Keyboard-driven vim-like browser based on Qt5 License: GPL-3.0-or-later ++++++ qutebrowser-2.3.0.tar.gz -> qutebrowser-2.3.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/PKG-INFO new/qutebrowser-2.3.1/PKG-INFO --- old/qutebrowser-2.3.0/PKG-INFO 2021-06-28 17:32:40.220855200 +0200 +++ new/qutebrowser-2.3.1/PKG-INFO 2021-07-28 14:44:18.213632000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: qutebrowser -Version: 2.3.0 +Version: 2.3.1 Summary: A keyboard-driven, vim-like browser based on PyQt5. Home-page: https://www.qutebrowser.org/ Author: Florian Bruhin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/doc/changelog.asciidoc new/qutebrowser-2.3.1/doc/changelog.asciidoc --- old/qutebrowser-2.3.0/doc/changelog.asciidoc 2021-06-28 17:29:52.000000000 +0200 +++ new/qutebrowser-2.3.1/doc/changelog.asciidoc 2021-07-28 14:35:12.000000000 +0200 @@ -15,6 +15,20 @@ // `Fixed` for any bug fixes. // `Security` to invite users to upgrade in case of vulnerabilities. +[[v2.3.1]] +v2.3.1 (2021-07-28) +------------------- + +Fixed +~~~~~ + +- Updated the workaround for Google Account log in claiming that this browser + isn't secure. For an equivalent workaround on older versions, run: + `:set -u https://accounts.google.com/* content.headers.user_agent "Mozilla/5.0 ({os_info}; rv:90.0) Gecko/20100101 Firefox/90.0"` +- Corrupt cache file exceptions with `adblock` 0.5.0+ are now handled properly. +- Crash when entering unicode surrogates into the filename prompt. +- `UnboundLocalError` in `qute-keepass` when the database couldn't be opened. + [[v2.3.0]] v2.3.0 (2021-06-28) ------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/doc/qutebrowser.1 new/qutebrowser-2.3.1/doc/qutebrowser.1 --- old/qutebrowser-2.3.0/doc/qutebrowser.1 2021-06-28 17:32:38.000000000 +0200 +++ new/qutebrowser-2.3.1/doc/qutebrowser.1 2021-07-28 14:44:16.000000000 +0200 @@ -2,12 +2,12 @@ .\" Title: qutebrowser .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 06/28/2021 +.\" Date: 07/28/2021 .\" Manual: qutebrowser manpage .\" Source: qutebrowser .\" Language: English .\" -.TH "QUTEBROWSER" "1" "06/28/2021" "qutebrowser" "qutebrowser manpage" +.TH "QUTEBROWSER" "1" "07/28/2021" "qutebrowser" "qutebrowser manpage" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/misc/org.qutebrowser.qutebrowser.appdata.xml new/qutebrowser-2.3.1/misc/org.qutebrowser.qutebrowser.appdata.xml --- old/qutebrowser-2.3.0/misc/org.qutebrowser.qutebrowser.appdata.xml 2021-06-28 17:29:52.000000000 +0200 +++ new/qutebrowser-2.3.1/misc/org.qutebrowser.qutebrowser.appdata.xml 2021-07-28 14:34:24.000000000 +0200 @@ -44,6 +44,7 @@ </content_rating> <releases> <!-- Add new releases here --> +<release version="2.3.1" date="2021-07-28"/> <release version="2.3.0" date="2021-06-28"/> <release version="2.2.3" date="2021-06-01"/> <release version="2.2.2" date="2021-05-20"/> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/misc/userscripts/qute-keepass new/qutebrowser-2.3.1/misc/userscripts/qute-keepass --- old/qutebrowser-2.3.0/misc/userscripts/qute-keepass 2021-06-15 21:52:45.000000000 +0200 +++ new/qutebrowser-2.3.1/misc/userscripts/qute-keepass 2021-07-28 12:45:00.000000000 +0200 @@ -178,6 +178,7 @@ kp = pykeepass.PyKeePass(file_path, password=pw, keyfile=kf) except Exception as e: stderr("There was an error opening the DB: {}".format(str(e))) + sys.exit(ExitCodes.DB_OPEN_FAIL) return kp.find_entries(url="{}{}{}".format(".*", host, ".*"), regex=True) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/__init__.py new/qutebrowser-2.3.1/qutebrowser/__init__.py --- old/qutebrowser-2.3.0/qutebrowser/__init__.py 2021-06-28 17:29:52.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/__init__.py 2021-07-28 14:34:24.000000000 +0200 @@ -26,7 +26,7 @@ __license__ = "GPL" __maintainer__ = __author__ __email__ = "[email protected]" -__version__ = "2.3.0" +__version__ = "2.3.1" __version_info__ = tuple(int(part) for part in __version__.split('.')) __description__ = "A keyboard-driven, vim-like browser based on PyQt5." diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/browser/browsertab.py new/qutebrowser-2.3.1/qutebrowser/browser/browsertab.py --- old/qutebrowser-2.3.0/qutebrowser/browser/browsertab.py 2021-06-24 19:38:22.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/browser/browsertab.py 2021-07-28 14:08:16.000000000 +0200 @@ -1004,7 +1004,7 @@ """Setter for load_status.""" if not isinstance(val, usertypes.LoadStatus): raise TypeError("Type {} is no LoadStatus member!".format(val)) - log.webview.debug(f"load status for {self!r}: {utils.pyenum_str(val)}") + log.webview.debug("load status for {}: {}".format(repr(self), val)) self._load_status = val self.load_status_changed.emit(val) @@ -1064,7 +1064,7 @@ url = utils.elide(navigation.url.toDisplayString(), 100) log.webview.debug("navigation request: url {}, type {}, is_main_frame " "{}".format(url, - utils.pyenum_str(navigation.navigation_type), + navigation.navigation_type, navigation.is_main_frame)) if navigation.is_main_frame: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/browser/webengine/webenginesettings.py new/qutebrowser-2.3.1/qutebrowser/browser/webengine/webenginesettings.py --- old/qutebrowser-2.3.0/qutebrowser/browser/webengine/webenginesettings.py 2021-06-15 21:52:45.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/browser/webengine/webenginesettings.py 2021-07-28 12:47:44.000000000 +0200 @@ -431,11 +431,7 @@ "AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/99 " "Safari/537.36") - edge_ua = ("Mozilla/5.0 ({os_info}) " - "AppleWebKit/{webkit_version} (KHTML, like Gecko) " - "{upstream_browser_key}/{upstream_browser_version} " - "Safari/{webkit_version} " - "Edg/{upstream_browser_version}") + firefox_ua = "Mozilla/5.0 ({os_info}; rv:90.0) Gecko/20100101 Firefox/90.0" user_agents = [ # Needed to avoid a ""WhatsApp works with Google Chrome 36+" error @@ -447,7 +443,7 @@ # Needed to avoid a "you're using a browser [...] that doesn't allow us # to keep your account secure" error. # https://github.com/qutebrowser/qutebrowser/issues/5182 - ("ua-google", 'https://accounts.google.com/*', edge_ua), + ("ua-google", 'https://accounts.google.com/*', firefox_ua), # Needed because Slack adds an error which prevents using it relatively # aggressively, despite things actually working fine. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/browser/webengine/webenginetab.py new/qutebrowser-2.3.1/qutebrowser/browser/webengine/webenginetab.py --- old/qutebrowser-2.3.0/qutebrowser/browser/webengine/webenginetab.py 2021-06-24 19:38:22.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/browser/webengine/webenginetab.py 2021-07-28 14:08:16.000000000 +0200 @@ -474,7 +474,7 @@ # `:selection-toggle` is executed and before this callback function # is asynchronously called. log.misc.debug("Ignoring caret selection callback in {}".format( - utils.pyenum_str(self._mode_manager.mode))) + self._mode_manager.mode)) return if state_str is None: message.error("Error toggling caret selection") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/completion/models/filepathcategory.py new/qutebrowser-2.3.1/qutebrowser/completion/models/filepathcategory.py --- old/qutebrowser-2.3.0/qutebrowser/completion/models/filepathcategory.py 2021-06-15 21:52:45.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/completion/models/filepathcategory.py 2021-07-28 13:24:18.000000000 +0200 @@ -91,7 +91,13 @@ for path in self._glob(url_path) ) else: - paths = self._glob(os.path.expanduser(val)) + try: + expanded = os.path.expanduser(val) + except ValueError: + # os.path.expanduser('~\ud800') can raise UnicodeEncodeError + # via pwd.getpwnam. '~\x00' can raise ValueError. + expanded = val + paths = self._glob(expanded) self._paths = sorted(self._contract_user(val, path) for path in paths) def data(self, index: QModelIndex, role: int = Qt.DisplayRole) -> Optional[str]: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/components/braveadblock.py new/qutebrowser-2.3.1/qutebrowser/components/braveadblock.py --- old/qutebrowser-2.3.0/qutebrowser/components/braveadblock.py 2021-06-15 21:52:45.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/components/braveadblock.py 2021-07-28 14:35:12.000000000 +0200 @@ -23,7 +23,8 @@ import logging import pathlib import functools -from typing import Optional, IO +import contextlib +from typing import Optional, IO, Iterator from PyQt5.QtCore import QUrl @@ -116,6 +117,37 @@ return _RESOURCE_TYPE_STRINGS.get(resource_type, "other") +class DeserializationError(Exception): + + """Custom exception for adblock.DeserializationErrors. + + See _map_exception below for details. + """ + + [email protected] +def _map_exceptions() -> Iterator[None]: + """Handle exception API differences in adblock 0.5.0. + + adblock < 0.5.0 will raise a ValueError with a string describing the + exception class for all exceptions. With adblock 0.5.0+, it raises proper + exception classes. + + This context manager unifies the two (only for DeserializationError so far). + """ + adblock_deserialization_error = getattr( + adblock, "DeserializationError", ValueError) + + try: + yield + except adblock_deserialization_error as e: + if isinstance(e, ValueError) and str(e) != "DeserializationError": + # All Rust exceptions get turned into a ValueError by + # python-adblock + raise + raise DeserializationError(str(e)) + + class BraveAdBlocker: """Manage blocked hosts based on Brave's adblocker. @@ -212,12 +244,9 @@ if cache_exists: logger.debug("Loading cached adblock data: %s", self._cache_path) try: - self._engine.deserialize_from_file(str(self._cache_path)) - except ValueError as e: - if str(e) != "DeserializationError": - # All Rust exceptions get turned into a ValueError by - # python-adblock - raise + with _map_exceptions(): + self._engine.deserialize_from_file(str(self._cache_path)) + except DeserializationError: message.error("Reading adblock filter data failed (corrupted data?). " "Please run :adblock-update.") else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/git-commit-id new/qutebrowser-2.3.1/qutebrowser/git-commit-id --- old/qutebrowser-2.3.0/qutebrowser/git-commit-id 2021-06-28 17:32:39.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/git-commit-id 2021-07-28 14:44:17.000000000 +0200 @@ -1 +1 @@ -a55355eaa on HEAD (2021-06-28 17:29:52 +0200) \ No newline at end of file +55bfe82b0 on HEAD (2021-07-28 14:33:55 +0200) \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/html/doc/changelog.html new/qutebrowser-2.3.1/qutebrowser/html/doc/changelog.html --- old/qutebrowser-2.3.0/qutebrowser/html/doc/changelog.html 2021-06-28 17:32:23.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/html/doc/changelog.html 2021-07-28 14:44:02.000000000 +0200 @@ -807,6 +807,38 @@ </div> </div> <div class="sect1"> +<h2 id="v2.3.1">v2.3.1 (2021-07-28)</h2> +<div class="sectionbody"> +<div class="sect2"> +<h3 id="_fixed">Fixed</h3> +<div class="ulist"><ul> +<li> +<p> +Updated the workaround for Google Account log in claiming that this browser + isn’t secure. For an equivalent workaround on older versions, run: + <code>:set -u https://accounts.google.com/* content.headers.user_agent "Mozilla/5.0 ({os_info}; rv:90.0) Gecko/20100101 Firefox/90.0"</code> +</p> +</li> +<li> +<p> +Corrupt cache file exceptions with <code>adblock</code> 0.5.0+ are now handled properly. +</p> +</li> +<li> +<p> +Crash when entering unicode surrogates into the filename prompt. +</p> +</li> +<li> +<p> +<code>UnboundLocalError</code> in <code>qute-keepass</code> when the database couldn’t be opened. +</p> +</li> +</ul></div> +</div> +</div> +</div> +<div class="sect1"> <h2 id="v2.3.0">v2.3.0 (2021-06-28)</h2> <div class="sectionbody"> <div class="sect2"> @@ -856,7 +888,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed">Fixed</h3> +<h3 id="_fixed_2">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -884,7 +916,7 @@ <h2 id="v2.2.3">v2.2.3 (2021-06-01)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_2">Fixed</h3> +<h3 id="_fixed_3">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -969,7 +1001,7 @@ <h2 id="v2.2.2">v2.2.2 (2021-05-20)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_3">Fixed</h3> +<h3 id="_fixed_4">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -1027,7 +1059,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_4">Fixed</h3> +<h3 id="_fixed_5">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -1355,7 +1387,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_5">Fixed</h3> +<h3 id="_fixed_6">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -1436,7 +1468,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_6">Fixed</h3> +<h3 id="_fixed_7">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -1723,7 +1755,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_7">Fixed</h3> +<h3 id="_fixed_8">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -1831,7 +1863,7 @@ <h2 id="v2.0.2">v2.0.2 (2021-02-04)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_8">Fixed</h3> +<h3 id="_fixed_9">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -1938,7 +1970,7 @@ <h2 id="v2.0.1">v2.0.1 (2021-01-28)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_9">Fixed</h3> +<h3 id="_fixed_10">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -2619,7 +2651,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_10">Fixed</h3> +<h3 id="_fixed_11">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -2785,7 +2817,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_11">Fixed</h3> +<h3 id="_fixed_12">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -3207,7 +3239,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_12">Fixed</h3> +<h3 id="_fixed_13">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -3351,7 +3383,7 @@ <h2 id="v1.13.1">v1.13.1 (2020-07-17)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_13">Fixed</h3> +<h3 id="_fixed_14">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -3654,7 +3686,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_14">Fixed</h3> +<h3 id="_fixed_15">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -3842,7 +3874,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_15">Fixed</h3> +<h3 id="_fixed_16">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -4080,7 +4112,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_16">Fixed</h3> +<h3 id="_fixed_17">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -4131,7 +4163,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_17">Fixed</h3> +<h3 id="_fixed_18">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -4152,7 +4184,7 @@ <h2 id="v1.10.1">v1.10.1 (2020-02-15)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_18">Fixed</h3> +<h3 id="_fixed_19">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -4323,7 +4355,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_19">Fixed</h3> +<h3 id="_fixed_20">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -4564,7 +4596,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_20">Fixed</h3> +<h3 id="_fixed_21">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -4710,7 +4742,7 @@ <h2 id="v1.8.3">v1.8.3 (2019-12-05)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_21">Fixed</h3> +<h3 id="_fixed_22">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -4738,7 +4770,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_22">Fixed</h3> +<h3 id="_fixed_23">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -4973,7 +5005,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_23">Fixed</h3> +<h3 id="_fixed_24">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -5353,7 +5385,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_24">Fixed</h3> +<h3 id="_fixed_25">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -5421,7 +5453,7 @@ <h2 id="v1.6.3">v1.6.3 (2019-06-18)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_25">Fixed</h3> +<h3 id="_fixed_26">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -5464,7 +5496,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_26">Fixed</h3> +<h3 id="_fixed_27">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -5516,7 +5548,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_27">Fixed</h3> +<h3 id="_fixed_28">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -5765,7 +5797,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_28">Fixed</h3> +<h3 id="_fixed_29">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -5918,7 +5950,7 @@ <h2 id="v1.5.1">v1.5.1 (2018-10-10)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_29">Fixed</h3> +<h3 id="_fixed_30">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -6193,7 +6225,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_30">Fixed</h3> +<h3 id="_fixed_31">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -6282,7 +6314,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_31">Fixed</h3> +<h3 id="_fixed_32">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -6367,7 +6399,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_32">Fixed</h3> +<h3 id="_fixed_33">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -6700,7 +6732,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_33">Fixed</h3> +<h3 id="_fixed_34">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -6771,7 +6803,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_34">Fixed</h3> +<h3 id="_fixed_35">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -6798,7 +6830,7 @@ <h2 id="v1.3.2">v1.3.2 (2018-06-10)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_35">Fixed</h3> +<h3 id="_fixed_36">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -6832,7 +6864,7 @@ <h2 id="v1.3.1">v1.3.1 (2018-05-29)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_36">Fixed</h3> +<h3 id="_fixed_37">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -6969,7 +7001,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_37">Fixed</h3> +<h3 id="_fixed_38">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -7124,7 +7156,7 @@ <h2 id="v1.2.1">v1.2.1 (2018-03-14)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_38">Fixed</h3> +<h3 id="_fixed_39">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -7481,7 +7513,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_39">Fixed</h3> +<h3 id="_fixed_40">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -7665,7 +7697,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_40">Fixed</h3> +<h3 id="_fixed_41">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -7685,7 +7717,7 @@ <h2 id="v1.1.1">v1.1.1 (2018-01-20)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_41">Fixed</h3> +<h3 id="_fixed_42">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -8042,7 +8074,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_42">Fixed</h3> +<h3 id="_fixed_43">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -8185,7 +8217,7 @@ <h2 id="v1.0.4">v1.0.4 (2017-11-28)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_43">Fixed</h3> +<h3 id="_fixed_44">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -8248,7 +8280,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_44">Fixed</h3> +<h3 id="_fixed_45">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -8279,7 +8311,7 @@ <h2 id="v1.0.2">v1.0.2 (2017-10-17)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_45">Fixed</h3> +<h3 id="_fixed_46">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -8329,7 +8361,7 @@ <h2 id="v1.0.1">v1.0.1 (2017-10-13)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_46">Fixed</h3> +<h3 id="_fixed_47">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -8929,7 +8961,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_47">Fixed</h3> +<h3 id="_fixed_48">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -9100,7 +9132,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_48">Fixed</h3> +<h3 id="_fixed_49">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -9345,7 +9377,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_49">Fixed</h3> +<h3 id="_fixed_50">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -9476,7 +9508,7 @@ <h2 id="v0.9.1">v0.9.1 (2017-01-13)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_50">Fixed</h3> +<h3 id="_fixed_51">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -10023,7 +10055,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_51">Fixed</h3> +<h3 id="_fixed_52">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -10075,7 +10107,7 @@ <h2 id="v0.8.3">v0.8.3 (2016-11-05)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_52">Fixed</h3> +<h3 id="_fixed_53">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -10146,7 +10178,7 @@ <h2 id="v0.8.2">v0.8.2 (2016-08-02)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_53">Fixed</h3> +<h3 id="_fixed_54">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -10220,7 +10252,7 @@ <h2 id="v0.8.1">v0.8.1 (2016-07-27)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_54">Fixed</h3> +<h3 id="_fixed_55">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -10337,7 +10369,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_55">Fixed</h3> +<h3 id="_fixed_56">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -10589,7 +10621,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_56">Fixed</h3> +<h3 id="_fixed_57">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -10697,7 +10729,7 @@ <h2 id="v0.6.2">v0.6.2 (2016-04-30)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_57">Fixed</h3> +<h3 id="_fixed_58">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -10734,7 +10766,7 @@ <h2 id="v0.6.1">v0.6.1 (2016-04-10)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_58">Fixed</h3> +<h3 id="_fixed_59">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -10874,7 +10906,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_59">Fixed</h3> +<h3 id="_fixed_60">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -10982,7 +11014,7 @@ <h2 id="v0.5.1">v0.5.1 (2016-01-18)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_60">Fixed</h3> +<h3 id="_fixed_61">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -11303,7 +11335,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_61">Fixed</h3> +<h3 id="_fixed_62">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -11396,7 +11428,7 @@ <h2 id="v0.4.1">v0.4.1 (2015-09-30)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_62">Fixed</h3> +<h3 id="_fixed_63">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -11598,7 +11630,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_63">Fixed</h3> +<h3 id="_fixed_64">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -11927,7 +11959,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_64">Fixed</h3> +<h3 id="_fixed_65">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -12021,7 +12053,7 @@ <h2 id="v0.2.1">v0.2.1 (2015-04-19)</h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_fixed_65">Fixed</h3> +<h3 id="_fixed_66">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -12603,7 +12635,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_66">Fixed</h3> +<h3 id="_fixed_67">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -12763,7 +12795,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_67">Fixed</h3> +<h3 id="_fixed_68">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -12873,7 +12905,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_68">Fixed</h3> +<h3 id="_fixed_69">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -12988,7 +13020,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_69">Fixed</h3> +<h3 id="_fixed_70">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -13168,7 +13200,7 @@ </ul></div> </div> <div class="sect2"> -<h3 id="_fixed_70">Fixed</h3> +<h3 id="_fixed_71">Fixed</h3> <div class="ulist"><ul> <li> <p> @@ -13290,7 +13322,7 @@ <div id="footer"> <div id="footer-text"> Last updated - 2021-06-28 17:32:21 CEST + 2021-07-28 14:44:00 CEST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/html/doc/commands.html new/qutebrowser-2.3.1/qutebrowser/html/doc/commands.html --- old/qutebrowser-2.3.0/qutebrowser/html/doc/commands.html 2021-06-28 17:32:28.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/html/doc/commands.html 2021-07-28 14:44:08.000000000 +0200 @@ -5230,7 +5230,7 @@ <div id="footer"> <div id="footer-text"> Last updated - 2021-06-28 17:32:27 CEST + 2021-07-28 14:44:07 CEST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/html/doc/configuring.html new/qutebrowser-2.3.1/qutebrowser/html/doc/configuring.html --- old/qutebrowser-2.3.0/qutebrowser/html/doc/configuring.html 2021-06-28 17:32:27.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/html/doc/configuring.html 2021-07-28 14:44:06.000000000 +0200 @@ -1281,7 +1281,7 @@ <div id="footer"> <div id="footer-text"> Last updated - 2021-06-28 17:32:25 CEST + 2021-07-28 14:44:04 CEST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/html/doc/contributing.html new/qutebrowser-2.3.1/qutebrowser/html/doc/contributing.html --- old/qutebrowser-2.3.0/qutebrowser/html/doc/contributing.html 2021-06-28 17:32:24.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/html/doc/contributing.html 2021-07-28 14:44:04.000000000 +0200 @@ -2265,7 +2265,7 @@ <div id="footer"> <div id="footer-text"> Last updated - 2021-06-28 17:32:23 CEST + 2021-07-28 14:44:02 CEST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/html/doc/faq.html new/qutebrowser-2.3.1/qutebrowser/html/doc/faq.html --- old/qutebrowser-2.3.0/qutebrowser/html/doc/faq.html 2021-06-28 17:32:21.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/html/doc/faq.html 2021-07-28 14:44:00.000000000 +0200 @@ -1612,7 +1612,7 @@ <div id="footer"> <div id="footer-text"> Last updated - 2021-06-28 17:32:20 CEST + 2021-07-28 14:43:59 CEST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/html/doc/index.html new/qutebrowser-2.3.1/qutebrowser/html/doc/index.html --- old/qutebrowser-2.3.0/qutebrowser/html/doc/index.html 2021-06-28 17:32:27.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/html/doc/index.html 2021-07-28 14:44:07.000000000 +0200 @@ -953,7 +953,7 @@ <div id="footer"> <div id="footer-text"> Last updated - 2021-06-28 17:32:27 CEST + 2021-07-28 14:44:06 CEST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/html/doc/quickstart.html new/qutebrowser-2.3.1/qutebrowser/html/doc/quickstart.html --- old/qutebrowser-2.3.0/qutebrowser/html/doc/quickstart.html 2021-06-28 17:32:24.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/html/doc/quickstart.html 2021-07-28 14:44:04.000000000 +0200 @@ -982,7 +982,7 @@ <div id="footer"> <div id="footer-text"> Last updated - 2021-06-28 17:32:24 CEST + 2021-07-28 14:44:04 CEST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/html/doc/settings.html new/qutebrowser-2.3.1/qutebrowser/html/doc/settings.html --- old/qutebrowser-2.3.0/qutebrowser/html/doc/settings.html 2021-06-28 17:32:32.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/html/doc/settings.html 2021-07-28 14:44:11.000000000 +0200 @@ -8965,7 +8965,7 @@ <div id="footer"> <div id="footer-text"> Last updated - 2021-06-28 17:32:28 CEST + 2021-07-28 14:44:08 CEST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/html/doc/userscripts.html new/qutebrowser-2.3.1/qutebrowser/html/doc/userscripts.html --- old/qutebrowser-2.3.0/qutebrowser/html/doc/userscripts.html 2021-06-28 17:32:25.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/html/doc/userscripts.html 2021-07-28 14:44:04.000000000 +0200 @@ -987,7 +987,7 @@ <div id="footer"> <div id="footer-text"> Last updated - 2021-06-28 17:32:24 CEST + 2021-07-28 14:44:04 CEST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/keyinput/modeman.py new/qutebrowser-2.3.1/qutebrowser/keyinput/modeman.py --- old/qutebrowser-2.3.0/qutebrowser/keyinput/modeman.py 2021-06-15 22:54:40.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/keyinput/modeman.py 2021-07-28 14:08:16.000000000 +0200 @@ -284,8 +284,8 @@ curmode = self.mode parser = self.parsers[curmode] if curmode != usertypes.KeyMode.insert: - log.modes.debug("got keypress in mode {} - delegating to {}".format( - utils.pyenum_str(curmode), utils.qualname(parser))) + log.modes.debug("got keypress in mode {} - delegating to " + "{}".format(curmode, utils.qualname(parser))) match = parser.handle(event, dry_run=dry_run) has_modifier = event.modifiers() not in [ @@ -361,8 +361,7 @@ return log.modes.debug("Entering mode {}{}".format( - utils.pyenum_str(mode), - '' if reason is None else ' (reason: {})'.format(reason))) + mode, '' if reason is None else ' (reason: {})'.format(reason))) if mode not in self.parsers: raise ValueError("No keyparser for mode {}".format(mode)) if self.mode == mode or (self.mode in PROMPT_MODES and @@ -430,8 +429,7 @@ raise NotInModeError("Not in mode {}!".format(mode)) log.modes.debug("Leaving mode {}{}".format( - utils.pyenum_str(mode), - '' if reason is None else ' (reason: {})'.format(reason))) + mode, '' if reason is None else ' (reason: {})'.format(reason))) # leaving a mode implies clearing keychain, see # https://github.com/qutebrowser/qutebrowser/issues/1805 self.clear_keychain() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser/utils/utils.py new/qutebrowser-2.3.1/qutebrowser/utils/utils.py --- old/qutebrowser-2.3.0/qutebrowser/utils/utils.py 2021-06-24 19:38:22.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser/utils/utils.py 2021-07-28 14:08:16.000000000 +0200 @@ -375,18 +375,6 @@ return False -def pyenum_str(value: enum.Enum) -> str: - """Get a string representation of a Python enum value. - - This will have the form of "EnumType.membername", which is the default string - representation for Python up to 3.10. Unfortunately, that changes with Python 3.10: - https://bugs.python.org/issue40066 - """ - if sys.version_info[:2] >= (3, 10): - return repr(value) - return str(value) - - def get_repr(obj: Any, constructor: bool = False, **attrs: Any) -> str: """Get a suitable __repr__ string for an object. @@ -399,14 +387,8 @@ cls = qualname(obj.__class__) parts = [] items = sorted(attrs.items()) - for name, val in items: - if isinstance(val, enum.Enum): - s = pyenum_str(val) - else: - s = repr(val) - parts.append(f'{name}={s}') - + parts.append('{}={!r}'.format(name, val)) if constructor: return '{}({})'.format(cls, ', '.join(parts)) else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/qutebrowser.egg-info/PKG-INFO new/qutebrowser-2.3.1/qutebrowser.egg-info/PKG-INFO --- old/qutebrowser-2.3.0/qutebrowser.egg-info/PKG-INFO 2021-06-28 17:32:39.000000000 +0200 +++ new/qutebrowser-2.3.1/qutebrowser.egg-info/PKG-INFO 2021-07-28 14:44:17.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: qutebrowser -Version: 2.3.0 +Version: 2.3.1 Summary: A keyboard-driven, vim-like browser based on PyQt5. Home-page: https://www.qutebrowser.org/ Author: Florian Bruhin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/tests/end2end/features/downloads.feature new/qutebrowser-2.3.1/tests/end2end/features/downloads.feature --- old/qutebrowser-2.3.0/tests/end2end/features/downloads.feature 2021-06-15 21:52:45.000000000 +0200 +++ new/qutebrowser-2.3.1/tests/end2end/features/downloads.feature 2021-07-28 14:08:16.000000000 +0200 @@ -79,7 +79,7 @@ And I set downloads.location.prompt to true And I open data/downloads/issue1243.html And I hint with args "links download" and follow a - And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='qutebrowser-download' mode=PromptMode.download option=None text=* title='Save file to:'>, *" in the log + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='qutebrowser-download' mode=<PromptMode.download: 5> option=None text=* title='Save file to:'>, *" in the log Then the error "Download error: No handler found for qute://" should be shown And "NotFoundError while handling qute://* URL" should be logged @@ -88,7 +88,7 @@ And I set downloads.location.prompt to true And I open data/data_link.html And I hint with args "links download" and follow s - And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='download.pdf' mode=PromptMode.download option=None text=* title='Save file to:'>, *" in the log + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='download.pdf' mode=<PromptMode.download: 5> option=None text=* title='Save file to:'>, *" in the log And I run :mode-leave Then no crash should happen @@ -96,7 +96,7 @@ When I set downloads.location.suggestion to filename And I set downloads.location.prompt to true And I open data/downloads/download.bin in a new window without waiting - And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=PromptMode.download *" in the log + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=<PromptMode.download: 5> *" in the log And I run :window-only And I run :mode-leave Then no crash should happen @@ -164,7 +164,7 @@ Scenario: Downloading a file to a reserved path When I set downloads.location.prompt to true And I open data/downloads/download.bin without waiting - And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=PromptMode.download option=None text='Please enter a location for <b>http://localhost:*/data/downloads/download.bin</b>' title='Save file to:'>, *" in the log + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=<PromptMode.download: 5> option=None text='Please enter a location for <b>http://localhost:*/data/downloads/download.bin</b>' title='Save file to:'>, *" in the log And I run :prompt-accept COM1 And I run :mode-leave Then the error "Invalid filename" should be shown @@ -173,7 +173,7 @@ Scenario: Downloading a file to a drive-relative working directory When I set downloads.location.prompt to true And I open data/downloads/download.bin without waiting - And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=PromptMode.download option=None text='Please enter a location for <b>http://localhost:*/data/downloads/download.bin</b>' title='Save file to:'>, *" in the log + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=<PromptMode.download: 5> option=None text='Please enter a location for <b>http://localhost:*/data/downloads/download.bin</b>' title='Save file to:'>, *" in the log And I run :prompt-accept C:foobar And I run :mode-leave Then the error "Invalid filename" should be shown @@ -247,14 +247,14 @@ Scenario: :download with a filename and directory which doesn't exist When I run :download --dest (tmpdir)(dirsep)downloads(dirsep)somedir(dirsep)file http://localhost:(port)/data/downloads/download.bin - And I wait for "Asking question <qutebrowser.utils.usertypes.Question default=None mode=PromptMode.yesno option=None text='<b>*</b> does not exist. Create it?' title='Create directory?'>, *" in the log + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default=None mode=<PromptMode.yesno: 1> option=None text='<b>*</b> does not exist. Create it?' title='Create directory?'>, *" in the log And I run :prompt-accept yes And I wait until the download is finished Then the downloaded file somedir/file should exist Scenario: :download with a directory which doesn't exist When I run :download --dest (tmpdir)(dirsep)downloads(dirsep)somedir(dirsep) http://localhost:(port)/data/downloads/download.bin - And I wait for "Asking question <qutebrowser.utils.usertypes.Question default=None mode=PromptMode.yesno option=None text='<b>*</b> does not exist. Create it?' title='Create directory?'>, *" in the log + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default=None mode=<PromptMode.yesno: 1> option=None text='<b>*</b> does not exist. Create it?' title='Create directory?'>, *" in the log And I run :prompt-accept yes And I wait until the download is finished Then the downloaded file somedir/download.bin should exist @@ -279,13 +279,13 @@ When I set downloads.location.prompt to true And I open data/title.html And I run :download --mhtml - And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=PromptMode.download option=None text='Please enter a location for <b>http://localhost:*/data/title.html</b>' title='Save file to:'>, *" in the log + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=<PromptMode.download: 5> option=None text='Please enter a location for <b>http://localhost:*/data/title.html</b>' title='Save file to:'>, *" in the log And I run :prompt-accept And I wait for "File successfully written." in the log And I run :download --mhtml - And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=PromptMode.download option=None text='Please enter a location for <b>http://localhost:*/data/title.html</b>' title='Save file to:'>, *" in the log + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=<PromptMode.download: 5> option=None text='Please enter a location for <b>http://localhost:*/data/title.html</b>' title='Save file to:'>, *" in the log And I run :prompt-accept - And I wait for "Asking question <qutebrowser.utils.usertypes.Question default=None mode=PromptMode.yesno option=None text='<b>*</b> already exists. Overwrite?' title='Overwrite existing file?'>, *" in the log + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default=None mode=<PromptMode.yesno: 1> option=None text='<b>*</b> already exists. Overwrite?' title='Overwrite existing file?'>, *" in the log And I run :prompt-accept yes And I wait for "File successfully written." in the log Then the downloaded file Test title.mhtml should exist @@ -655,9 +655,9 @@ Scenario: Answering a question for a cancelled download (#415) When I set downloads.location.prompt to true And I run :download http://localhost:(port)/data/downloads/download.bin - And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=PromptMode.download option=None text=* title='Save file to:'>, *" in the log + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=<PromptMode.download: 5> option=None text=* title='Save file to:'>, *" in the log And I run :download http://localhost:(port)/data/downloads/download2.bin - And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=PromptMode.download option=None text=* title='Save file to:'>, *" in the log + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=<PromptMode.download: 5> option=None text=* title='Save file to:'>, *" in the log And I run :download-cancel with count 2 And I run :prompt-accept And I wait until the download is finished diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/tests/end2end/features/misc.feature new/qutebrowser-2.3.1/tests/end2end/features/misc.feature --- old/qutebrowser-2.3.0/tests/end2end/features/misc.feature 2021-06-15 21:52:45.000000000 +0200 +++ new/qutebrowser-2.3.1/tests/end2end/features/misc.feature 2021-07-28 14:08:16.000000000 +0200 @@ -196,7 +196,7 @@ # We can't use "When I open" because we don't want to wait for load # finished When I run :open http://localhost:(port)/redirect-later?delay=-1 - And I wait for "emitting: cur_load_status_changed(*loading*) (tab *)" in the log + And I wait for "emitting: cur_load_status_changed(<LoadStatus.loading: *>) (tab *)" in the log And I wait 1s And I run :stop And I open redirect-later-continue in a new tab diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/tests/end2end/features/qutescheme.feature new/qutebrowser-2.3.1/tests/end2end/features/qutescheme.feature --- old/qutebrowser-2.3.0/tests/end2end/features/qutescheme.feature 2021-06-15 21:52:45.000000000 +0200 +++ new/qutebrowser-2.3.1/tests/end2end/features/qutescheme.feature 2021-07-28 14:08:16.000000000 +0200 @@ -192,7 +192,7 @@ And I open data/misc/test.pdf without waiting And I wait for "[qute://pdfjs/*] PDF * (PDF.js: *)" in the log And I run :jseval document.getElementById("download").click() - And I wait for "Asking question <qutebrowser.utils.usertypes.Question default=* mode=PromptMode.download option=None text=* title='Save file to:'>, *" in the log + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default=* mode=<PromptMode.download: 5> option=None text=* title='Save file to:'>, *" in the log And I run :mode-leave Then no crash should happen diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/tests/end2end/features/test_downloads_bdd.py new/qutebrowser-2.3.1/tests/end2end/features/test_downloads_bdd.py --- old/qutebrowser-2.3.0/tests/end2end/features/test_downloads_bdd.py 2021-06-15 21:52:45.000000000 +0200 +++ new/qutebrowser-2.3.1/tests/end2end/features/test_downloads_bdd.py 2021-07-28 14:08:16.000000000 +0200 @@ -28,7 +28,7 @@ PROMPT_MSG = ("Asking question <qutebrowser.utils.usertypes.Question " - "default={!r} mode=PromptMode.download option=None " + "default={!r} mode=<PromptMode.download: 5> option=None " "text=* title='Save file to:'>, *") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/tests/unit/completion/test_models.py new/qutebrowser-2.3.1/tests/unit/completion/test_models.py --- old/qutebrowser-2.3.0/tests/unit/completion/test_models.py 2021-06-15 21:52:45.000000000 +0200 +++ new/qutebrowser-2.3.1/tests/unit/completion/test_models.py 2021-07-28 13:17:59.000000000 +0200 @@ -462,8 +462,7 @@ @hypothesis.given( as_uri=hst.booleans(), add_sep=hst.booleans(), - text=hst.text(alphabet=hst.characters( - blacklist_categories=['Cc'], blacklist_characters='\x00')), + text=hst.text(), ) def test_filesystem_completion_hypothesis(info, as_uri, add_sep, text): if as_uri: @@ -474,6 +473,12 @@ model = filepathcategory.FilePathCategory('filepaths') model.set_pattern(text) + [email protected]('text', ['~\ud800', '~\x00']) +def test_filesystem_completion_corner_cases(info, text): + model = filepathcategory.FilePathCategory('filepaths') + model.set_pattern(text) + def test_default_filesystem_completion(qtmodeltester, config_stub, info, web_history_populated, quickmarks, bookmarks, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/tests/unit/components/test_braveadblock.py new/qutebrowser-2.3.1/tests/unit/components/test_braveadblock.py --- old/qutebrowser-2.3.0/tests/unit/components/test_braveadblock.py 2021-06-15 21:52:45.000000000 +0200 +++ new/qutebrowser-2.3.1/tests/unit/components/test_braveadblock.py 2021-07-22 23:35:33.000000000 +0200 @@ -29,6 +29,7 @@ from qutebrowser.api.interceptor import ResourceType from qutebrowser.components import braveadblock from qutebrowser.components.utils import blockutils +from qutebrowser.utils import usertypes from helpers import testutils pytestmark = pytest.mark.usefixtures("qapp") @@ -417,3 +418,15 @@ request_type=resource_type_str ) assert result.matched + + +def test_corrupt_cache_handling(ad_blocker, message_mock, caplog): + ad_blocker._cache_path.write_text("blablub") + + with caplog.at_level(logging.ERROR): + ad_blocker.read_cache() + + msg = message_mock.getmsg(usertypes.MessageLevel.error) + assert msg.text == ( + "Reading adblock filter data failed (corrupted data?). " + "Please run :adblock-update.") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qutebrowser-2.3.0/tests/unit/utils/test_utils.py new/qutebrowser-2.3.1/tests/unit/utils/test_utils.py --- old/qutebrowser-2.3.0/tests/unit/utils/test_utils.py 2021-06-15 21:52:45.000000000 +0200 +++ new/qutebrowser-2.3.1/tests/unit/utils/test_utils.py 2021-07-28 14:08:16.000000000 +0200 @@ -546,34 +546,6 @@ assert not utils.is_enum(23) -class SomeEnum(enum.Enum): - - some_value = enum.auto() - - -class TestPyEnumStr: - - @pytest.fixture - def val(self): - return SomeEnum.some_value - - def test_fake_old_python_version(self, monkeypatch, val): - monkeypatch.setattr(sys, 'version_info', (3, 9, 2)) - assert utils.pyenum_str(val) == str(val) - - def test_fake_new_python_version(self, monkeypatch, val): - monkeypatch.setattr(sys, 'version_info', (3, 10, 0)) - assert utils.pyenum_str(val) == repr(val) - - def test_real_result(self, val): - assert utils.pyenum_str(val) == 'SomeEnum.some_value' - - @pytest.mark.skipif(sys.version_info[:2] < (3, 10), reason='Needs Python 3.10+') - def test_needed(self, val): - """Fail if this change gets revered before the final 3.10 release.""" - assert str(val) != 'SomeEnum.some_value' - - class TestRaises: """Test raises."""
