[PATCH v3] binman: migrate from pkg_resources to importlib

Yannic Moog y.moog at phytec.de
Tue Jul 1 07:45:37 CEST 2025


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 <bb at ti.com>
Signed-off-by: Yannic Moog <y.moog at 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-86b277b02552@phytec.de

Changes in v2:
- rebase on to next
- Link to v1: https://lore.kernel.org/r/20250610-pkg_resoures-removal-v1-1-97a269446d35@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.moog at phytec.de>



More information about the U-Boot mailing list