Skip to content

Commit

Permalink
Remove deprecated pkg_resources, replace with importlib
Browse files Browse the repository at this point in the history
  • Loading branch information
marmarta committed May 7, 2024
1 parent 87a28b3 commit 173fd24
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 48 deletions.
21 changes: 10 additions & 11 deletions qubesappmenus/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import logging

import itertools
import pkg_resources
import importlib.resources
import xdg.BaseDirectory

import qubesadmin
Expand Down Expand Up @@ -345,11 +345,11 @@ def _appmenus_create_onedir(self, vm, force=False, refresh_cache=True,
anything_changed = False
directory_changed = False
directory_file = self._directory_path(vm, dispvm=dispvm)
data = importlib.resources.files(__name__).joinpath(
self.directory_template_name(vm, dispvm)).read_text()
if self.write_desktop_file(
vm,
pkg_resources.resource_string(
__name__,
self.directory_template_name(vm, dispvm)).decode(),
data,
directory_file,
dispvm):
anything_changed = True
Expand Down Expand Up @@ -384,12 +384,11 @@ def _appmenus_create_onedir(self, vm, force=False, refresh_cache=True,
if not dispvm:
vm_settings_fname = os.path.join(
appmenus_dir, self.settings_name(vm))
data = importlib.resources.files(__name__).joinpath(
'qubes-vm-settings.desktop.template').read_text()
if self.write_desktop_file(
vm,
pkg_resources.resource_string(
__name__,
'qubes-vm-settings.desktop.template'
).decode(),
data,
vm_settings_fname):
changed_appmenus.append(vm_settings_fname)
target_appmenus.append(os.path.basename(vm_settings_fname))
Expand Down Expand Up @@ -598,9 +597,9 @@ def appmenus_init(self, vm, src=None):
with open(
os.path.join(own_templates_dir, 'qubes-start.desktop'),
'wb') as qubes_start_f:
qubes_start_f.write(pkg_resources.resource_string(
__name__,
'qubes-start.desktop.template'))
data = importlib.resources.files(__name__).joinpath(
'qubes-start.desktop.template').read_bytes()
qubes_start_f.write(data)

source_whitelist_filename = 'vm-' + AppmenusSubdirs.whitelist
if src and ('default-menu-items' in src.features or os.path.exists(
Expand Down
9 changes: 5 additions & 4 deletions qubesappmenus/receive.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import os
import sys
import shlex
import pkg_resources
import importlib.resources
import qubesimgconverter

import qubesadmin.exc
Expand Down Expand Up @@ -305,9 +305,10 @@ def process_appmenus_templates(appmenusext, vm, appmenus):
if not os.path.exists(qubes_start_fname):
with open(qubes_start_fname, 'wb') as qubes_start_f:
vm.log.info("Creating Start")
qubes_start_f.write(pkg_resources.resource_string(
__name__,
'qubes-start.desktop.template'))
template_data = importlib.resources.files(

Check warning on line 308 in qubesappmenus/receive.py

View check run for this annotation

Codecov / codecov/patch

qubesappmenus/receive.py#L308

Added line #L308 was not covered by tests
__name__).joinpath(
'qubes-start.desktop.template').read_bytes()
qubes_start_f.write(template_data)

Check warning on line 311 in qubesappmenus/receive.py

View check run for this annotation

Codecov / codecov/patch

qubesappmenus/receive.py#L311

Added line #L311 was not covered by tests

# Do not create reserved Start entry
appmenus.pop('qubes-start', None)
Expand Down
89 changes: 56 additions & 33 deletions qubesappmenus/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
import unittest.mock

import logging
import pkg_resources
import importlib.resources
import qubesappmenus
import qubesappmenus.receive

Expand Down Expand Up @@ -247,16 +247,19 @@ def test_005_created_appvm(self):
self.ext.appmenus_init(appvm)
with open(os.path.join(self.ext.templates_dirs(tpl)[0],
'evince.desktop'), 'wb') as f:
f.write(pkg_resources.resource_string(__name__,
'test-data/evince.desktop.template'))
f.write(importlib.resources.files(
anchor=__name__).joinpath(
'test-data/evince.desktop.template').read_bytes())
self.ext.appmenus_create(appvm, refresh_cache=False)
self.ext.appicons_create(appvm)
evince_path = self._make_desktop_name(appvm, 'evince.desktop')
self.assertPathExists(evince_path)
with open(evince_path, 'rb') as f:
new_file_bytes = importlib.resources.files(
anchor=__name__).joinpath(
'test-data/evince.desktop').read_bytes()
self.assertEqual(
pkg_resources.resource_string(__name__,
'test-data/evince.desktop').replace(b'%BASEDIR%',
new_file_bytes.replace(b'%BASEDIR%',
qubesappmenus.basedir.encode()),
f.read()
)
Expand All @@ -279,27 +282,34 @@ def test_006_created_appvm_custom(self):
self.ext.appmenus_init(appvm)
with open(os.path.join(self.ext.templates_dirs(tpl)[0],
'evince.desktop'), 'wb') as f:
f.write(pkg_resources.resource_string(__name__,
'test-data/evince.desktop.template'))
evince_data = importlib.resources.files(
anchor=__name__).joinpath(
'test-data/evince.desktop.template').read_bytes()
f.write(evince_data)
self.ext.appmenus_create(appvm, refresh_cache=False)
self.ext.appicons_create(appvm)

with open(os.path.join(self.ext.templates_dirs(tpl)[0],
'xterm.desktop'), 'wb') as f:
f.write(pkg_resources.resource_string(__name__,
'test-data/xterm.desktop.template'))
xterm_data = importlib.resources.files(
anchor=__name__).joinpath(
'test-data/xterm.desktop.template').read_bytes()
f.write(xterm_data)
with open(os.path.join(self.ext.templates_dirs(tpl)[0],
'evince.desktop'), 'wb') as f:
f.write(pkg_resources.resource_string(__name__,
'test-data/evince.desktop.template').
replace(b'Document Viewer', b'Random Viewer'))
evince_data = importlib.resources.files(
anchor=__name__).joinpath(
'test-data/evince.desktop.template').read_bytes()
f.write(evince_data.replace(b'Document Viewer', b'Random Viewer'))
self.ext.appmenus_update(appvm)
evince_path = self._make_desktop_name(appvm, 'evince.desktop')
self.assertPathExists(evince_path)
with open(evince_path, 'rb') as f:
evince_data = importlib.resources.files(
anchor=__name__).joinpath(
'test-data/evince.desktop').read_bytes()
self.assertEqual(
pkg_resources.resource_string(__name__,
'test-data/evince.desktop')
evince_data
.replace(b'%BASEDIR%', qubesappmenus.basedir.encode())
.replace(b'Document Viewer', b'Random Viewer'),
f.read()
Expand All @@ -308,9 +318,10 @@ def test_006_created_appvm_custom(self):
xterm_path = self._make_desktop_name(appvm, 'xterm.desktop')
self.assertPathExists(xterm_path)
with open(xterm_path, 'rb') as f:
self.assertEqual(
pkg_resources.resource_string(__name__,
'test-data/xterm.desktop')
xterm_data = importlib.resources.files(
anchor=__name__).joinpath(
'test-data/xterm.desktop').read_bytes()
self.assertEqual(xterm_data
.replace(b'%BASEDIR%', qubesappmenus.basedir.encode()),
f.read()
)
Expand All @@ -335,8 +346,10 @@ def test_007_created_dispvm(self):
self.ext.appmenus_init(appvm)
with open(os.path.join(self.ext.templates_dirs(tpl)[0],
'evince.desktop'), 'wb') as f:
f.write(pkg_resources.resource_string(__name__,
'test-data/evince.desktop.template'))
evince_data = importlib.resources.files(
anchor=__name__).joinpath(
'test-data/evince.desktop.template').read_bytes()
f.write(evince_data)
self.ext.appmenus_create(appvm, refresh_cache=False)
self.ext.appicons_create(appvm)
appmenus_dir = self.ext.appmenus_dir(appvm)
Expand Down Expand Up @@ -386,8 +399,8 @@ class PopenMockup(object):
pass
self.assertEqual(service, 'qubes.GetAppmenus')
p = PopenMockup()
p.stdout = pkg_resources.resource_stream(__name__,
'test-data/appmenus.input')
p.stdout = importlib.resources.files(
anchor=__name__).joinpath('test-data/appmenus.input').open(mode='rb')
p.wait = lambda: None
p.returncode = 0
return p
Expand Down Expand Up @@ -509,8 +522,10 @@ def test_120_create_appvm(self, mock_subprocess):
old_path = os.path.join(self.ext.templates_dirs(tpl)[0],
'evince.desktop')
with open(old_path, 'wb') as f:
f.write(pkg_resources.resource_string(__name__,
'test-data/evince.desktop.template'))
evince_data = importlib.resources.files(
anchor=__name__).joinpath(
'test-data/evince.desktop.template').read_bytes()
f.write(evince_data)
appvm = TestVM('test-inst-app',
klass='AppVM',
template=tpl,
Expand All @@ -536,10 +551,12 @@ def test_120_create_appvm(self, mock_subprocess):
evince_path = self._make_desktop_name(appvm, 'evince.desktop')
self.assertPathExists(evince_path)
with open(evince_path, 'rb') as f:
evince_data = importlib.resources.files(
anchor=__name__).joinpath(
'test-data/evince.desktop').read_bytes()
self.assertEqual(
pkg_resources.resource_string(__name__,
'test-data/evince.desktop').replace(b'%BASEDIR%',
qubesappmenus.basedir.encode()),
evince_data.replace(b'%BASEDIR%',
qubesappmenus.basedir.encode()),
f.read()
)

Expand Down Expand Up @@ -583,8 +600,10 @@ def test_121_create_appvm_with_whitelist(self, mock_subprocess):
self.ext.appmenus_init(tpl)
with open(os.path.join(self.ext.templates_dirs(tpl)[0],
'evince.desktop'), 'wb') as f:
f.write(pkg_resources.resource_string(__name__,
'test-data/evince.desktop.template'))
evince_data = importlib.resources.files(
anchor=__name__).joinpath(
'test-data/evince.desktop.template').read_bytes()
f.write(evince_data)
with open(os.path.join(self.basedir,
tpl.name,
'vm-whitelisted-appmenus.list'), 'wb') as f:
Expand All @@ -601,10 +620,12 @@ def test_121_create_appvm_with_whitelist(self, mock_subprocess):
evince_path = self._make_desktop_name(appvm, 'evince.desktop')
self.assertPathExists(evince_path)
with open(evince_path, 'rb') as f:
evince_data = importlib.resources.files(
anchor=__name__).joinpath(
'test-data/evince.desktop').read_bytes()
self.assertEqual(
pkg_resources.resource_string(__name__,
'test-data/evince.desktop').replace(b'%BASEDIR%',
qubesappmenus.basedir.encode()),
evince_data.replace(b'%BASEDIR%',
qubesappmenus.basedir.encode()),
f.read()
)

Expand Down Expand Up @@ -666,9 +687,11 @@ class PopenMockup(object):
'evince.desktop')
self.assertPathExists(evince_path)
with open(evince_path, 'rb') as f:
evince_data = importlib.resources.files(
anchor=__name__).joinpath(
'test-data/evince.desktop.template').read_bytes()
self.assertEqual(
pkg_resources.resource_string(__name__,
'test-data/evince.desktop.template'),
evince_data,
f.read()
)
self.assertCountEqual(self.appvm.log.mock_calls, [
Expand Down

0 comments on commit 173fd24

Please sign in to comment.