File: 7989cac274a8451dce05e9ff8f258d6da992a032.patch

package info (click to toggle)
ipyparallel 8.8.0-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 12,412 kB
  • sloc: python: 21,991; javascript: 267; makefile: 29; sh: 28
file content (169 lines) | stat: -rw-r--r-- 6,027 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
From 7989cac274a8451dce05e9ff8f258d6da992a032 Mon Sep 17 00:00:00 2001
From: Min RK <benjaminrk@gmail.com>
Date: Tue, 2 Jul 2024 14:09:42 +0200
Subject: [PATCH] trade entrypoints for importlib_metadata

--- a/ipyparallel/cluster/app.py
+++ b/ipyparallel/cluster/app.py
@@ -11,7 +11,6 @@
 import sys
 from functools import partial
 
-import entrypoints
 import zmq
 from IPython.core.profiledir import ProfileDir
 from traitlets import Bool, CaselessStrEnum, Dict, Integer, List, default
@@ -20,6 +19,7 @@
 from ipyparallel._version import __version__
 from ipyparallel.apps.baseapp import BaseParallelApplication, base_aliases, base_flags
 from ipyparallel.cluster import Cluster, ClusterManager, clean_cluster_files
+from ipyparallel.traitlets import entry_points
 from ipyparallel.util import abbreviate_profile_dir
 
 # -----------------------------------------------------------------------------
@@ -339,13 +339,14 @@
         launcher_classes = []
         for kind in ('controller', 'engine'):
             group_name = f'ipyparallel.{kind}_launchers'
-            group = entrypoints.get_group_named(group_name)
-            for key, value in group.items():
+            group = entry_points(group=group_name)
+            for entrypoint in group:
+                key = entrypoint.name
                 try:
-                    cls = value.load()
+                    cls = entrypoint.load()
                 except Exception as e:
                     self.log.error(
-                        f"Failed to load entrypoint {group_name}: {key} = {value}\n{e}"
+                        f"Failed to load entrypoint {group_name}: {key} = {entrypoint.value}\n{e}"
                     )
                 else:
                     launcher_classes.append(cls)
--- a/ipyparallel/cluster/launcher.py
+++ b/ipyparallel/cluster/launcher.py
@@ -23,7 +23,6 @@
 from tempfile import TemporaryDirectory
 from textwrap import indent
 
-import entrypoints
 import psutil
 from IPython.utils.path import ensure_dir_exists, get_home_dir
 from IPython.utils.text import EvalFormatter
@@ -42,6 +41,7 @@
 )
 from traitlets.config.configurable import LoggingConfigurable
 
+from ..traitlets import entry_points
 from ..util import shlex_join
 from ._winhpcjob import IPControllerJob, IPControllerTask, IPEngineSetJob, IPEngineTask
 
@@ -2533,16 +2533,16 @@
         group_name = 'ipyparallel.controller_launchers'
     else:
         raise ValueError(f"kind must be 'engine' or 'controller', not {kind!r}")
-    group = entrypoints.get_group_named(group_name)
+    group = entry_points(group=group_name)
     # make it case-insensitive
-    registry = {key.lower(): value for key, value in group.items()}
+    registry = {entrypoint.name.lower(): entrypoint for entrypoint in group}
     return registry[name.lower()].load()
 
 
 @lru_cache
 def abbreviate_launcher_class(cls):
     """Abbreviate a launcher class back to its entrypoint name"""
-    cls_key = f"{cls.__module__}.{cls.__name__}"
+    cls_key = f"{cls.__module__}:{cls.__name__}"
     # allow entrypoint_name attribute in case the definition module
     # is not the same as the 'import' module
     if getattr(cls, 'entrypoint_name', None):
@@ -2550,8 +2550,8 @@
 
     for kind in ('controller', 'engine'):
         group_name = f'ipyparallel.{kind}_launchers'
-        group = entrypoints.get_group_named(group_name)
-        for key, value in group.items():
-            if f"{value.module_name}.{value.object_name}" == cls_key:
-                return key.lower()
+        group = entry_points(group=group_name)
+        for entrypoint in group:
+            if entrypoint.value == cls_key:
+                return entrypoint.name.lower()
     return cls_key
--- a/ipyparallel/tests/test_launcher.py
+++ b/ipyparallel/tests/test_launcher.py
@@ -10,11 +10,11 @@
 import time
 from subprocess import Popen
 
-import entrypoints
 import pytest
 from traitlets.config import Config
 
 from ipyparallel.cluster import launcher as launcher_mod
+from ipyparallel.traitlets import entry_points
 
 # -------------------------------------------------------------------------------
 # TestCase Mixins
@@ -156,9 +156,10 @@
 @pytest.mark.parametrize("kind", ("controller", "engine"))
 def test_entrypoints(kind):
     group_name = f"ipyparallel.{kind}_launchers"
-    group = entrypoints.get_group_named(group_name)
+    group = entry_points(group=group_name)
     assert len(group) > 2
-    for key, entrypoint in group.items():
+    for entrypoint in group:
+        key = entrypoint.name
         # verify entrypoints are valid
         cls = entrypoint.load()
 
--- a/ipyparallel/traitlets.py
+++ b/ipyparallel/traitlets.py
@@ -1,6 +1,8 @@
 """Custom ipyparallel trait types"""
 
-import entrypoints
+import sys
+from importlib.metadata import entry_points
+
 from traitlets import List, TraitError, Type
 
 
@@ -24,9 +26,7 @@
         chunks = [self._original_help]
         chunks.append("Currently installed: ")
         for key, entry_point in self.load_entry_points().items():
-            chunks.append(
-                f"  - {key}: {entry_point.module_name}.{entry_point.object_name}"
-            )
+            chunks.append(f"  - {key}: {entry_point.value}")
         return '\n'.join(chunks)
 
     @help.setter
@@ -35,10 +35,10 @@
 
     def load_entry_points(self):
         """Load my entry point group"""
-        # load the group
-        group = entrypoints.get_group_named(self.entry_point_group)
-        # make it case-insensitive
-        return {key.lower(): value for key, value in group.items()}
+        return {
+            entry_point.name.lower(): entry_point
+            for entry_point in entry_points(group=self.entry_point_group)
+        }
 
     def validate(self, obj, value):
         if isinstance(value, str):
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -36,7 +36,6 @@
 urls = {Homepage = "https://ipython.org"}
 requires-python = ">=3.8"
 dependencies = [
-    "entrypoints",
     "decorator",
     "pyzmq>=18",
     "traitlets>=4.3",