2121# along with this program; if not, see <http://www.gnu.org/licenses/>.
2222############################################################################
2323
24+ from __future__ import annotations
25+
2426import sys
2527import os
2628import re
3133
3234import PyTango
3335
34- try :
35- import pkg_resources
36- except ImportError :
37- pkg_resources = None
38-
3936
4037ModDepend = ["Core" , "Espia" ]
4138Debug = 0
@@ -428,10 +425,29 @@ def _import(name):
428425 return sys .modules [name ]
429426
430427
431- def get_entry_point (group , name ):
432- # try to find an extension using setuptools entry points
433- if pkg_resources is None :
428+ def get_entry_point (group : str , name : str ):
429+ """
430+ Try to find an extension using entry points.
431+ """
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 :
434449 return None
450+
435451 entry_points = tuple (pkg_resources .iter_entry_points (group , name ))
436452 if not entry_points :
437453 return None
@@ -440,7 +456,7 @@ def get_entry_point(group, name):
440456 return entry_points [0 ]
441457
442458
443- def get_camera_module (name ):
459+ def get_camera_module (name : str ):
444460 """Returns the python module for the given camera type"""
445461 entry_point = get_entry_point ("Lima_tango_camera" , name )
446462 if entry_point is None :
@@ -450,7 +466,7 @@ def get_camera_module(name):
450466 return entry_point .load ()
451467
452468
453- def get_plugin_module (name ):
469+ def get_plugin_module (name : str ):
454470 """Returns the python module for the given plugin type"""
455471 entry_point = get_entry_point ("Lima_tango_plugin" , name )
456472 if entry_point is None :
0 commit comments