diff --git a/qutebrowser/api/cmdutils.py b/qutebrowser/api/cmdutils.py index e5466f072..9d825cafd 100644 --- a/qutebrowser/api/cmdutils.py +++ b/qutebrowser/api/cmdutils.py @@ -35,7 +35,8 @@ Possible values: import inspect -from typing import Any, Callable, Iterable, Protocol, Optional, Dict, cast +from typing import Any, Callable, Protocol, Optional, Dict, cast +from collections.abc import Iterable from qutebrowser.utils import qtutils from qutebrowser.commands import command, cmdexc diff --git a/qutebrowser/app.py b/qutebrowser/app.py index 51603a2b9..8223d218f 100644 --- a/qutebrowser/app.py +++ b/qutebrowser/app.py @@ -29,7 +29,8 @@ import tempfile import pathlib import datetime import argparse -from typing import Iterable, Optional, List, Tuple +from typing import Optional, List, Tuple +from collections.abc import Iterable from qutebrowser.qt import machinery from qutebrowser.qt.widgets import QApplication, QWidget diff --git a/qutebrowser/browser/browsertab.py b/qutebrowser/browser/browsertab.py index 625046a9c..ff7fc7c4e 100644 --- a/qutebrowser/browser/browsertab.py +++ b/qutebrowser/browser/browsertab.py @@ -9,8 +9,8 @@ import pathlib import itertools import functools import dataclasses -from typing import (cast, TYPE_CHECKING, Any, Callable, Iterable, List, Optional, - Sequence, Set, Type, Union, Tuple) +from typing import (cast, TYPE_CHECKING, Any, Callable, List, Optional, Set, Type, Union, Tuple) +from collections.abc import Iterable, Sequence from qutebrowser.qt import machinery from qutebrowser.qt.core import (pyqtSignal, pyqtSlot, QUrl, QObject, QSizeF, Qt, diff --git a/qutebrowser/browser/downloads.py b/qutebrowser/browser/downloads.py index fbbf4ff11..d587b2b74 100644 --- a/qutebrowser/browser/downloads.py +++ b/qutebrowser/browser/downloads.py @@ -13,7 +13,8 @@ import functools import pathlib import tempfile import enum -from typing import Any, Dict, IO, List, MutableSequence, Optional, Union +from typing import Any, Dict, IO, List, Optional, Union +from collections.abc import MutableSequence from qutebrowser.qt.core import (pyqtSlot, pyqtSignal, Qt, QObject, QModelIndex, QTimer, QAbstractListModel, QUrl) diff --git a/qutebrowser/browser/downloadview.py b/qutebrowser/browser/downloadview.py index 4b6a8b2c8..6103c7ab0 100644 --- a/qutebrowser/browser/downloadview.py +++ b/qutebrowser/browser/downloadview.py @@ -5,7 +5,8 @@ """The ListView to display downloads in.""" import functools -from typing import Callable, MutableSequence, Tuple, Union +from typing import Callable, Tuple, Union +from collections.abc import MutableSequence from qutebrowser.qt.core import pyqtSlot, QSize, Qt from qutebrowser.qt.widgets import QListView, QSizePolicy, QMenu, QStyleFactory diff --git a/qutebrowser/browser/greasemonkey.py b/qutebrowser/browser/greasemonkey.py index d41d46361..00c645797 100644 --- a/qutebrowser/browser/greasemonkey.py +++ b/qutebrowser/browser/greasemonkey.py @@ -12,7 +12,8 @@ import functools import glob import textwrap import dataclasses -from typing import cast, List, Sequence, Tuple, Optional +from typing import cast, List, Tuple, Optional +from collections.abc import Sequence from qutebrowser.qt.core import pyqtSignal, QObject, QUrl diff --git a/qutebrowser/browser/hints.py b/qutebrowser/browser/hints.py index dc5c55b05..64fe5072c 100644 --- a/qutebrowser/browser/hints.py +++ b/qutebrowser/browser/hints.py @@ -12,8 +12,8 @@ import html import enum import dataclasses from string import ascii_lowercase -from typing import (TYPE_CHECKING, Callable, Dict, Iterable, Iterator, List, Mapping, - MutableSequence, Optional, Sequence, Set) +from typing import (TYPE_CHECKING, Callable, Dict, List, Optional, Set) +from collections.abc import Iterable, Iterator, Mapping, MutableSequence, Sequence from qutebrowser.qt.core import pyqtSignal, pyqtSlot, QObject, Qt, QUrl from qutebrowser.qt.widgets import QLabel diff --git a/qutebrowser/browser/history.py b/qutebrowser/browser/history.py index 45bfeddbf..ebcd26e72 100644 --- a/qutebrowser/browser/history.py +++ b/qutebrowser/browser/history.py @@ -8,7 +8,8 @@ import os import time import contextlib import pathlib -from typing import cast, Mapping, MutableSequence, Optional +from typing import cast, Optional +from collections.abc import Mapping, MutableSequence from qutebrowser.qt import machinery from qutebrowser.qt.core import pyqtSlot, QUrl, QObject, pyqtSignal diff --git a/qutebrowser/browser/qutescheme.py b/qutebrowser/browser/qutescheme.py index 508d510d7..472e8b637 100644 --- a/qutebrowser/browser/qutescheme.py +++ b/qutebrowser/browser/qutescheme.py @@ -18,7 +18,8 @@ import textwrap import urllib import collections import secrets -from typing import TypeVar, Callable, Dict, List, Optional, Union, Sequence, Tuple +from typing import TypeVar, Callable, Dict, List, Optional, Union, Tuple +from collections.abc import Sequence from qutebrowser.qt.core import QUrlQuery, QUrl diff --git a/qutebrowser/browser/shared.py b/qutebrowser/browser/shared.py index 358af6d95..acf8ad011 100644 --- a/qutebrowser/browser/shared.py +++ b/qutebrowser/browser/shared.py @@ -10,7 +10,8 @@ import html import enum import netrc import tempfile -from typing import Callable, Mapping, List, Optional, Iterable, Iterator +from typing import Callable, List, Optional +from collections.abc import Mapping, Iterable, Iterator from qutebrowser.qt.core import QUrl, pyqtBoundSignal diff --git a/qutebrowser/browser/urlmarks.py b/qutebrowser/browser/urlmarks.py index 2d2563a1a..f9879274b 100644 --- a/qutebrowser/browser/urlmarks.py +++ b/qutebrowser/browser/urlmarks.py @@ -15,7 +15,7 @@ import os.path import html import functools import collections -from typing import MutableMapping +from collections.abc import MutableMapping from qutebrowser.qt.core import pyqtSignal, QUrl, QObject diff --git a/qutebrowser/browser/webelem.py b/qutebrowser/browser/webelem.py index 556623ee5..e496b6a12 100644 --- a/qutebrowser/browser/webelem.py +++ b/qutebrowser/browser/webelem.py @@ -4,7 +4,8 @@ """Generic web element related code.""" -from typing import Iterator, Optional, Set, TYPE_CHECKING, Union, Dict +from typing import Optional, Set, TYPE_CHECKING, Union, Dict +from collections.abc import Iterator import collections.abc from qutebrowser.qt import machinery diff --git a/qutebrowser/browser/webengine/darkmode.py b/qutebrowser/browser/webengine/darkmode.py index 5aab28051..8318c52da 100644 --- a/qutebrowser/browser/webengine/darkmode.py +++ b/qutebrowser/browser/webengine/darkmode.py @@ -125,8 +125,8 @@ import copy import enum import dataclasses import collections -from typing import (Any, Iterator, Mapping, MutableMapping, Optional, Set, Tuple, Union, - Sequence, List) +from typing import (Any, Optional, Set, Tuple, Union, List) +from collections.abc import Iterator, Mapping, MutableMapping, Sequence from qutebrowser.config import config from qutebrowser.utils import usertypes, utils, log, version diff --git a/qutebrowser/browser/webengine/notification.py b/qutebrowser/browser/webengine/notification.py index e8b2e27f1..54e7aca7e 100644 --- a/qutebrowser/browser/webengine/notification.py +++ b/qutebrowser/browser/webengine/notification.py @@ -33,7 +33,8 @@ import dataclasses import itertools import functools import subprocess -from typing import Any, List, Dict, Optional, Iterator, Type, TYPE_CHECKING +from typing import Any, List, Dict, Optional, Type, TYPE_CHECKING +from collections.abc import Iterator from qutebrowser.qt import machinery from qutebrowser.qt.core import (Qt, QObject, QVariant, QMetaType, QByteArray, pyqtSlot, diff --git a/qutebrowser/browser/webengine/webengineelem.py b/qutebrowser/browser/webengine/webengineelem.py index c387ebbcf..7fc7e68af 100644 --- a/qutebrowser/browser/webengine/webengineelem.py +++ b/qutebrowser/browser/webengine/webengineelem.py @@ -5,7 +5,8 @@ """QtWebEngine specific part of the web element API.""" from typing import ( - TYPE_CHECKING, Any, Callable, Dict, Iterator, Optional, Set, Tuple, Union) + TYPE_CHECKING, Any, Callable, Dict, Optional, Set, Tuple, Union) +from collections.abc import Iterator from qutebrowser.qt.core import QRect, QEventLoop from qutebrowser.qt.widgets import QApplication diff --git a/qutebrowser/browser/webengine/webview.py b/qutebrowser/browser/webengine/webview.py index 96c0c97e5..1d8e708a7 100644 --- a/qutebrowser/browser/webengine/webview.py +++ b/qutebrowser/browser/webengine/webview.py @@ -5,7 +5,8 @@ """The main browser widget for QtWebEngine.""" import mimetypes -from typing import List, Iterable, Optional +from typing import List, Optional +from collections.abc import Iterable from qutebrowser.qt import machinery from qutebrowser.qt.core import pyqtSignal, pyqtSlot, QUrl diff --git a/qutebrowser/browser/webkit/certificateerror.py b/qutebrowser/browser/webkit/certificateerror.py index 59d9cc897..2c18af62e 100644 --- a/qutebrowser/browser/webkit/certificateerror.py +++ b/qutebrowser/browser/webkit/certificateerror.py @@ -4,7 +4,8 @@ """A wrapper over a list of QSslErrors.""" -from typing import Sequence, Optional +from typing import Optional +from collections.abc import Sequence from qutebrowser.qt.network import QSslError, QNetworkReply diff --git a/qutebrowser/browser/webkit/cookies.py b/qutebrowser/browser/webkit/cookies.py index 9e6ae2f1b..af881175d 100644 --- a/qutebrowser/browser/webkit/cookies.py +++ b/qutebrowser/browser/webkit/cookies.py @@ -4,7 +4,7 @@ """Handling of HTTP cookies.""" -from typing import Sequence +from collections.abc import Sequence from qutebrowser.qt.network import QNetworkCookie, QNetworkCookieJar from qutebrowser.qt.core import pyqtSignal, QDateTime diff --git a/qutebrowser/browser/webkit/mhtml.py b/qutebrowser/browser/webkit/mhtml.py index 692689b0a..61272aa12 100644 --- a/qutebrowser/browser/webkit/mhtml.py +++ b/qutebrowser/browser/webkit/mhtml.py @@ -19,7 +19,8 @@ import email.mime.multipart import email.message import quopri import dataclasses -from typing import MutableMapping, Set, Tuple, Callable +from typing import Set, Tuple, Callable +from collections.abc import MutableMapping from qutebrowser.qt.core import QUrl diff --git a/qutebrowser/browser/webkit/network/networkmanager.py b/qutebrowser/browser/webkit/network/networkmanager.py index 06402a547..9b5ca915c 100644 --- a/qutebrowser/browser/webkit/network/networkmanager.py +++ b/qutebrowser/browser/webkit/network/networkmanager.py @@ -7,7 +7,8 @@ import collections import html import dataclasses -from typing import TYPE_CHECKING, Dict, MutableMapping, Optional, Set +from typing import TYPE_CHECKING, Dict, Optional, Set +from collections.abc import MutableMapping from qutebrowser.qt.core import pyqtSlot, pyqtSignal, QUrl, QByteArray from qutebrowser.qt.network import (QNetworkAccessManager, QNetworkReply, QSslConfiguration, diff --git a/qutebrowser/browser/webkit/tabhistory.py b/qutebrowser/browser/webkit/tabhistory.py index 80a572385..b21c77402 100644 --- a/qutebrowser/browser/webkit/tabhistory.py +++ b/qutebrowser/browser/webkit/tabhistory.py @@ -4,7 +4,8 @@ """Utilities related to QWebHistory.""" -from typing import Any, List, Mapping +from typing import Any, List +from collections.abc import Mapping from qutebrowser.qt.core import QByteArray, QDataStream, QIODevice, QUrl diff --git a/qutebrowser/browser/webkit/webkitelem.py b/qutebrowser/browser/webkit/webkitelem.py index 0400358af..de1e7758f 100644 --- a/qutebrowser/browser/webkit/webkitelem.py +++ b/qutebrowser/browser/webkit/webkitelem.py @@ -4,7 +4,8 @@ """QtWebKit specific part of the web element API.""" -from typing import cast, TYPE_CHECKING, Iterator, List, Optional, Set +from typing import cast, TYPE_CHECKING, List, Optional, Set +from collections.abc import Iterator from qutebrowser.qt.core import QRect, Qt # pylint: disable=no-name-in-module diff --git a/qutebrowser/browser/webkit/webkittab.py b/qutebrowser/browser/webkit/webkittab.py index 1ae976bea..d89295440 100644 --- a/qutebrowser/browser/webkit/webkittab.py +++ b/qutebrowser/browser/webkit/webkittab.py @@ -7,7 +7,8 @@ import re import functools import xml.etree.ElementTree -from typing import cast, Iterable, Optional +from typing import cast, Optional +from collections.abc import Iterable from qutebrowser.qt.core import pyqtSlot, Qt, QUrl, QPoint, QTimer, QSizeF, QSize from qutebrowser.qt.gui import QIcon diff --git a/qutebrowser/commands/command.py b/qutebrowser/commands/command.py index effdcc9b0..350da0357 100644 --- a/qutebrowser/commands/command.py +++ b/qutebrowser/commands/command.py @@ -9,8 +9,9 @@ import collections import traceback import typing import dataclasses -from typing import (Any, MutableMapping, MutableSequence, Tuple, Union, List, Optional, +from typing import (Any, Tuple, Union, List, Optional, Callable) +from collections.abc import MutableMapping, MutableSequence from qutebrowser.api import cmdutils from qutebrowser.commands import cmdexc, argparser diff --git a/qutebrowser/commands/parser.py b/qutebrowser/commands/parser.py index d45a18aea..a0f74a2ec 100644 --- a/qutebrowser/commands/parser.py +++ b/qutebrowser/commands/parser.py @@ -5,7 +5,8 @@ """Module for parsing commands entered into the browser.""" import dataclasses -from typing import List, Iterator +from typing import List +from collections.abc import Iterator from qutebrowser.commands import cmdexc, command from qutebrowser.misc import split, objects diff --git a/qutebrowser/commands/runners.py b/qutebrowser/commands/runners.py index dec1fb4f5..22ae2ae4e 100644 --- a/qutebrowser/commands/runners.py +++ b/qutebrowser/commands/runners.py @@ -7,7 +7,8 @@ import traceback import re import contextlib -from typing import TYPE_CHECKING, Callable, Dict, Tuple, Iterator, Mapping, MutableMapping +from typing import TYPE_CHECKING, Callable, Dict, Tuple +from collections.abc import Iterator, Mapping, MutableMapping from qutebrowser.qt.core import pyqtSlot, QUrl, QObject diff --git a/qutebrowser/commands/userscripts.py b/qutebrowser/commands/userscripts.py index 01710a63c..dd4db66dc 100644 --- a/qutebrowser/commands/userscripts.py +++ b/qutebrowser/commands/userscripts.py @@ -7,7 +7,8 @@ import os import os.path import tempfile -from typing import cast, Any, MutableMapping, Tuple +from typing import cast, Any, Tuple +from collections.abc import MutableMapping from qutebrowser.qt.core import pyqtSignal, pyqtSlot, QObject, QSocketNotifier diff --git a/qutebrowser/completion/models/__init__.py b/qutebrowser/completion/models/__init__.py index 4fd45e160..a55a91215 100644 --- a/qutebrowser/completion/models/__init__.py +++ b/qutebrowser/completion/models/__init__.py @@ -4,7 +4,8 @@ """Models for the command completion.""" -from typing import Sequence, Optional +from typing import Optional +from collections.abc import Sequence from qutebrowser.completion.models.util import DeleteFuncType from qutebrowser.qt.core import QAbstractItemModel diff --git a/qutebrowser/completion/models/completionmodel.py b/qutebrowser/completion/models/completionmodel.py index 5a85f7281..a4eed93d1 100644 --- a/qutebrowser/completion/models/completionmodel.py +++ b/qutebrowser/completion/models/completionmodel.py @@ -4,7 +4,8 @@ """A model that proxies access to one or more completion categories.""" -from typing import MutableSequence, overload, Optional, Any, cast +from typing import overload, Optional, Any, cast +from collections.abc import MutableSequence from qutebrowser.qt import machinery from qutebrowser.qt.core import Qt, QModelIndex, QAbstractItemModel, QObject diff --git a/qutebrowser/completion/models/filepathcategory.py b/qutebrowser/completion/models/filepathcategory.py index 23ad0d173..43b0725a0 100644 --- a/qutebrowser/completion/models/filepathcategory.py +++ b/qutebrowser/completion/models/filepathcategory.py @@ -14,7 +14,8 @@ is harder to achieve via pathlib. import glob import os import os.path -from typing import List, Optional, Iterable +from typing import List, Optional +from collections.abc import Iterable from qutebrowser.qt.core import QAbstractListModel, QModelIndex, QObject, Qt, QUrl diff --git a/qutebrowser/completion/models/listcategory.py b/qutebrowser/completion/models/listcategory.py index 10639f47d..6dbfd978e 100644 --- a/qutebrowser/completion/models/listcategory.py +++ b/qutebrowser/completion/models/listcategory.py @@ -5,7 +5,8 @@ """Completion category that uses a list of tuples as a data source.""" import re -from typing import Iterable, Tuple +from typing import Tuple +from collections.abc import Iterable from qutebrowser.qt.core import QSortFilterProxyModel, QRegularExpression from qutebrowser.qt.gui import QStandardItem, QStandardItemModel diff --git a/qutebrowser/completion/models/miscmodels.py b/qutebrowser/completion/models/miscmodels.py index ea3febe4d..0301339b8 100644 --- a/qutebrowser/completion/models/miscmodels.py +++ b/qutebrowser/completion/models/miscmodels.py @@ -6,7 +6,8 @@ import datetime import itertools -from typing import List, Sequence, Tuple +from typing import List, Tuple +from collections.abc import Sequence from qutebrowser.config import config, configdata from qutebrowser.utils import objreg, log, utils diff --git a/qutebrowser/completion/models/urlmodel.py b/qutebrowser/completion/models/urlmodel.py index 10bee0393..f2a57623e 100644 --- a/qutebrowser/completion/models/urlmodel.py +++ b/qutebrowser/completion/models/urlmodel.py @@ -4,7 +4,8 @@ """Function to return the url completion model for the `open` command.""" -from typing import Dict, Sequence +from typing import Dict +from collections.abc import Sequence from qutebrowser.completion.models import (completionmodel, filepathcategory, listcategory, histcategory, diff --git a/qutebrowser/completion/models/util.py b/qutebrowser/completion/models/util.py index 492e1b2e5..d1c646661 100644 --- a/qutebrowser/completion/models/util.py +++ b/qutebrowser/completion/models/util.py @@ -4,7 +4,8 @@ """Utility functions for completion models.""" -from typing import Callable, Sequence +from typing import Callable +from collections.abc import Sequence from qutebrowser.utils import usertypes from qutebrowser.misc import objects diff --git a/qutebrowser/components/braveadblock.py b/qutebrowser/components/braveadblock.py index a827eb546..5be1efbfe 100644 --- a/qutebrowser/components/braveadblock.py +++ b/qutebrowser/components/braveadblock.py @@ -10,7 +10,8 @@ import pathlib import functools import contextlib import subprocess -from typing import Optional, IO, Iterator +from typing import Optional, IO +from collections.abc import Iterator from qutebrowser.qt.core import QUrl diff --git a/qutebrowser/components/misccommands.py b/qutebrowser/components/misccommands.py index 0d8fa0b2e..64914bc95 100644 --- a/qutebrowser/components/misccommands.py +++ b/qutebrowser/components/misccommands.py @@ -11,7 +11,8 @@ import os import signal import logging import pathlib -from typing import Optional, Sequence, Callable +from typing import Optional, Callable +from collections.abc import Sequence try: import hunter diff --git a/qutebrowser/components/readlinecommands.py b/qutebrowser/components/readlinecommands.py index a9626637d..ca071448e 100644 --- a/qutebrowser/components/readlinecommands.py +++ b/qutebrowser/components/readlinecommands.py @@ -5,7 +5,8 @@ """Bridge to provide readline-like shortcuts for QLineEdits.""" import os -from typing import Iterable, Optional, MutableMapping, Any, Callable +from typing import Optional, Any, Callable +from collections.abc import Iterable, MutableMapping from qutebrowser.qt.widgets import QApplication, QLineEdit diff --git a/qutebrowser/config/config.py b/qutebrowser/config/config.py index cb7fe77b3..d43b71136 100644 --- a/qutebrowser/config/config.py +++ b/qutebrowser/config/config.py @@ -7,8 +7,8 @@ import copy import contextlib import functools -from typing import (TYPE_CHECKING, Any, Callable, Dict, Iterator, List, Mapping, - MutableMapping, MutableSequence, Optional, Tuple, cast) +from typing import (TYPE_CHECKING, Any, Callable, Dict, List, Optional, Tuple, cast) +from collections.abc import Iterator, Mapping, MutableMapping, MutableSequence from qutebrowser.qt.core import pyqtSignal, QObject, QUrl diff --git a/qutebrowser/config/configcommands.py b/qutebrowser/config/configcommands.py index c4065ceb9..d581989f8 100644 --- a/qutebrowser/config/configcommands.py +++ b/qutebrowser/config/configcommands.py @@ -6,7 +6,8 @@ import os.path import contextlib -from typing import TYPE_CHECKING, Iterator, List, Optional, Any, Tuple +from typing import TYPE_CHECKING, List, Optional, Any, Tuple +from collections.abc import Iterator from qutebrowser.qt.core import QUrl, QUrlQuery diff --git a/qutebrowser/config/configdata.py b/qutebrowser/config/configdata.py index 90486f702..a88543fc6 100644 --- a/qutebrowser/config/configdata.py +++ b/qutebrowser/config/configdata.py @@ -9,8 +9,8 @@ Module attributes: DATA: A dict of Option objects after init() has been called. """ -from typing import (Any, Dict, Iterable, List, Mapping, MutableMapping, Optional, - Sequence, Tuple, Union, NoReturn, cast) +from typing import (Any, Dict, List, Optional, Tuple, Union, NoReturn, cast) +from collections.abc import Iterable, Mapping, MutableMapping, Sequence import functools import dataclasses diff --git a/qutebrowser/config/configexc.py b/qutebrowser/config/configexc.py index 4c8291580..4cce7412f 100644 --- a/qutebrowser/config/configexc.py +++ b/qutebrowser/config/configexc.py @@ -6,7 +6,8 @@ import difflib import dataclasses -from typing import Any, Mapping, Optional, Sequence, Union, List +from typing import Any, Optional, Union, List +from collections.abc import Mapping, Sequence from qutebrowser.utils import usertypes, log diff --git a/qutebrowser/config/configfiles.py b/qutebrowser/config/configfiles.py index 0680cd0e7..e4d852862 100644 --- a/qutebrowser/config/configfiles.py +++ b/qutebrowser/config/configfiles.py @@ -14,8 +14,8 @@ import traceback import configparser import contextlib import re -from typing import (TYPE_CHECKING, Any, Dict, Iterable, Iterator, List, Mapping, - MutableMapping, Optional, Tuple, cast) +from typing import (TYPE_CHECKING, Any, Dict, List, Optional, Tuple, cast) +from collections.abc import Iterable, Iterator, Mapping, MutableMapping import yaml from qutebrowser.qt.core import pyqtSignal, pyqtSlot, QObject, QSettings, qVersion diff --git a/qutebrowser/config/configtypes.py b/qutebrowser/config/configtypes.py index 9fa374712..7d4980097 100644 --- a/qutebrowser/config/configtypes.py +++ b/qutebrowser/config/configtypes.py @@ -36,8 +36,10 @@ import functools import operator import json import dataclasses -from typing import (Any, Callable, Dict as DictType, Iterable, Iterator, - List as ListType, Optional, Pattern, Sequence, Tuple, Union) +from typing import (Any, Callable, Dict as DictType, + List as ListType, Optional, Tuple, Union) +from re import Pattern +from collections.abc import Iterable, Iterator, Sequence import yaml from qutebrowser.qt.core import QUrl, Qt diff --git a/qutebrowser/config/configutils.py b/qutebrowser/config/configutils.py index fda9552dd..a53fce7ec 100644 --- a/qutebrowser/config/configutils.py +++ b/qutebrowser/config/configutils.py @@ -9,8 +9,8 @@ import collections import itertools import operator from typing import ( - TYPE_CHECKING, Any, Dict, Iterator, List, Optional, Sequence, Set, Union, - MutableMapping) + TYPE_CHECKING, Any, Dict, List, Optional, Set, Union) +from collections.abc import Iterator, Sequence, MutableMapping from qutebrowser.qt.core import QUrl from qutebrowser.qt.gui import QFontDatabase diff --git a/qutebrowser/config/qtargs.py b/qutebrowser/config/qtargs.py index eb5e8b58c..665848232 100644 --- a/qutebrowser/config/qtargs.py +++ b/qutebrowser/config/qtargs.py @@ -8,7 +8,8 @@ import os import sys import argparse import pathlib -from typing import Any, Dict, Iterator, List, Optional, Sequence, Tuple, Union, Callable +from typing import Any, Dict, List, Optional, Tuple, Union, Callable +from collections.abc import Iterator, Sequence from qutebrowser.qt import machinery from qutebrowser.qt.core import QLocale diff --git a/qutebrowser/extensions/loader.py b/qutebrowser/extensions/loader.py index ff9974d9d..291377c93 100644 --- a/qutebrowser/extensions/loader.py +++ b/qutebrowser/extensions/loader.py @@ -10,7 +10,8 @@ import pathlib import importlib import argparse import dataclasses -from typing import Callable, Iterator, List, Optional, Tuple +from typing import Callable, List, Optional, Tuple +from collections.abc import Iterator from qutebrowser.qt.core import pyqtSlot diff --git a/qutebrowser/keyinput/basekeyparser.py b/qutebrowser/keyinput/basekeyparser.py index df6b66f7f..c97570369 100644 --- a/qutebrowser/keyinput/basekeyparser.py +++ b/qutebrowser/keyinput/basekeyparser.py @@ -8,7 +8,8 @@ import string import types import dataclasses import traceback -from typing import Mapping, MutableMapping, Optional, Sequence +from typing import Optional +from collections.abc import Mapping, MutableMapping, Sequence from qutebrowser.qt.core import QObject, pyqtSignal from qutebrowser.qt.gui import QKeySequence, QKeyEvent diff --git a/qutebrowser/keyinput/keyutils.py b/qutebrowser/keyinput/keyutils.py index 18730c74b..63a6832e3 100644 --- a/qutebrowser/keyinput/keyutils.py +++ b/qutebrowser/keyinput/keyutils.py @@ -18,7 +18,8 @@ handle what we actually think we do. import itertools import dataclasses -from typing import Iterator, Iterable, List, Mapping, Optional, Union, overload, cast +from typing import List, Optional, Union, overload, cast +from collections.abc import Iterator, Iterable, Mapping from qutebrowser.qt import machinery from qutebrowser.qt.core import Qt, QEvent diff --git a/qutebrowser/keyinput/modeman.py b/qutebrowser/keyinput/modeman.py index f0337ec88..13318f2c9 100644 --- a/qutebrowser/keyinput/modeman.py +++ b/qutebrowser/keyinput/modeman.py @@ -6,7 +6,8 @@ import functools import dataclasses -from typing import Mapping, Callable, MutableMapping, Union, Set, cast +from typing import Callable, Union, Set, cast +from collections.abc import Mapping, MutableMapping from qutebrowser.qt import machinery from qutebrowser.qt.core import pyqtSlot, pyqtSignal, Qt, QObject, QEvent diff --git a/qutebrowser/keyinput/modeparsers.py b/qutebrowser/keyinput/modeparsers.py index 05e560111..b9e5951db 100644 --- a/qutebrowser/keyinput/modeparsers.py +++ b/qutebrowser/keyinput/modeparsers.py @@ -10,7 +10,8 @@ Module attributes: import traceback import enum -from typing import TYPE_CHECKING, Sequence +from typing import TYPE_CHECKING +from collections.abc import Sequence from qutebrowser.qt.core import pyqtSlot, Qt, QObject from qutebrowser.qt.gui import QKeySequence, QKeyEvent diff --git a/qutebrowser/mainwindow/mainwindow.py b/qutebrowser/mainwindow/mainwindow.py index e39ac4f9a..b5664a8c2 100644 --- a/qutebrowser/mainwindow/mainwindow.py +++ b/qutebrowser/mainwindow/mainwindow.py @@ -8,7 +8,8 @@ import binascii import base64 import itertools import functools -from typing import List, MutableSequence, Optional, Tuple, cast +from typing import List, Optional, Tuple, cast +from collections.abc import MutableSequence from qutebrowser.qt import machinery from qutebrowser.qt.core import (pyqtBoundSignal, pyqtSlot, QRect, QPoint, QTimer, Qt, diff --git a/qutebrowser/mainwindow/messageview.py b/qutebrowser/mainwindow/messageview.py index 95bbed724..66d065360 100644 --- a/qutebrowser/mainwindow/messageview.py +++ b/qutebrowser/mainwindow/messageview.py @@ -4,7 +4,8 @@ """Showing messages above the statusbar.""" -from typing import MutableSequence, Optional +from typing import Optional +from collections.abc import MutableSequence from qutebrowser.qt.core import pyqtSlot, pyqtSignal, Qt from qutebrowser.qt.widgets import QWidget, QVBoxLayout, QLabel, QSizePolicy diff --git a/qutebrowser/mainwindow/prompt.py b/qutebrowser/mainwindow/prompt.py index d6ae16ba4..44c37687b 100644 --- a/qutebrowser/mainwindow/prompt.py +++ b/qutebrowser/mainwindow/prompt.py @@ -9,7 +9,8 @@ import html import collections import functools import dataclasses -from typing import Deque, MutableSequence, Optional, cast +from typing import Deque, Optional, cast +from collections.abc import MutableSequence from qutebrowser.qt.core import (pyqtSlot, pyqtSignal, Qt, QTimer, QDir, QModelIndex, QItemSelectionModel, QObject, QEventLoop, QUrl) diff --git a/qutebrowser/mainwindow/tabbedbrowser.py b/qutebrowser/mainwindow/tabbedbrowser.py index 47d8dc680..70fc7d00d 100644 --- a/qutebrowser/mainwindow/tabbedbrowser.py +++ b/qutebrowser/mainwindow/tabbedbrowser.py @@ -10,7 +10,8 @@ import weakref import datetime import dataclasses from typing import ( - Any, Deque, List, Mapping, MutableMapping, MutableSequence, Optional, Tuple) + Any, Deque, List, Optional, Tuple) +from collections.abc import Mapping, MutableMapping, MutableSequence from qutebrowser.qt.widgets import QSizePolicy, QWidget, QApplication from qutebrowser.qt.core import pyqtSignal, pyqtSlot, QTimer, QUrl, QPoint diff --git a/qutebrowser/mainwindow/windowundo.py b/qutebrowser/mainwindow/windowundo.py index 46ff3c8c5..5efb77c32 100644 --- a/qutebrowser/mainwindow/windowundo.py +++ b/qutebrowser/mainwindow/windowundo.py @@ -6,7 +6,8 @@ import collections import dataclasses -from typing import MutableSequence, cast, TYPE_CHECKING +from typing import cast, TYPE_CHECKING +from collections.abc import MutableSequence from qutebrowser.qt.core import QObject, QByteArray diff --git a/qutebrowser/misc/backendproblem.py b/qutebrowser/misc/backendproblem.py index 51d3a35c3..244949bd9 100644 --- a/qutebrowser/misc/backendproblem.py +++ b/qutebrowser/misc/backendproblem.py @@ -13,7 +13,8 @@ import shutil import os.path import argparse import dataclasses -from typing import Any, Optional, Sequence, Tuple +from typing import Any, Optional, Tuple +from collections.abc import Sequence from qutebrowser.qt import machinery from qutebrowser.qt.core import Qt diff --git a/qutebrowser/misc/cmdhistory.py b/qutebrowser/misc/cmdhistory.py index aa2df63e0..e52dd77dd 100644 --- a/qutebrowser/misc/cmdhistory.py +++ b/qutebrowser/misc/cmdhistory.py @@ -4,7 +4,7 @@ """Command history for the status bar.""" -from typing import MutableSequence +from collections.abc import MutableSequence from qutebrowser.qt.core import pyqtSlot, pyqtSignal, QObject diff --git a/qutebrowser/misc/consolewidget.py b/qutebrowser/misc/consolewidget.py index 08f5dc5ff..d74478b4e 100644 --- a/qutebrowser/misc/consolewidget.py +++ b/qutebrowser/misc/consolewidget.py @@ -6,7 +6,8 @@ import sys import code -from typing import MutableSequence, Optional +from typing import Optional +from collections.abc import MutableSequence from qutebrowser.qt.core import pyqtSignal, pyqtSlot, Qt from qutebrowser.qt.widgets import QTextEdit, QWidget, QVBoxLayout, QApplication diff --git a/qutebrowser/misc/crashsignal.py b/qutebrowser/misc/crashsignal.py index c33ae1173..4ad6021f5 100644 --- a/qutebrowser/misc/crashsignal.py +++ b/qutebrowser/misc/crashsignal.py @@ -15,7 +15,8 @@ import functools import threading import faulthandler import dataclasses -from typing import TYPE_CHECKING, Optional, MutableMapping, cast, List +from typing import TYPE_CHECKING, Optional, cast, List +from collections.abc import MutableMapping from qutebrowser.qt.core import (pyqtSlot, qInstallMessageHandler, QObject, QSocketNotifier, QTimer, QUrl) diff --git a/qutebrowser/misc/debugcachestats.py b/qutebrowser/misc/debugcachestats.py index fb1f7e7c3..70f088418 100644 --- a/qutebrowser/misc/debugcachestats.py +++ b/qutebrowser/misc/debugcachestats.py @@ -9,7 +9,8 @@ dependencies as possible to avoid cyclic dependencies. """ import weakref -from typing import Any, Callable, Optional, TypeVar, Mapping +from typing import Any, Callable, Optional, TypeVar +from collections.abc import Mapping from qutebrowser.utils import log diff --git a/qutebrowser/misc/guiprocess.py b/qutebrowser/misc/guiprocess.py index d20b4ba0f..ce4b8a32e 100644 --- a/qutebrowser/misc/guiprocess.py +++ b/qutebrowser/misc/guiprocess.py @@ -9,7 +9,8 @@ import locale import shlex import shutil import signal -from typing import Mapping, Sequence, Dict, Optional +from typing import Dict, Optional +from collections.abc import Mapping, Sequence from qutebrowser.qt.core import (pyqtSlot, pyqtSignal, QObject, QProcess, QProcessEnvironment, QByteArray, QUrl, Qt) diff --git a/qutebrowser/misc/httpclient.py b/qutebrowser/misc/httpclient.py index a6a6025c3..097fdcd43 100644 --- a/qutebrowser/misc/httpclient.py +++ b/qutebrowser/misc/httpclient.py @@ -6,7 +6,7 @@ import functools import urllib.parse -from typing import MutableMapping +from collections.abc import MutableMapping from qutebrowser.qt.core import pyqtSignal, QObject, QTimer from qutebrowser.qt.network import (QNetworkAccessManager, QNetworkRequest, diff --git a/qutebrowser/misc/lineparser.py b/qutebrowser/misc/lineparser.py index c96109e9e..c253c3ef5 100644 --- a/qutebrowser/misc/lineparser.py +++ b/qutebrowser/misc/lineparser.py @@ -7,7 +7,7 @@ import os import os.path import contextlib -from typing import Sequence +from collections.abc import Sequence from qutebrowser.qt.core import pyqtSlot, pyqtSignal, QObject diff --git a/qutebrowser/misc/pakjoy.py b/qutebrowser/misc/pakjoy.py index 9415113ea..f0ee7b4f0 100644 --- a/qutebrowser/misc/pakjoy.py +++ b/qutebrowser/misc/pakjoy.py @@ -30,7 +30,8 @@ import shutil import pathlib import dataclasses import contextlib -from typing import ClassVar, IO, Optional, Dict, Tuple, Iterator +from typing import ClassVar, IO, Optional, Dict, Tuple +from collections.abc import Iterator from qutebrowser.config import config from qutebrowser.misc import binparsing, objects diff --git a/qutebrowser/misc/quitter.py b/qutebrowser/misc/quitter.py index 9fe743414..62438001f 100644 --- a/qutebrowser/misc/quitter.py +++ b/qutebrowser/misc/quitter.py @@ -15,7 +15,8 @@ import tokenize import functools import warnings import subprocess -from typing import Iterable, Mapping, MutableSequence, Sequence, cast +from typing import cast +from collections.abc import Iterable, Mapping, MutableSequence, Sequence from qutebrowser.qt.core import QObject, pyqtSignal, QTimer try: diff --git a/qutebrowser/misc/savemanager.py b/qutebrowser/misc/savemanager.py index 6017b3d2a..567cba803 100644 --- a/qutebrowser/misc/savemanager.py +++ b/qutebrowser/misc/savemanager.py @@ -6,7 +6,7 @@ import os.path import collections -from typing import MutableMapping +from collections.abc import MutableMapping from qutebrowser.qt.core import pyqtSlot, QObject, QTimer diff --git a/qutebrowser/misc/sessions.py b/qutebrowser/misc/sessions.py index dd63904cd..b487fcd2c 100644 --- a/qutebrowser/misc/sessions.py +++ b/qutebrowser/misc/sessions.py @@ -10,7 +10,8 @@ import itertools import urllib import shutil import pathlib -from typing import Any, Iterable, MutableMapping, MutableSequence, Optional, Union, cast +from typing import Any, Optional, Union, cast +from collections.abc import Iterable, MutableMapping, MutableSequence from qutebrowser.qt.core import Qt, QUrl, QObject, QPoint, QTimer, QDateTime import yaml diff --git a/qutebrowser/misc/sql.py b/qutebrowser/misc/sql.py index b23b862a3..e16ffeb40 100644 --- a/qutebrowser/misc/sql.py +++ b/qutebrowser/misc/sql.py @@ -9,7 +9,8 @@ import collections import contextlib import dataclasses import types -from typing import Any, Dict, Iterator, List, Mapping, MutableSequence, Optional, Type, Union +from typing import Any, Dict, List, Optional, Type, Union +from collections.abc import Iterator, Mapping, MutableSequence from qutebrowser.qt.core import QObject, pyqtSignal from qutebrowser.qt.sql import QSqlDatabase, QSqlError, QSqlQuery diff --git a/qutebrowser/misc/throttle.py b/qutebrowser/misc/throttle.py index 43325fb08..f4c50c09a 100644 --- a/qutebrowser/misc/throttle.py +++ b/qutebrowser/misc/throttle.py @@ -6,7 +6,8 @@ import dataclasses import time -from typing import Any, Callable, Mapping, Optional, Sequence +from typing import Any, Callable, Optional +from collections.abc import Mapping, Sequence from qutebrowser.qt.core import QObject diff --git a/qutebrowser/utils/debug.py b/qutebrowser/utils/debug.py index 230c965ef..2ec5e11fe 100644 --- a/qutebrowser/utils/debug.py +++ b/qutebrowser/utils/debug.py @@ -12,7 +12,8 @@ import functools import datetime import types from typing import ( - Any, Callable, List, Mapping, MutableSequence, Optional, Sequence, Type, Union) + Any, Callable, List, Optional, Type, Union) +from collections.abc import Mapping, MutableSequence, Sequence from qutebrowser.qt.core import Qt, QEvent, QMetaMethod, QObject, pyqtBoundSignal diff --git a/qutebrowser/utils/docutils.py b/qutebrowser/utils/docutils.py index 6cd16730c..e60db6167 100644 --- a/qutebrowser/utils/docutils.py +++ b/qutebrowser/utils/docutils.py @@ -10,7 +10,8 @@ import inspect import os.path import collections import enum -from typing import Any, Callable, MutableMapping, Optional, List, Union +from typing import Any, Callable, Optional, List, Union +from collections.abc import MutableMapping import qutebrowser from qutebrowser.utils import log, utils diff --git a/qutebrowser/utils/javascript.py b/qutebrowser/utils/javascript.py index 9890be446..66470155a 100644 --- a/qutebrowser/utils/javascript.py +++ b/qutebrowser/utils/javascript.py @@ -4,7 +4,8 @@ """Utilities related to javascript interaction.""" -from typing import Sequence, Union +from typing import Union +from collections.abc import Sequence _InnerJsArgType = Union[None, str, bool, int, float] _JsArgType = Union[_InnerJsArgType, Sequence[_InnerJsArgType]] diff --git a/qutebrowser/utils/jinja.py b/qutebrowser/utils/jinja.py index d7c261942..9fcff7cd1 100644 --- a/qutebrowser/utils/jinja.py +++ b/qutebrowser/utils/jinja.py @@ -10,7 +10,8 @@ import posixpath import functools import contextlib import html -from typing import Any, Callable, FrozenSet, Iterator, List, Set, Tuple +from typing import Any, Callable, FrozenSet, List, Set, Tuple +from collections.abc import Iterator import jinja2 import jinja2.nodes diff --git a/qutebrowser/utils/log.py b/qutebrowser/utils/log.py index aa3ea4123..55e74cbf4 100644 --- a/qutebrowser/utils/log.py +++ b/qutebrowser/utils/log.py @@ -15,8 +15,9 @@ import warnings import json import inspect import argparse -from typing import (TYPE_CHECKING, Any, Iterator, Mapping, MutableSequence, +from typing import (TYPE_CHECKING, Any, Optional, Set, Tuple, Union, TextIO, Literal, cast) +from collections.abc import Iterator, Mapping, MutableSequence # NOTE: This is a Qt-free zone! All imports related to Qt logging should be done in # qutebrowser.utils.qtlog (see https://github.com/qutebrowser/qutebrowser/issues/7769). diff --git a/qutebrowser/utils/message.py b/qutebrowser/utils/message.py index 275ed2f3d..fe1dd16a9 100644 --- a/qutebrowser/utils/message.py +++ b/qutebrowser/utils/message.py @@ -10,7 +10,8 @@ import dataclasses import traceback -from typing import Any, Callable, Iterable, List, Union, Optional +from typing import Any, Callable, List, Union, Optional +from collections.abc import Iterable from qutebrowser.qt.core import pyqtSignal, pyqtBoundSignal, QObject diff --git a/qutebrowser/utils/objreg.py b/qutebrowser/utils/objreg.py index 8a3489d09..7d3df728a 100644 --- a/qutebrowser/utils/objreg.py +++ b/qutebrowser/utils/objreg.py @@ -7,8 +7,9 @@ import collections import functools -from typing import (TYPE_CHECKING, Any, Callable, MutableMapping, MutableSequence, - Optional, Sequence, Union) +from typing import (TYPE_CHECKING, Any, Callable, + Optional, Union) +from collections.abc import MutableMapping, MutableSequence, Sequence from qutebrowser.qt.core import QObject, QTimer from qutebrowser.qt.widgets import QApplication diff --git a/qutebrowser/utils/qtlog.py b/qutebrowser/utils/qtlog.py index 78b48ebee..215123f4a 100644 --- a/qutebrowser/utils/qtlog.py +++ b/qutebrowser/utils/qtlog.py @@ -10,7 +10,8 @@ import faulthandler import logging import sys import traceback -from typing import Iterator, Optional +from typing import Optional +from collections.abc import Iterator from qutebrowser.qt import core as qtcore from qutebrowser.utils import log diff --git a/qutebrowser/utils/qtutils.py b/qutebrowser/utils/qtutils.py index c1f05b78d..6efd8bbe1 100644 --- a/qutebrowser/utils/qtutils.py +++ b/qutebrowser/utils/qtutils.py @@ -18,8 +18,9 @@ import enum import pathlib import operator import contextlib -from typing import (Any, TYPE_CHECKING, BinaryIO, IO, Iterator, Literal, +from typing import (Any, TYPE_CHECKING, BinaryIO, IO, Literal, Optional, Union, Tuple, Protocol, cast, overload, TypeVar) +from collections.abc import Iterator from qutebrowser.qt import machinery, sip from qutebrowser.qt.core import (qVersion, QEventLoop, QDataStream, QByteArray, diff --git a/qutebrowser/utils/resources.py b/qutebrowser/utils/resources.py index 8d1dbfe10..c9e1c42a7 100644 --- a/qutebrowser/utils/resources.py +++ b/qutebrowser/utils/resources.py @@ -10,7 +10,8 @@ import contextlib import posixpath import pathlib import importlib.resources -from typing import Iterator, Iterable, Union, Dict +from typing import Union, Dict +from collections.abc import Iterator, Iterable if sys.version_info >= (3, 11): # pragma: no cover # https://github.com/python/cpython/issues/90276 diff --git a/qutebrowser/utils/standarddir.py b/qutebrowser/utils/standarddir.py index 1eb296e50..57e81ce19 100644 --- a/qutebrowser/utils/standarddir.py +++ b/qutebrowser/utils/standarddir.py @@ -11,7 +11,8 @@ import contextlib import enum import argparse import tempfile -from typing import Iterator, Optional, Dict +from typing import Optional, Dict +from collections.abc import Iterator from qutebrowser.qt.core import QStandardPaths from qutebrowser.qt.widgets import QApplication diff --git a/qutebrowser/utils/urlutils.py b/qutebrowser/utils/urlutils.py index 785569069..0fc2a262e 100644 --- a/qutebrowser/utils/urlutils.py +++ b/qutebrowser/utils/urlutils.py @@ -11,7 +11,8 @@ import ipaddress import posixpath import urllib.parse import mimetypes -from typing import Optional, Tuple, Union, Iterable, cast +from typing import Optional, Tuple, Union, cast +from collections.abc import Iterable from qutebrowser.qt import machinery from qutebrowser.qt.core import QUrl, QUrlQuery diff --git a/qutebrowser/utils/usertypes.py b/qutebrowser/utils/usertypes.py index d61d4aba7..c8e92bf17 100644 --- a/qutebrowser/utils/usertypes.py +++ b/qutebrowser/utils/usertypes.py @@ -10,7 +10,8 @@ import enum import time import dataclasses import logging -from typing import Optional, Sequence, TypeVar, Union +from typing import Optional, TypeVar, Union +from collections.abc import Sequence from qutebrowser.qt.core import pyqtSignal, pyqtSlot, QObject, QTimer from qutebrowser.qt.core import QUrl diff --git a/qutebrowser/utils/utils.py b/qutebrowser/utils/utils.py index 12a9c83b1..126075b5a 100644 --- a/qutebrowser/utils/utils.py +++ b/qutebrowser/utils/utils.py @@ -19,9 +19,10 @@ import contextlib import shlex import sysconfig import mimetypes -from typing import (Any, Callable, IO, Iterator, - Optional, Sequence, Tuple, List, Type, Union, +from typing import (Any, Callable, IO, + Optional, Tuple, List, Type, Union, TypeVar, Protocol) +from collections.abc import Iterator, Sequence from qutebrowser.qt.core import QUrl, QVersionNumber, QRect, QPoint from qutebrowser.qt.gui import QClipboard, QDesktopServices diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py index 298eba9ca..46d27d537 100644 --- a/qutebrowser/utils/version.py +++ b/qutebrowser/utils/version.py @@ -19,8 +19,9 @@ import getpass import functools import dataclasses import importlib.metadata -from typing import (Mapping, Optional, Sequence, Tuple, ClassVar, Dict, Any, +from typing import (Optional, Tuple, ClassVar, Dict, Any, TYPE_CHECKING) +from collections.abc import Mapping, Sequence from qutebrowser.qt import machinery from qutebrowser.qt.core import PYQT_VERSION_STR diff --git a/scripts/dev/build_release.py b/scripts/dev/build_release.py index ed653316b..af44c7f6f 100755 --- a/scripts/dev/build_release.py +++ b/scripts/dev/build_release.py @@ -20,7 +20,8 @@ import platform import collections import dataclasses import re -from typing import Iterable, List, Optional +from typing import List, Optional +from collections.abc import Iterable try: import winreg diff --git a/scripts/dev/misc_checks.py b/scripts/dev/misc_checks.py index 4b838b5fe..497c5f1f0 100644 --- a/scripts/dev/misc_checks.py +++ b/scripts/dev/misc_checks.py @@ -15,7 +15,8 @@ import subprocess import tokenize import traceback import pathlib -from typing import List, Iterator, Optional, Tuple +from typing import List, Optional, Tuple +from collections.abc import Iterator REPO_ROOT = pathlib.Path(__file__).resolve().parents[2] sys.path.insert(0, str(REPO_ROOT)) diff --git a/tests/unit/components/test_braveadblock.py b/tests/unit/components/test_braveadblock.py index 54ef85115..197687d1d 100644 --- a/tests/unit/components/test_braveadblock.py +++ b/tests/unit/components/test_braveadblock.py @@ -5,7 +5,8 @@ import pathlib import logging import csv -from typing import Iterable, Tuple +from typing import Tuple +from collections.abc import Iterable from qutebrowser.qt.core import QUrl