diff --git a/catkin_tools/commands/catkin.py b/catkin_tools/commands/catkin.py index d7dc4df5..02676d98 100644 --- a/catkin_tools/commands/catkin.py +++ b/catkin_tools/commands/catkin.py @@ -13,7 +13,6 @@ # limitations under the License. import argparse -import functools import importlib.metadata import os import sys @@ -31,20 +30,15 @@ CATKIN_COMMAND_VERB_GROUP = 'catkin_tools.commands.catkin.verbs' -@functools.lru_cache(maxsize=None) -def _get_verb_entrypoints(): - return list(entry_points(group=CATKIN_COMMAND_VERB_GROUP)) - - def list_verbs(): verbs = [] - for entry_point in _get_verb_entrypoints(): + for entry_point in entry_points(group=CATKIN_COMMAND_VERB_GROUP): verbs.append(entry_point.name) return verbs def load_verb_description(verb_name): - for entry_point in _get_verb_entrypoints(): + for entry_point in entry_points(group=CATKIN_COMMAND_VERB_GROUP): if entry_point.name == verb_name: return entry_point.load() diff --git a/catkin_tools/utils.py b/catkin_tools/utils.py index e94c3956..66b7952d 100644 --- a/catkin_tools/utils.py +++ b/catkin_tools/utils.py @@ -14,15 +14,19 @@ import os import sys +import functools -if sys.version_info >= (3, 10): - from importlib.metadata import entry_points -else: - import importlib.metadata - def entry_points(*, group): - for ep in importlib.metadata.entry_points().get(group, []): - yield ep +def entry_points(*, group): + @functools.lru_cache(maxsize=None) + def _entry_points(): + from importlib.metadata import entry_points + return entry_points() + + if sys.version_info >= (3, 10): + return _entry_points().select(group=group) + else: + return _entry_points().get(group, []) def which(program):