summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.asciidoc2
-rw-r--r--misc/requirements/requirements-qutebrowser.txt-raw1
-rw-r--r--qutebrowser/utils/utils.py12
-rw-r--r--qutebrowser/utils/version.py1
-rw-r--r--requirements.txt1
-rw-r--r--scripts/dev/recompile_requirements.py1
-rwxr-xr-xsetup.py3
-rw-r--r--tests/unit/utils/test_version.py2
8 files changed, 18 insertions, 5 deletions
diff --git a/README.asciidoc b/README.asciidoc
index 5437036be..6ab9784a8 100644
--- a/README.asciidoc
+++ b/README.asciidoc
@@ -131,6 +131,8 @@ The following software and libraries are required to run qutebrowser:
* http://pygments.org/[pygments]
* https://github.com/yaml/pyyaml[PyYAML]
* https://www.attrs.org/[attrs]
+* https://importlib-resources.readthedocs.io/[importlib_resources] (on python
+ 3.8 or older)
The following libraries are optional:
diff --git a/misc/requirements/requirements-qutebrowser.txt-raw b/misc/requirements/requirements-qutebrowser.txt-raw
index 4678b9ce5..0926b74e6 100644
--- a/misc/requirements/requirements-qutebrowser.txt-raw
+++ b/misc/requirements/requirements-qutebrowser.txt-raw
@@ -4,3 +4,4 @@ pyPEG2
PyYAML
colorama
attrs
+importlib_resources
diff --git a/qutebrowser/utils/utils.py b/qutebrowser/utils/utils.py
index a991b2503..ab85c4d06 100644
--- a/qutebrowser/utils/utils.py
+++ b/qutebrowser/utils/utils.py
@@ -42,6 +42,11 @@ from typing import (Any, Callable, IO, Iterator, Optional, Sequence, Tuple, Type
from PyQt5.QtCore import QUrl, QVersionNumber
from PyQt5.QtGui import QClipboard, QDesktopServices
from PyQt5.QtWidgets import QApplication
+# We cannot use the stdlib version on 3.7-3.8 because we need the files() API.
+if sys.version_info >= (3, 9):
+ import importlib.resources as importlib_resources
+else:
+ import importlib_resources
import pkg_resources
import yaml
try:
@@ -216,13 +221,12 @@ def read_file(filename: str, binary: bool = False) -> Any:
with open(fn, 'r', encoding='utf-8') as f:
return f.read()
else:
- data = pkg_resources.resource_string(
- qutebrowser.__name__, filename)
+ p = importlib_resources.files(qutebrowser) / filename
if binary:
- return data
+ return p.read_bytes()
- return data.decode('UTF-8')
+ return p.read_text()
def resource_filename(filename: str) -> str:
diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py
index 64efe4c4f..09aeb5a13 100644
--- a/qutebrowser/utils/version.py
+++ b/qutebrowser/utils/version.py
@@ -263,6 +263,7 @@ def _module_versions() -> Sequence[str]:
('pygments', ['__version__']),
('yaml', ['__version__']),
('attr', ['__version__']),
+ ('importlib_resources', []),
('PyQt5.QtWebEngineWidgets', []),
('PyQt5.QtWebEngine', ['PYQT_WEBENGINE_VERSION_STR']),
('PyQt5.QtWebKitWidgets', []),
diff --git a/requirements.txt b/requirements.txt
index f7a78d28d..5cd5f9c10 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,6 +2,7 @@
attrs==20.3.0
colorama==0.4.4
+importlib-resources==3.3.0
Jinja2==2.11.2
MarkupSafe==1.1.1
Pygments==2.7.3
diff --git a/scripts/dev/recompile_requirements.py b/scripts/dev/recompile_requirements.py
index 4caa26667..3b7c227f2 100644
--- a/scripts/dev/recompile_requirements.py
+++ b/scripts/dev/recompile_requirements.py
@@ -174,6 +174,7 @@ CHANGELOG_URLS = {
'mypy-extensions': 'https://github.com/python/mypy_extensions/commits/master',
'pyroma': 'https://github.com/regebro/pyroma/blob/master/HISTORY.txt',
'pyPEG2': None,
+ 'importlib-resources': 'https://importlib-resources.readthedocs.io/en/latest/changelog%20%28links%29.html',
}
diff --git a/setup.py b/setup.py
index 1169eae81..137b514ca 100755
--- a/setup.py
+++ b/setup.py
@@ -71,7 +71,8 @@ try:
entry_points={'gui_scripts':
['qutebrowser = qutebrowser.qutebrowser:main']},
zip_safe=True,
- install_requires=['pypeg2', 'jinja2', 'pygments', 'PyYAML', 'attrs'],
+ install_requires=['pypeg2', 'jinja2', 'pygments', 'PyYAML', 'attrs',
+ 'importlib_resources>=1.1.0; python_version < "3.9"'],
python_requires='>=3.6',
name='qutebrowser',
version=_get_constant('version'),
diff --git a/tests/unit/utils/test_version.py b/tests/unit/utils/test_version.py
index 593557ae8..922692fdd 100644
--- a/tests/unit/utils/test_version.py
+++ b/tests/unit/utils/test_version.py
@@ -561,11 +561,13 @@ class ImportFake:
('pygments', True),
('yaml', True),
('attr', True),
+ ('importlib_resources', True),
('PyQt5.QtWebEngineWidgets', True),
('PyQt5.QtWebEngine', True),
('PyQt5.QtWebKitWidgets', True),
])
self.no_version_attribute = ['sip',
+ 'importlib_resources',
'PyQt5.QtWebEngineWidgets',
'PyQt5.QtWebKitWidgets',
'PyQt5.QtWebEngine']