pkg_resources is deprecated, use migration guide in [1] to migrate to importlib.resources. Keep the Python 3.6 backwards compatibility. This also fixes the binman version test which failed for setuptools versions that print the deprecation warning. Change from __name__ to __package__ as with the transition from pkg_resources to importlib_resources using __name__ results in TypeErrors [2].
[1] https://importlib-resources.readthedocs.io/en/latest/migration.html [2] https://github.com/python/importlib_resources/issues/60 Reviewed-by: Bryan Brattlof <b...@ti.com> Signed-off-by: Yannic Moog <y.m...@phytec.de> --- Changes in v3: - replace __name__ with __package__ when trying to get package resources - Link to v2: https://lore.kernel.org/r/20250627-pkg_resoures-removal-v2-1-86b277b02...@phytec.de Changes in v2: - rebase on to next - Link to v1: https://lore.kernel.org/r/20250610-pkg_resoures-removal-v1-1-97a269446...@phytec.de --- tools/binman/control.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/binman/control.py b/tools/binman/control.py index af447d792a7f0e87bccb8e78b2df6fa093d320e6..1307222591de1688f8c7c2a3802833d13bf1e795 100644 --- a/tools/binman/control.py +++ b/tools/binman/control.py @@ -8,12 +8,11 @@ from collections import OrderedDict import glob try: - import importlib.resources + import importlib.resources as importlib_resources except ImportError: # pragma: no cover # for Python 3.6 import importlib_resources import os -import pkg_resources import re import sys @@ -96,7 +95,7 @@ def _ReadMissingBlobHelp(): msg = '' return tag, msg - my_data = pkg_resources.resource_string(__name__, 'missing-blob-help') + my_data = importlib_resources.files(__package__).joinpath('missing-blob-help').read_bytes() re_tag = re.compile(r"^([-\.a-z0-9]+):$") result = {} tag = None @@ -151,8 +150,9 @@ def GetEntryModules(include_testing=True): Returns: Set of paths to entry class filenames """ - glob_list = pkg_resources.resource_listdir(__name__, 'etype') - glob_list = [fname for fname in glob_list if fname.endswith('.py')] + entries = importlib_resources.files(__package__).joinpath('etype') + glob_list = [entry.name for entry in entries.iterdir() + if entry.name.endswith('.py') and entry.is_file()] return set([os.path.splitext(os.path.basename(item))[0] for item in glob_list if include_testing or '_testing' not in item]) @@ -831,7 +831,7 @@ def Binman(args): global state if args.full_help: - with importlib.resources.path('binman', 'README.rst') as readme: + with importlib_resources.path('binman', 'README.rst') as readme: tools.print_full_help(str(readme)) return 0 --- base-commit: 490ae8ceae2d5999c9de863e014e463f5c1495a6 change-id: 20250610-pkg_resoures-removal-17f922d2e64d Best regards, -- Yannic Moog <y.m...@phytec.de>