This is an automated email from the ASF dual-hosted git repository.

mck pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra-ccm.git

commit 0b19c8eef37db2e11ecf5b27c42c883be88830ce
Author: Dmitry Kropachev <[email protected]>
AuthorDate: Sun Dec 7 03:43:41 2025 -0400

    Drop pkg_resources dependency
    
    pkg_resources is going to be removed from setuptools in 81 version.
    
     patch by Dmitry Kropachev; reviewed by Mick Semb Wever for CASSANDRA-18321
---
 ccm              | 27 +++++++++++++++++++++++++--
 requirements.txt |  1 +
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/ccm b/ccm
index 8b191cb..690a992 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 45e818b..41d9472 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -19,3 +19,4 @@ pyYaml; python_version >= '3'
 six >=1.4.1
 psutil
 packaging<21
+importlib_metadata>=0.23; python_version < '3.8'


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to