Skip to content

Commit f0baeef

Browse files
vallsvsdebionne
authored andcommitted
Rework entry points with importlib
Fix UserWarning: pkg_resources is deprecated as an API
1 parent bc7474c commit f0baeef

3 files changed

Lines changed: 47 additions & 14 deletions

File tree

Lima/Server/EnvHelper.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,6 @@
3333

3434
import PyTango
3535

36-
try:
37-
import pkg_resources
38-
except ImportError:
39-
pkg_resources = None
40-
4136

4237
ModDepend = ["Core", "Espia"]
4338
Debug = 0
@@ -434,8 +429,25 @@ def get_entry_point(group: str, name: str):
434429
"""
435430
Try to find an extension using entry points.
436431
"""
437-
if pkg_resources is None:
432+
try:
433+
from importlib.metadata import entry_points
434+
except ImportError:
435+
pass
436+
else:
437+
eps = entry_points()
438+
plugins = eps.select(group=group, name=name)
439+
if not plugins:
440+
return None
441+
elif len(plugins) > 1:
442+
raise ValueError("found more than one entry point matching {}".format(name))
443+
return plugins[0]
444+
445+
# Here is the old way to import plugins
446+
try:
447+
import pkg_resources
448+
except ImportError:
438449
return None
450+
439451
entry_points = tuple(pkg_resources.iter_entry_points(group, name))
440452
if not entry_points:
441453
return None

Lima/Server/camera/__init__.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,24 @@ def _init_module():
3636
if subdir:
3737
base = "%s.%s" % (subdir, base)
3838
cameras.append(base)
39+
40+
# New way to import entry points
3941
try:
40-
import pkg_resources
42+
from importlib.metadata import entry_points
4143
except ImportError:
42-
pass
44+
# Old way to import entry points
45+
try:
46+
import pkg_resources
47+
except ImportError:
48+
pass
49+
else:
50+
for ep in pkg_resources.iter_entry_points("Lima_tango_camera"):
51+
cameras.append(ep.name)
4352
else:
44-
for ep in pkg_resources.iter_entry_points("Lima_tango_camera"):
45-
cameras.append(ep.name)
53+
eps = entry_points()
54+
for entry_point in eps.select(group="Lima_tango_camera"):
55+
cameras.append(entry_point.value)
56+
4657
return cameras
4758

4859

Lima/Server/plugins/__init__.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,23 @@ def _init_module() -> list[str]:
3838
if subdir:
3939
base = "%s.%s" % (subdir, base)
4040
plugins.append(base)
41+
42+
# New way to import entry points
4143
try:
42-
import pkg_resources
44+
from importlib.metadata import entry_points
4345
except ImportError:
44-
pass
46+
# Old way to import entry points
47+
try:
48+
import pkg_resources
49+
except ImportError:
50+
pass
51+
else:
52+
for ep in pkg_resources.iter_entry_points("Lima_tango_plugin"):
53+
plugins.append(ep.name)
4554
else:
46-
for ep in pkg_resources.iter_entry_points("Lima_tango_plugin"):
47-
plugins.append(ep.name)
55+
eps = entry_points()
56+
for entry_point in eps.select(group="Lima_tango_plugin"):
57+
plugins.append(entry_point.value)
4858

4959
return plugins
5060

0 commit comments

Comments
 (0)