summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/changelog.asciidoc1
-rw-r--r--doc/help/settings.asciidoc1
-rw-r--r--misc/requirements/requirements-dev.txt12
-rw-r--r--misc/requirements/requirements-flake8.txt2
-rw-r--r--misc/requirements/requirements-mypy.txt12
-rw-r--r--misc/requirements/requirements-mypy.txt-raw1
-rw-r--r--misc/requirements/requirements-pyinstaller.txt2
-rw-r--r--misc/requirements/requirements-pylint.txt8
-rw-r--r--misc/requirements/requirements-pyroma.txt4
-rw-r--r--misc/requirements/requirements-sphinx.txt6
-rw-r--r--misc/requirements/requirements-tests.txt18
-rw-r--r--misc/requirements/requirements-tox.txt6
-rw-r--r--qutebrowser/browser/history.py11
-rw-r--r--qutebrowser/browser/network/pac.py3
-rw-r--r--qutebrowser/browser/webengine/interceptor.py5
-rw-r--r--qutebrowser/browser/webengine/notification.py3
-rw-r--r--qutebrowser/browser/webengine/webenginequtescheme.py3
-rw-r--r--qutebrowser/completion/completiondelegate.py3
-rw-r--r--qutebrowser/config/configdata.yml1
-rw-r--r--qutebrowser/keyinput/eventfilter.py3
-rw-r--r--qutebrowser/keyinput/modeman.py6
-rw-r--r--qutebrowser/mainwindow/statusbar/command.py3
-rw-r--r--qutebrowser/misc/httpclient.py4
-rw-r--r--qutebrowser/qt/_core_pyqtproperty.py6
-rw-r--r--qutebrowser/utils/utils.py11
-rw-r--r--requirements.txt3
-rw-r--r--scripts/dev/changelog_urls.json10
-rw-r--r--scripts/dev/ci/docker/Dockerfile.j25
-rw-r--r--tox.ini5
29 files changed, 88 insertions, 70 deletions
diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc
index 71cf6ec5d..666e24177 100644
--- a/doc/changelog.asciidoc
+++ b/doc/changelog.asciidoc
@@ -158,6 +158,7 @@ Changed
`content.site_specific_quirks.skip`, so that `String.replaceAll` is now
polyfilled on QtWebEngine < 5.15.3, hopefully improving website
compaitibility.
+- Hints are now displayed for elements setting an `aria-haspopup` attribute.
Fixed
~~~~~
diff --git a/doc/help/settings.asciidoc b/doc/help/settings.asciidoc
index 1b28eb39f..7767f1eea 100644
--- a/doc/help/settings.asciidoc
+++ b/doc/help/settings.asciidoc
@@ -3510,6 +3510,7 @@ Default:
* +pass:[[role=&quot;menuitemcheckbox&quot;\]]+
* +pass:[[role=&quot;menuitemradio&quot;\]]+
* +pass:[[role=&quot;treeitem&quot;\]]+
+* +pass:[[aria-haspopup\]]+
* +pass:[[ng-click\]]+
* +pass:[[ngClick\]]+
* +pass:[[data-ng-click\]]+
diff --git a/misc/requirements/requirements-dev.txt b/misc/requirements/requirements-dev.txt
index cc0fb59b0..711899f72 100644
--- a/misc/requirements/requirements-dev.txt
+++ b/misc/requirements/requirements-dev.txt
@@ -5,15 +5,15 @@ build==0.10.0
bump2version==1.0.1
certifi==2023.5.7
cffi==1.15.1
-charset-normalizer==3.1.0
+charset-normalizer==3.2.0
cryptography==41.0.1
docutils==0.20.1
github3.py==4.0.1
hunter==3.6.1
idna==3.4
-importlib-metadata==6.7.0
-importlib-resources==5.12.0
-jaraco.classes==3.2.3
+importlib-metadata==6.8.0
+importlib-resources==6.0.0
+jaraco.classes==3.3.0
jeepney==0.8.0
keyring==24.2.0
manhole==1.8.0
@@ -40,8 +40,8 @@ sip==6.7.9
six==1.16.0
tomli==2.0.1
twine==4.0.2
-typing_extensions==4.6.3
+typing_extensions==4.7.1
uritemplate==4.1.1
# urllib3==2.0.3
webencodings==0.5.1
-zipp==3.15.0
+zipp==3.16.0
diff --git a/misc/requirements/requirements-flake8.txt b/misc/requirements/requirements-flake8.txt
index 018c13a3c..f00809320 100644
--- a/misc/requirements/requirements-flake8.txt
+++ b/misc/requirements/requirements-flake8.txt
@@ -9,7 +9,7 @@ flake8-debugger==4.1.2
flake8-deprecated==2.0.1
flake8-docstrings==1.7.0
flake8-future-import==0.4.7
-flake8-plugin-utils==1.3.2
+flake8-plugin-utils==1.3.3
flake8-pytest-style==1.7.2
flake8-string-format==0.3.0
flake8-tidy-imports==4.9.0
diff --git a/misc/requirements/requirements-mypy.txt b/misc/requirements/requirements-mypy.txt
index b5d23bf61..3d68d17a3 100644
--- a/misc/requirements/requirements-mypy.txt
+++ b/misc/requirements/requirements-mypy.txt
@@ -2,10 +2,9 @@
chardet==5.1.0
diff-cover==7.6.0
-importlib-metadata==6.7.0
-importlib-resources==5.12.0
+importlib-resources==6.0.0
Jinja2==3.1.2
-lxml==4.9.2
+lxml==4.9.3
MarkupSafe==2.1.3
mypy==1.4.1
mypy-extensions==1.0.0
@@ -13,11 +12,10 @@ pluggy==1.2.0
Pygments==2.15.1
PyQt5-stubs==5.15.6.0
tomli==2.0.1
-PyQt6-stubs @ git+https://github.com/python-qt-tools/PyQt6-stubs.git@f623a641cd5cdff53342177e4fbbf9cae8172336
types-colorama==0.4.15.11
types-docutils==0.20.0.1
types-Pygments==2.15.0.1
types-PyYAML==6.0.12.10
-typing_extensions==4.6.3
-zipp==3.15.0
-types-setuptools==68.0.0.0
+types-setuptools==68.0.0.1
+typing_extensions==4.7.1
+zipp==3.16.0
diff --git a/misc/requirements/requirements-mypy.txt-raw b/misc/requirements/requirements-mypy.txt-raw
index 487d30ca6..027f4fef6 100644
--- a/misc/requirements/requirements-mypy.txt-raw
+++ b/misc/requirements/requirements-mypy.txt-raw
@@ -3,7 +3,6 @@ lxml # For HTML reports
diff-cover
PyQt5-stubs
-git+https://github.com/python-qt-tools/PyQt6-stubs.git
types-PyYAML
types-colorama
types-Pygments
diff --git a/misc/requirements/requirements-pyinstaller.txt b/misc/requirements/requirements-pyinstaller.txt
index 1652cd225..759c6f11f 100644
--- a/misc/requirements/requirements-pyinstaller.txt
+++ b/misc/requirements/requirements-pyinstaller.txt
@@ -2,4 +2,4 @@
altgraph==0.17.3
pyinstaller==5.13.0
-pyinstaller-hooks-contrib==2023.3
+pyinstaller-hooks-contrib==2023.5
diff --git a/misc/requirements/requirements-pylint.txt b/misc/requirements/requirements-pylint.txt
index fd5e29978..752ce216c 100644
--- a/misc/requirements/requirements-pylint.txt
+++ b/misc/requirements/requirements-pylint.txt
@@ -1,9 +1,9 @@
# This file is automatically generated by scripts/dev/recompile_requirements.py
-astroid==2.15.5
+astroid==2.15.6
certifi==2023.5.7
cffi==1.15.1
-charset-normalizer==3.1.0
+charset-normalizer==3.2.0
cryptography==41.0.1
dill==0.3.6
github3.py==4.0.1
@@ -12,7 +12,7 @@ isort==5.12.0
lazy-object-proxy==1.9.0
mccabe==0.7.0
pefile==2023.2.7
-platformdirs==3.8.0
+platformdirs==3.8.1
pycparser==2.21
PyJWT==2.7.0
pylint==2.17.4
@@ -20,7 +20,9 @@ python-dateutil==2.8.2
./scripts/dev/pylint_checkers
requests==2.31.0
six==1.16.0
+tomli==2.0.1
tomlkit==0.11.8
+typing_extensions==4.7.1
uritemplate==4.1.1
# urllib3==2.0.3
wrapt==1.15.0
diff --git a/misc/requirements/requirements-pyroma.txt b/misc/requirements/requirements-pyroma.txt
index e0d7fe585..a06fab316 100644
--- a/misc/requirements/requirements-pyroma.txt
+++ b/misc/requirements/requirements-pyroma.txt
@@ -2,7 +2,7 @@
build==0.10.0
certifi==2023.5.7
-charset-normalizer==3.1.0
+charset-normalizer==3.2.0
docutils==0.20.1
idna==3.4
packaging==23.1
@@ -11,5 +11,5 @@ pyproject_hooks==1.0.0
pyroma==4.2
requests==2.31.0
tomli==2.0.1
-trove-classifiers==2023.5.24
+trove-classifiers==2023.7.6
urllib3==2.0.3
diff --git a/misc/requirements/requirements-sphinx.txt b/misc/requirements/requirements-sphinx.txt
index e92e41b8c..c04ee67c5 100644
--- a/misc/requirements/requirements-sphinx.txt
+++ b/misc/requirements/requirements-sphinx.txt
@@ -3,11 +3,11 @@
alabaster==0.7.13
Babel==2.12.1
certifi==2023.5.7
-charset-normalizer==3.1.0
+charset-normalizer==3.2.0
docutils==0.20.1
idna==3.4
imagesize==1.4.1
-importlib-metadata==6.7.0
+importlib-metadata==6.8.0
Jinja2==3.1.2
MarkupSafe==2.1.3
packaging==23.1
@@ -23,4 +23,4 @@ sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
urllib3==2.0.3
-zipp==3.15.0
+zipp==3.16.0
diff --git a/misc/requirements/requirements-tests.txt b/misc/requirements/requirements-tests.txt
index abc44017a..e50492973 100644
--- a/misc/requirements/requirements-tests.txt
+++ b/misc/requirements/requirements-tests.txt
@@ -4,16 +4,18 @@ attrs==23.1.0
beautifulsoup4==4.12.2
blinker==1.6.2
certifi==2023.5.7
-charset-normalizer==3.1.0
+charset-normalizer==3.2.0
cheroot==10.0.0
-click==8.1.3
+click==8.1.4
coverage==7.2.7
-execnet==1.9.0
+exceptiongroup==1.1.2
+execnet==2.0.2
filelock==3.12.2
Flask==2.3.2
hunter==3.6.1
-hypothesis==6.79.3
+hypothesis==6.80.1
idna==3.4
+importlib-metadata==6.8.0
iniconfig==2.0.0
itsdangerous==2.1.2
jaraco.functools==3.8.0
@@ -24,7 +26,7 @@ manhole==1.8.0
more-itertools==9.1.0
packaging==23.1
parse==1.19.1
-parse-type==0.6.0
+parse-type==0.6.2
pluggy==1.2.0
py-cpuinfo==9.0.0
Pygments==2.15.1
@@ -36,7 +38,7 @@ pytest-instafail==0.5.0
pytest-mock==3.11.1
pytest-qt==4.2.0
pytest-repeat==0.9.1
-pytest-rerunfailures==11.1.2
+pytest-rerunfailures==12.0
pytest-xdist==3.3.1
pytest-xvfb==3.0.0
PyVirtualDisplay==3.0
@@ -47,7 +49,9 @@ sortedcontainers==2.4.0
soupsieve==2.4.1
tldextract==3.4.4
toml==0.10.2
-typing_extensions==4.6.3
+tomli==2.0.1
+typing_extensions==4.7.1
urllib3==2.0.3
vulture==2.7
Werkzeug==2.3.6
+zipp==3.16.0
diff --git a/misc/requirements/requirements-tox.txt b/misc/requirements/requirements-tox.txt
index e68e79d46..2b83eed61 100644
--- a/misc/requirements/requirements-tox.txt
+++ b/misc/requirements/requirements-tox.txt
@@ -7,11 +7,11 @@ distlib==0.3.6
filelock==3.12.2
packaging==23.1
pip==23.1.2
-platformdirs==3.8.0
+platformdirs==3.8.1
pluggy==1.2.0
-pyproject-api==1.5.2
+pyproject-api==1.5.3
setuptools==68.0.0
tomli==2.0.1
-tox==4.6.3
+tox==4.6.4
virtualenv==20.23.1
wheel==0.40.0
diff --git a/qutebrowser/browser/history.py b/qutebrowser/browser/history.py
index c0b23040c..a83621ae0 100644
--- a/qutebrowser/browser/history.py
+++ b/qutebrowser/browser/history.py
@@ -23,8 +23,9 @@ import contextlib
import pathlib
from typing import cast, Mapping, MutableSequence, Optional
+from qutebrowser.qt import machinery
from qutebrowser.qt.core import pyqtSlot, QUrl, QObject, pyqtSignal
-from qutebrowser.qt.widgets import QProgressDialog, QApplication
+from qutebrowser.qt.widgets import QProgressDialog, QApplication, QPushButton
from qutebrowser.config import config
from qutebrowser.api import cmdutils
@@ -54,7 +55,13 @@ class HistoryProgress:
self._progress.setMaximum(0) # unknown
self._progress.setMinimumDuration(0)
self._progress.setLabelText(text)
- self._progress.setCancelButton(None)
+
+ no_button = None
+ if machinery.IS_QT6:
+ # FIXME:mypy PyQt6 stubs issue
+ no_button = cast(QPushButton, None)
+
+ self._progress.setCancelButton(no_button)
self._progress.setAutoClose(False)
self._progress.show()
QApplication.processEvents()
diff --git a/qutebrowser/browser/network/pac.py b/qutebrowser/browser/network/pac.py
index c66b6bc03..fcca5d45d 100644
--- a/qutebrowser/browser/network/pac.py
+++ b/qutebrowser/browser/network/pac.py
@@ -65,7 +65,8 @@ def _js_slot(*args):
return self._error_con.callAsConstructor([e])
# pylint: enable=protected-access
- deco = pyqtSlot(*args, result=QJSValue)
+ # FIXME:mypy PyQt6 stubs issue, passing type should work too
+ deco = pyqtSlot(*args, result="QJSValue")
return deco(new_method)
return _decorator
diff --git a/qutebrowser/browser/webengine/interceptor.py b/qutebrowser/browser/webengine/interceptor.py
index 75acb3252..f56db3a65 100644
--- a/qutebrowser/browser/webengine/interceptor.py
+++ b/qutebrowser/browser/webengine/interceptor.py
@@ -33,9 +33,8 @@ class WebEngineRequest(interceptors.Request):
"""QtWebEngine-specific request interceptor functionality."""
_WHITELISTED_REQUEST_METHODS = {
- # FIXME:mypy PyQt6-stubs issue?
- QByteArray(b'GET'), # type: ignore[call-overload,unused-ignore]
- QByteArray(b'HEAD'), # type: ignore[call-overload,unused-ignore]
+ QByteArray(b'GET'),
+ QByteArray(b'HEAD'),
}
def __init__(self, *args, webengine_info, **kwargs):
diff --git a/qutebrowser/browser/webengine/notification.py b/qutebrowser/browser/webengine/notification.py
index d140a8c61..4d08e914e 100644
--- a/qutebrowser/browser/webengine/notification.py
+++ b/qutebrowser/browser/webengine/notification.py
@@ -1109,8 +1109,7 @@ class DBusNotificationAdapter(AbstractNotificationAdapter):
return None
bits = qimage.constBits().asstring(size)
- # FIXME:mypy PyQt6-stubs issue
- image_data.add(QByteArray(bits)) # type: ignore[call-overload,unused-ignore]
+ image_data.add(QByteArray(bits))
image_data.endStructure()
return image_data
diff --git a/qutebrowser/browser/webengine/webenginequtescheme.py b/qutebrowser/browser/webengine/webenginequtescheme.py
index 4a09c81fb..010b00975 100644
--- a/qutebrowser/browser/webengine/webenginequtescheme.py
+++ b/qutebrowser/browser/webengine/webenginequtescheme.py
@@ -25,8 +25,7 @@ from qutebrowser.qt.webenginecore import (QWebEngineUrlSchemeHandler,
from qutebrowser.browser import qutescheme
from qutebrowser.utils import log, qtutils
-# FIXME:mypy PyQt6-stubs issue?
-_QUTE = QByteArray(b'qute') # type: ignore[call-overload,unused-ignore]
+_QUTE = QByteArray(b'qute')
class QuteSchemeHandler(QWebEngineUrlSchemeHandler):
diff --git a/qutebrowser/completion/completiondelegate.py b/qutebrowser/completion/completiondelegate.py
index e497e1204..8c77a2036 100644
--- a/qutebrowser/completion/completiondelegate.py
+++ b/qutebrowser/completion/completiondelegate.py
@@ -299,7 +299,8 @@ class CompletionItemDelegate(QStyledItemDelegate):
size = self._style.sizeFromContents(QStyle.ContentsType.CT_ItemViewItem, self._opt,
docsize, self._opt.widget)
qtutils.ensure_valid(size)
- return size + QSize(10, 3)
+ # FIXME:mypy https://www.riverbankcomputing.com/pipermail/pyqt/2023-July/045400.html
+ return size + QSize(10, 3) # type: ignore[call-arg,unused-ignore]
def paint(self, painter, option, index):
"""Override the QStyledItemDelegate paint function.
diff --git a/qutebrowser/config/configdata.yml b/qutebrowser/config/configdata.yml
index 8a255d04c..0b9d669dc 100644
--- a/qutebrowser/config/configdata.yml
+++ b/qutebrowser/config/configdata.yml
@@ -1741,6 +1741,7 @@ hints.selectors:
- '[role="menuitemcheckbox"]'
- '[role="menuitemradio"]'
- '[role="treeitem"]'
+ - '[aria-haspopup]'
- '[ng-click]'
- '[ngClick]'
- '[data-ng-click]'
diff --git a/qutebrowser/keyinput/eventfilter.py b/qutebrowser/keyinput/eventfilter.py
index 007be6d15..3f8d2779f 100644
--- a/qutebrowser/keyinput/eventfilter.py
+++ b/qutebrowser/keyinput/eventfilter.py
@@ -19,7 +19,6 @@
from typing import cast
-from qutebrowser.qt import machinery
from qutebrowser.qt.core import pyqtSlot, QObject, QEvent
from qutebrowser.qt.gui import QKeyEvent, QWindow
@@ -87,8 +86,6 @@ class EventFilter(QObject):
True if the event should be filtered, False if it's passed through.
"""
ev_type = event.type()
- if machinery.IS_QT6:
- ev_type = cast(QEvent.Type, ev_type)
if self._log_qt_events:
try:
diff --git a/qutebrowser/keyinput/modeman.py b/qutebrowser/keyinput/modeman.py
index fe3650a2c..897318b66 100644
--- a/qutebrowser/keyinput/modeman.py
+++ b/qutebrowser/keyinput/modeman.py
@@ -474,11 +474,7 @@ class ModeManager(QObject):
QEvent.Type.ShortcutOverride:
functools.partial(self._handle_keypress, dry_run=True),
}
- ev_type = event.type()
- if machinery.IS_QT6:
- ev_type = cast(QEvent.Type, ev_type)
-
- handler = handlers[ev_type]
+ handler = handlers[event.type()]
return handler(cast(QKeyEvent, event))
@cmdutils.register(instance='mode-manager', scope='window')
diff --git a/qutebrowser/mainwindow/statusbar/command.py b/qutebrowser/mainwindow/statusbar/command.py
index 4332316a3..b9c78d623 100644
--- a/qutebrowser/mainwindow/statusbar/command.py
+++ b/qutebrowser/mainwindow/statusbar/command.py
@@ -259,6 +259,9 @@ class Command(misc.CommandLineEdit):
else:
raise utils.Unreachable("setText got called with invalid text "
"'{}'!".format(text))
+ # FIXME:mypy PyQt6 stubs issue
+ if machinery.IS_QT6:
+ text = cast(str, text)
super().setText(text)
def keyPressEvent(self, e: QKeyEvent) -> None:
diff --git a/qutebrowser/misc/httpclient.py b/qutebrowser/misc/httpclient.py
index 1dddddba7..2bb152b03 100644
--- a/qutebrowser/misc/httpclient.py
+++ b/qutebrowser/misc/httpclient.py
@@ -78,9 +78,7 @@ class HTTPClient(QObject):
request = HTTPRequest(url)
request.setHeader(QNetworkRequest.KnownHeaders.ContentTypeHeader,
'application/x-www-form-urlencoded;charset=utf-8')
- # FIXME:mypy PyQt6-stubs issue
- reply = self._nam.post( # type: ignore[call-overload,unused-ignore]
- request, encoded_data)
+ reply = self._nam.post(request, encoded_data)
self._handle_reply(reply)
def get(self, url):
diff --git a/qutebrowser/qt/_core_pyqtproperty.py b/qutebrowser/qt/_core_pyqtproperty.py
index ec57d4d1c..8ae62264f 100644
--- a/qutebrowser/qt/_core_pyqtproperty.py
+++ b/qutebrowser/qt/_core_pyqtproperty.py
@@ -1,16 +1,18 @@
"""WORKAROUND for missing pyqtProperty typing, ported from PyQt5-stubs:
FIXME:mypy PyQt6-stubs issue
-https://github.com/python-qt-tools/PyQt5-stubs/blob/5.15.6.0/PyQt5-stubs/QtCore.pyi#L70-L111
+https://github.com/python-qt-tools/PyQt5-stubs/blob/5.15.6.0/PyQt5-stubs/QtCore.pyi#L68-L111
"""
# flake8: noqa
# pylint: disable=invalid-name,missing-class-docstring,too-many-arguments,redefined-builtin,unused-argument,import-error
import typing
-from PyQt6.QtCore import QObjectT, pyqtSignal
+from PyQt6.QtCore import QObject, pyqtSignal
if typing.TYPE_CHECKING:
+ QObjectT = typing.TypeVar("QObjectT", bound=QObject)
+
TPropertyTypeVal = typing.TypeVar("TPropertyTypeVal")
TPropGetter = typing.TypeVar(
diff --git a/qutebrowser/utils/utils.py b/qutebrowser/utils/utils.py
index a81952b7d..6b450aa29 100644
--- a/qutebrowser/utils/utils.py
+++ b/qutebrowser/utils/utils.py
@@ -128,17 +128,20 @@ class VersionNumber:
return NotImplemented
return self._ver != other._ver
+ # FIXME:mypy type ignores below needed for PyQt5-stubs:
+ # Unsupported left operand type for ... ("QVersionNumber")
+
def __ge__(self, other: 'VersionNumber') -> bool:
- return self._ver >= other._ver # type: ignore[operator]
+ return self._ver >= other._ver # type: ignore[operator,unused-ignore]
def __gt__(self, other: 'VersionNumber') -> bool:
- return self._ver > other._ver # type: ignore[operator]
+ return self._ver > other._ver # type: ignore[operator,unused-ignore]
def __le__(self, other: 'VersionNumber') -> bool:
- return self._ver <= other._ver # type: ignore[operator]
+ return self._ver <= other._ver # type: ignore[operator,unused-ignore]
def __lt__(self, other: 'VersionNumber') -> bool:
- return self._ver < other._ver # type: ignore[operator]
+ return self._ver < other._ver # type: ignore[operator,unused-ignore]
class Unreachable(Exception):
diff --git a/requirements.txt b/requirements.txt
index b0c1444f8..963bb43ce 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,11 +2,12 @@
adblock==0.6.0
colorama==0.4.6
-importlib-resources==5.12.0 ; python_version=="3.8.*"
+importlib-resources==6.0.0 ; python_version=="3.8.*"
Jinja2==3.1.2
MarkupSafe==2.1.3
Pygments==2.15.1
PyYAML==6.0
+zipp==3.16.0
# Unpinned due to recompile_requirements.py limitations
pyobjc-core ; sys_platform=="darwin"
pyobjc-framework-Cocoa ; sys_platform=="darwin"
diff --git a/scripts/dev/changelog_urls.json b/scripts/dev/changelog_urls.json
index baf9e2583..89d3b332a 100644
--- a/scripts/dev/changelog_urls.json
+++ b/scripts/dev/changelog_urls.json
@@ -104,7 +104,6 @@
"PyQt-builder": "https://www.riverbankcomputing.com/news",
"PyQt5-sip": "https://www.riverbankcomputing.com/news",
"PyQt5-stubs": "https://github.com/python-qt-tools/PyQt5-stubs/blob/master/CHANGELOG.md",
- "PyQt6-stubs": "https://github.com/python-qt-tools/PyQt6-stubs/commits/main",
"sip": "https://www.riverbankcomputing.com/news",
"PyQt6": "https://www.riverbankcomputing.com/news",
"PyQt6-Qt6": "https://www.riverbankcomputing.com/news",
@@ -138,8 +137,8 @@
"pyroma": "https://github.com/regebro/pyroma/blob/master/CHANGES.txt",
"adblock": "https://github.com/ArniDagur/python-adblock/blob/master/CHANGELOG.md",
"importlib-resources": "https://importlib-resources.readthedocs.io/en/latest/history.html",
- "importlib-metadata": "https://github.com/python/importlib_metadata/blob/main/CHANGES.rst",
- "zipp": "https://github.com/jaraco/zipp/blob/main/CHANGES.rst",
+ "importlib-metadata": "https://github.com/python/importlib_metadata/blob/main/NEWS.rst",
+ "zipp": "https://github.com/jaraco/zipp/blob/main/NEWS.rst",
"pip": "https://pip.pypa.io/en/stable/news/",
"wheel": "https://wheel.readthedocs.io/en/stable/news.html",
"setuptools": "https://setuptools.readthedocs.io/en/latest/history.html",
@@ -148,7 +147,7 @@
"bleach": "https://github.com/mozilla/bleach/blob/main/CHANGES",
"jeepney": "https://gitlab.com/takluyver/jeepney/-/blob/master/docs/release-notes.rst",
"keyring": "https://github.com/jaraco/keyring/blob/main/NEWS.rst",
- "jaraco.classes": "https://github.com/jaraco/jaraco.classes/blob/main/CHANGES.rst",
+ "jaraco.classes": "https://github.com/jaraco/jaraco.classes/blob/main/NEWS.rst",
"pkginfo": "https://bazaar.launchpad.net/~tseaver/pkginfo/trunk/view/head:/CHANGES.txt",
"readme-renderer": "https://github.com/pypa/readme_renderer/blob/main/CHANGES.rst",
"requests-toolbelt": "https://github.com/requests/toolbelt/blob/master/HISTORY.rst",
@@ -165,5 +164,6 @@
"pyproject_hooks": "https://pyproject-hooks.readthedocs.io/en/latest/changelog.html",
"markdown-it-py": "https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md",
"mdurl": "https://github.com/executablebooks/mdurl/commits/master",
- "blinker": "https://blinker.readthedocs.io/en/stable/#changes"
+ "blinker": "https://blinker.readthedocs.io/en/stable/#changes",
+ "exceptiongroup": "https://github.com/agronholm/exceptiongroup/blob/main/CHANGES.rst"
}
diff --git a/scripts/dev/ci/docker/Dockerfile.j2 b/scripts/dev/ci/docker/Dockerfile.j2
index e9a0facd7..3a1adbdef 100644
--- a/scripts/dev/ci/docker/Dockerfile.j2
+++ b/scripts/dev/ci/docker/Dockerfile.j2
@@ -38,7 +38,10 @@ RUN pacman -Su --noconfirm \
RUN pacman -U --noconfirm \
https://archive.archlinux.org/packages/q/qt5-webkit/qt5-webkit-5.212.0alpha4-18-x86_64.pkg.tar.zst \
https://archive.archlinux.org/packages/p/python-pyqt5/python-pyqt5-5.15.7-2-x86_64.pkg.tar.zst \
- https://archive.archlinux.org/packages/p/python/python-3.10.10-1-x86_64.pkg.tar.zst
+ https://archive.archlinux.org/packages/p/python/python-3.10.10-1-x86_64.pkg.tar.zst \
+ https://archive.archlinux.org/packages/i/icu/icu-72.1-2-x86_64.pkg.tar.zst \
+ https://archive.archlinux.org/packages/l/libxml2/libxml2-2.10.4-4-x86_64.pkg.tar.zst \
+ https://archive.archlinux.org/packages/q/qt5-base/qt5-base-5.15.10%2Bkde%2Br129-3-x86_64.pkg.tar.zst
RUN python3 -m ensurepip
RUN python3 -m pip install tox pyqt5-sip
{% endif %}
diff --git a/tox.ini b/tox.ini
index a96c155f4..843126e36 100644
--- a/tox.ini
+++ b/tox.ini
@@ -96,7 +96,9 @@ basepython = {env:PYTHON:python3}
deps =
-r{toxinidir}/requirements.txt
-r{toxinidir}/misc/requirements/requirements-vulture.txt
-setenv = PYTHONPATH={toxinidir}
+setenv =
+ {[testenv]setenv}
+ {[testenv:vulture]setenv}
commands =
{envpython} scripts/link_pyqt.py --tox {envdir}
{[testenv:vulture]commands}
@@ -223,6 +225,7 @@ deps =
-r{toxinidir}/misc/requirements/requirements-tests.txt
-r{toxinidir}/misc/requirements/requirements-mypy.txt
pyqt6: -r{toxinidir}/misc/requirements/requirements-pyqt-6.txt
+commands_pre = pip install --index-url https://www.riverbankcomputing.com/pypi/simple/ --pre --upgrade PyQt6
commands =
{envpython} -m mypy {env:QUTE_CONSTANTS_ARGS} qutebrowser {posargs}