diff --git a/misc/requirements/requirements-dev.txt b/misc/requirements/requirements-dev.txt index 2b55d6ecc..411882fae 100644 --- a/misc/requirements/requirements-dev.txt +++ b/misc/requirements/requirements-dev.txt @@ -6,12 +6,12 @@ autocommand==2.2.2 backports.tarfile==1.2.0 bracex==2.5.post1 build==1.2.2.post1 -bump-my-version==1.1.3 +bump-my-version==1.1.4 certifi==2025.4.26 cffi==1.17.1 charset-normalizer==3.4.2 click==8.1.8 -cryptography==45.0.2 +cryptography==45.0.3 docutils==0.21.2 exceptiongroup==1.3.0 github3.py==4.0.1 @@ -40,7 +40,7 @@ packaging==25.0 platformdirs==4.3.8 prompt_toolkit==3.0.51 pycparser==2.22 -pydantic==2.11.4 +pydantic==2.11.5 pydantic-settings==2.9.1 pydantic_core==2.33.2 Pygments==2.19.1 @@ -56,16 +56,16 @@ requests==2.32.3 requests-toolbelt==1.0.0 rfc3986==2.0.0 rich==14.0.0 -rich-click==1.8.8 +rich-click==1.8.9 SecretStorage==3.3.3 -sip==6.11.0 +sip==6.11.1 six==1.17.0 sniffio==1.3.1 tomli==2.2.1 tomlkit==0.13.2 twine==6.1.0 typeguard==4.3.0 -typing-inspection==0.4.0 +typing-inspection==0.4.1 typing_extensions==4.13.2 uritemplate==4.1.1 # urllib3==2.4.0 diff --git a/misc/requirements/requirements-mypy.txt b/misc/requirements/requirements-mypy.txt index 3f9c77f8e..ee999e744 100644 --- a/misc/requirements/requirements-mypy.txt +++ b/misc/requirements/requirements-mypy.txt @@ -1,7 +1,7 @@ # This file is automatically generated by scripts/dev/recompile_requirements.py chardet==5.2.0 -diff_cover==9.2.4 +diff_cover==9.3.1 Jinja2==3.1.6 lxml==5.4.0 MarkupSafe==3.0.2 @@ -12,7 +12,7 @@ Pygments==2.19.1 PyQt5-stubs==5.15.6.0 tomli==2.2.1 types-colorama==0.4.15.20240311 -types-docutils==0.21.0.20250516 +types-docutils==0.21.0.20250526 types-Pygments==2.19.0.20250516 types-PyYAML==6.0.12.20250516 typing_extensions==4.13.2 diff --git a/misc/requirements/requirements-pylint.txt b/misc/requirements/requirements-pylint.txt index 763afbe04..0bfd6f11e 100644 --- a/misc/requirements/requirements-pylint.txt +++ b/misc/requirements/requirements-pylint.txt @@ -4,7 +4,7 @@ astroid==3.3.10 certifi==2025.4.26 cffi==1.17.1 charset-normalizer==3.4.2 -cryptography==45.0.2 +cryptography==45.0.3 dill==0.4.0 github3.py==4.0.1 idna==3.10 diff --git a/misc/requirements/requirements-pyqt-5.15.txt b/misc/requirements/requirements-pyqt-5.15.txt index 927508839..b4d82580c 100644 --- a/misc/requirements/requirements-pyqt-5.15.txt +++ b/misc/requirements/requirements-pyqt-5.15.txt @@ -1,7 +1,7 @@ # This file is automatically generated by scripts/dev/recompile_requirements.py PyQt5==5.15.11 # rq.filter: < 5.16 -PyQt5-Qt5==5.15.16 +PyQt5-Qt5==5.15.17 PyQt5_sip==12.17.0 PyQtWebEngine==5.15.7 # rq.filter: < 5.16 -PyQtWebEngine-Qt5==5.15.16 +PyQtWebEngine-Qt5==5.15.17 diff --git a/misc/requirements/requirements-pyqt-5.txt b/misc/requirements/requirements-pyqt-5.txt index 292f35e7d..0f6357bda 100644 --- a/misc/requirements/requirements-pyqt-5.txt +++ b/misc/requirements/requirements-pyqt-5.txt @@ -1,7 +1,7 @@ # This file is automatically generated by scripts/dev/recompile_requirements.py PyQt5==5.15.11 -PyQt5-Qt5==5.15.16 +PyQt5-Qt5==5.15.17 PyQt5_sip==12.17.0 PyQtWebEngine==5.15.7 -PyQtWebEngine-Qt5==5.15.16 +PyQtWebEngine-Qt5==5.15.17 diff --git a/misc/requirements/requirements-pyqt-6.2.txt b/misc/requirements/requirements-pyqt-6.2.txt index 49a247a16..8847801ea 100644 --- a/misc/requirements/requirements-pyqt-6.2.txt +++ b/misc/requirements/requirements-pyqt-6.2.txt @@ -4,4 +4,4 @@ PyQt6==6.2.3 PyQt6-Qt6==6.2.4 PyQt6-WebEngine==6.2.1 PyQt6-WebEngine-Qt6==6.2.4 -PyQt6_sip==13.10.0 +PyQt6_sip==13.10.2 diff --git a/misc/requirements/requirements-pyqt-6.3.txt b/misc/requirements/requirements-pyqt-6.3.txt index aa42e285b..60e16e4f5 100644 --- a/misc/requirements/requirements-pyqt-6.3.txt +++ b/misc/requirements/requirements-pyqt-6.3.txt @@ -4,4 +4,4 @@ PyQt6==6.3.1 PyQt6-Qt6==6.3.2 PyQt6-WebEngine==6.3.1 PyQt6-WebEngine-Qt6==6.3.2 -PyQt6_sip==13.10.0 +PyQt6_sip==13.10.2 diff --git a/misc/requirements/requirements-pyqt-6.4.txt b/misc/requirements/requirements-pyqt-6.4.txt index 134840e15..fc87b99f5 100644 --- a/misc/requirements/requirements-pyqt-6.4.txt +++ b/misc/requirements/requirements-pyqt-6.4.txt @@ -4,4 +4,4 @@ PyQt6==6.4.2 PyQt6-Qt6==6.4.3 PyQt6-WebEngine==6.4.0 PyQt6-WebEngine-Qt6==6.4.3 -PyQt6_sip==13.10.0 +PyQt6_sip==13.10.2 diff --git a/misc/requirements/requirements-pyqt-6.5.txt b/misc/requirements/requirements-pyqt-6.5.txt index 47d2626a8..d599b2ed4 100644 --- a/misc/requirements/requirements-pyqt-6.5.txt +++ b/misc/requirements/requirements-pyqt-6.5.txt @@ -4,4 +4,4 @@ PyQt6==6.5.3 PyQt6-Qt6==6.5.3 PyQt6-WebEngine==6.5.0 PyQt6-WebEngine-Qt6==6.5.3 -PyQt6_sip==13.10.0 +PyQt6_sip==13.10.2 diff --git a/misc/requirements/requirements-pyqt-6.6.txt b/misc/requirements/requirements-pyqt-6.6.txt index da1b2dc3c..67da9711d 100644 --- a/misc/requirements/requirements-pyqt-6.6.txt +++ b/misc/requirements/requirements-pyqt-6.6.txt @@ -4,4 +4,4 @@ PyQt6==6.6.1 PyQt6-Qt6==6.6.3 PyQt6-WebEngine==6.6.0 PyQt6-WebEngine-Qt6==6.6.3 -PyQt6_sip==13.10.0 +PyQt6_sip==13.10.2 diff --git a/misc/requirements/requirements-pyqt-6.7.txt b/misc/requirements/requirements-pyqt-6.7.txt index 463f8f6b9..b99759404 100644 --- a/misc/requirements/requirements-pyqt-6.7.txt +++ b/misc/requirements/requirements-pyqt-6.7.txt @@ -5,4 +5,4 @@ PyQt6-Qt6==6.7.3 PyQt6-WebEngine==6.7.0 PyQt6-WebEngine-Qt6==6.7.3 PyQt6-WebEngineSubwheel-Qt6==6.7.3 -PyQt6_sip==13.10.0 +PyQt6_sip==13.10.2 diff --git a/misc/requirements/requirements-pyqt-6.8.txt b/misc/requirements/requirements-pyqt-6.8.txt index 84c0d21f7..6669da8b2 100644 --- a/misc/requirements/requirements-pyqt-6.8.txt +++ b/misc/requirements/requirements-pyqt-6.8.txt @@ -4,4 +4,4 @@ PyQt6==6.8.1 PyQt6-Qt6==6.8.2 PyQt6-WebEngine==6.8.0 PyQt6-WebEngine-Qt6==6.8.2 -PyQt6_sip==13.10.0 +PyQt6_sip==13.10.2 diff --git a/misc/requirements/requirements-pyqt-6.9.txt b/misc/requirements/requirements-pyqt-6.9.txt index a70577da1..1c9e2ef81 100644 --- a/misc/requirements/requirements-pyqt-6.9.txt +++ b/misc/requirements/requirements-pyqt-6.9.txt @@ -4,4 +4,4 @@ PyQt6==6.9.0 PyQt6-Qt6==6.9.0 PyQt6-WebEngine==6.9.0 PyQt6-WebEngine-Qt6==6.9.0 -PyQt6_sip==13.10.0 +PyQt6_sip==13.10.2 diff --git a/misc/requirements/requirements-pyqt-6.txt b/misc/requirements/requirements-pyqt-6.txt index a70577da1..1c9e2ef81 100644 --- a/misc/requirements/requirements-pyqt-6.txt +++ b/misc/requirements/requirements-pyqt-6.txt @@ -4,4 +4,4 @@ PyQt6==6.9.0 PyQt6-Qt6==6.9.0 PyQt6-WebEngine==6.9.0 PyQt6-WebEngine-Qt6==6.9.0 -PyQt6_sip==13.10.0 +PyQt6_sip==13.10.2 diff --git a/misc/requirements/requirements-pyqt.txt b/misc/requirements/requirements-pyqt.txt index a70577da1..1c9e2ef81 100644 --- a/misc/requirements/requirements-pyqt.txt +++ b/misc/requirements/requirements-pyqt.txt @@ -4,4 +4,4 @@ PyQt6==6.9.0 PyQt6-Qt6==6.9.0 PyQt6-WebEngine==6.9.0 PyQt6-WebEngine-Qt6==6.9.0 -PyQt6_sip==13.10.0 +PyQt6_sip==13.10.2 diff --git a/misc/requirements/requirements-tests.txt b/misc/requirements/requirements-tests.txt index ebbd744e9..fe7840291 100644 --- a/misc/requirements/requirements-tests.txt +++ b/misc/requirements/requirements-tests.txt @@ -9,14 +9,14 @@ certifi==2025.4.26 charset-normalizer==3.4.2 cheroot==10.0.1 click==8.1.8 -coverage==7.8.0 +coverage==7.8.2 exceptiongroup==1.3.0 execnet==2.1.1 filelock==3.18.0 Flask==3.1.1 gherkin-official==29.0.0 hunter==3.7.0 -hypothesis==6.131.18 +hypothesis==6.131.28 idna==3.10 importlib_metadata==8.7.0 importlib_resources==6.5.2 diff --git a/misc/requirements/requirements-tox.txt b/misc/requirements/requirements-tox.txt index bf077cd03..c2037a90c 100644 --- a/misc/requirements/requirements-tox.txt +++ b/misc/requirements/requirements-tox.txt @@ -1,6 +1,6 @@ # This file is automatically generated by scripts/dev/recompile_requirements.py -cachetools==5.5.2 +cachetools==6.0.0 chardet==5.2.0 colorama==0.4.6 distlib==0.3.9 @@ -10,7 +10,7 @@ pip==25.1.1 platformdirs==4.3.8 pluggy==1.6.0 pyproject-api==1.9.1 -setuptools==80.7.1 +setuptools==80.8.0 tomli==2.2.1 tox==4.26.0 ; python_full_version!="3.14.0b1" typing_extensions==4.13.2 diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py index 2d2d3c188..d16750bf4 100644 --- a/qutebrowser/browser/webengine/webenginesettings.py +++ b/qutebrowser/browser/webengine/webenginesettings.py @@ -453,8 +453,19 @@ def _init_default_profile(): init_user_agent() ua_version = version.qtwebengine_versions() + + logger = log.init.warning + if machinery.IS_QT5: + # With Qt 5.15, we can't quite be sure about which QtWebEngine patch version + # we're getting, as ELF parsing might be broken and there's no other way. + # For most of the code, we don't really care about the patch version though. + assert ( + non_ua_version.webengine.strip_patch() == ua_version.webengine.strip_patch() + ), (non_ua_version, ua_version) + logger = log.init.debug + if ua_version.webengine != non_ua_version.webengine: - log.init.warning( + logger( "QtWebEngine version mismatch - unexpected behavior might occur, " "please open a bug about this.\n" f" Early version: {non_ua_version}\n" diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py index eaa3662be..e9cea7866 100644 --- a/qutebrowser/utils/version.py +++ b/qutebrowser/utils/version.py @@ -594,6 +594,7 @@ class WebEngineVersions: utils.VersionNumber(5, 15, 16): (_BASES[87], '119.0.6045.123'), # 2023-11-07 utils.VersionNumber(5, 15, 17): (_BASES[87], '123.0.6312.58'), # 2024-03-19 utils.VersionNumber(5, 15, 18): (_BASES[87], '130.0.6723.59'), # 2024-10-14 + utils.VersionNumber(5, 15, 19): (_BASES[87], '135.0.7049.95'), # 2025-04-14 ## Qt 6.2 diff --git a/tests/unit/misc/test_elf.py b/tests/unit/misc/test_elf.py index 6ae23357c..5be9a2a12 100644 --- a/tests/unit/misc/test_elf.py +++ b/tests/unit/misc/test_elf.py @@ -11,6 +11,7 @@ from hypothesis import strategies as hst from qutebrowser.misc import elf, binparsing from qutebrowser.utils import utils +from qutebrowser.utils.utils import VersionNumber @pytest.mark.parametrize('fmt, expected', [ @@ -45,7 +46,8 @@ def test_result(webengine_versions, qapp, caplog): pytest.importorskip('qutebrowser.qt.webenginecore') versions = elf.parse_webenginecore() - if webengine_versions.webengine >= utils.VersionNumber(6, 5): + qtwe_version = webengine_versions.webengine + if qtwe_version == VersionNumber(5, 15, 19) or qtwe_version >= VersionNumber(6, 5): assert versions is None pytest.xfail("ELF file structure not supported")