From 7b5d6d595ceef81e940beddc8f610286fde7c425 Mon Sep 17 00:00:00 2001 From: Dmitry Kropachev Date: Sun, 7 Dec 2025 03:43:41 -0400 Subject: [PATCH] Drop pkg_resources dependency pkg_resources is going to be removed from setuptools in 81 version. --- ccm | 27 +++++++++++++++++++++++++-- requirements.txt | 2 +- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/ccm b/ccm index 8b191cb6..690a9921 100755 --- a/ccm +++ b/ccm @@ -20,7 +20,6 @@ import os import sys import warnings -import pkg_resources from six import print_ from ccmlib import common @@ -29,6 +28,14 @@ from ccmlib.cmds.common import get_command from ccmlib.remote import (PARAMIKO_IS_AVAILABLE, execute_ccm_remotely, get_remote_options, get_remote_usage) +try: # Python 3.8+ + from importlib.metadata import entry_points +except ImportError: # pragma: no cover - fallback for older Pythons + try: + from importlib_metadata import entry_points # type: ignore + except ImportError: + entry_points = None + def print_subcommand_usage(kind): for cmd_name in (cluster_cmds if kind.lower() == 'cluster' else node_cmds).commands(): @@ -58,7 +65,23 @@ def print_global_usage(): exit(1) -for entry_point in pkg_resources.iter_entry_points(group='ccm_extension'): +def _iter_ccm_extension_entry_points(): + if entry_points is None: + warnings.warn("importlib.metadata not available; skipping ccm_extension entry points") + return [] + + eps = entry_points() + + if hasattr(eps, 'select'): # modern importlib.metadata + return eps.select(group='ccm_extension') + + if isinstance(eps, dict): # older importlib_metadata returns dict + return eps.get('ccm_extension', []) + + return [ep for ep in eps if getattr(ep, 'group', None) == 'ccm_extension'] + + +for entry_point in _iter_ccm_extension_entry_points(): entry_point.load()() common.check_win_requirements() diff --git a/requirements.txt b/requirements.txt index c8153c02..2086fbe1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,4 +18,4 @@ pyYaml<5.4; python_version < '3' pyYaml; python_version >= '3' six >=1.4.1 psutil - +importlib_metadata>=0.23; python_version < '3.8'