]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: fix importlib.metadata compat 59739/head
authorPeter Sabaini <peter.sabaini@canonical.com>
Wed, 11 Sep 2024 14:56:50 +0000 (16:56 +0200)
committerPeter Sabaini <peter.sabaini@canonical.com>
Tue, 19 Nov 2024 17:37:27 +0000 (18:37 +0100)
The importlib.metadata library removed older shims in releases >5.0.0
where EntryPoints objects use .select() instead of dict-like access.

Fixes: https://tracker.ceph.com/issues/68032
Signed-off-by: Peter Sabaini <peter.sabaini@canonical.com>
src/ceph-volume/ceph_volume/main.py

index f8eca65ec497c820267adb2112e55f7ca32888e1..4f27f429e89e2c23640f6d15ddc1f1f1bcffbcb5 100644 (file)
@@ -11,8 +11,16 @@ try:
     from importlib.metadata import entry_points
 
     def get_entry_points(group: str):  # type: ignore
-        return entry_points().get(group, [])  # type: ignore
+        eps = entry_points()
+        if hasattr(eps, 'select'):
+            # New importlib.metadata uses .select()
+            return eps.select(group=group)
+        else:
+            # Fallback to older EntryPoints that returns dicts
+            return eps.get(group, [])  # type: ignore
+
 except ImportError:
+    # Fallback to `pkg_resources` for older versions
     from pkg_resources import iter_entry_points as entry_points  # type: ignore
 
     def get_entry_points(group: str):  # type: ignore