diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-04-13 09:37:57 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-04-13 10:16:19 +0200 |
commit | 075b6823b62c8b4b86957819110fd177b2acf4a4 (patch) | |
tree | c2ae9f843a2745e9a40adcfa5d74c0a33c960248 | |
parent | 5a048aedd93a39c44323fa8356431a3cd2513df0 (diff) | |
download | qutebrowser-075b6823b62c8b4b86957819110fd177b2acf4a4.tar.gz qutebrowser-075b6823b62c8b4b86957819110fd177b2acf4a4.zip |
Avoid module-level circular import
When running ua_fetch.py, websettings gets imported and fails:
$ python3 scripts/dev/ua_fetch.py
Traceback (most recent call last):
File ".../scripts/dev/ua_fetch.py", line 16, in <module>
import qutebrowser.config.websettings
File ".../qutebrowser/config/websettings.py", line 32, in <module>
from qutebrowser.config import config
File ".../qutebrowser/config/config.py", line 31, in <module>
from qutebrowser.config import configdata, configexc, configutils
File ".../qutebrowser/config/configdata.py", line 32, in <module>
from qutebrowser.config import configtypes
File ".../qutebrowser/config/configtypes.py", line 65, in <module>
from qutebrowser.utils import (standarddir, utils, qtutils, urlutils, urlmatch,
File ".../qutebrowser/utils/standarddir.py", line 33, in <module>
from qutebrowser.utils import log, debug, utils, version
File ".../qutebrowser/utils/version.py", line 529, in <module>
class WebEngineVersions:
File ".../qutebrowser/utils/version.py", line 597, in WebEngineVersions
def from_ua(cls, ua: websettings.UserAgent) -> 'WebEngineVersions':
AttributeError: partially initialized module 'qutebrowser.config.websettings' has no attribute 'UserAgent' (most likely due to a circular import)
-rw-r--r-- | qutebrowser/utils/version.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py index d1fcc8e32..2bac125ed 100644 --- a/qutebrowser/utils/version.py +++ b/qutebrowser/utils/version.py @@ -34,7 +34,8 @@ import datetime import getpass import functools import dataclasses -from typing import Mapping, Optional, Sequence, Tuple, ClassVar, Dict, cast +from typing import (Mapping, Optional, Sequence, Tuple, ClassVar, Dict, cast, + TYPE_CHECKING) from PyQt5.QtCore import PYQT_VERSION_STR, QLibraryInfo, qVersion @@ -58,7 +59,9 @@ import qutebrowser from qutebrowser.utils import log, utils, standarddir, usertypes, message, resources from qutebrowser.misc import objects, earlyinit, sql, httpclient, pastebin, elf from qutebrowser.browser import pdfjs -from qutebrowser.config import config, websettings +from qutebrowser.config import config +if TYPE_CHECKING: + from qutebrowser.config import websettings _LOGO = r''' ______ ,, @@ -594,7 +597,7 @@ class WebEngineVersions: return s @classmethod - def from_ua(cls, ua: websettings.UserAgent) -> 'WebEngineVersions': + def from_ua(cls, ua: 'websettings.UserAgent') -> 'WebEngineVersions': """Get the versions parsed from a user agent. This is the most reliable and "default" way to get this information (at least |