--- Begin Message ---
Package: release.debian.org
Severity: normal
X-Debbugs-Cc: ipyparal...@packages.debian.org
Control: affects -1 + src:ipyparallel
User: release.debian....@packages.debian.org
Usertags: unblock
Please unblock package ipyparallel
I'm tryng to get old python3-entrypoints
out of Trixie and we are almost there.
There's an AUTORM pending for a lot of other
packages and I'd like to get this settled.
[ Reason ]
ipyparallel autopkgtest is quite flaky as usual
[ Impact ]
(What is the impact for the user if the unblock isn't granted?)
One more confusing old library ends up in Trixie
[ Tests ]
autopkgtest succeeded for most architectures
[ Risks ]
Patch from upstream; 1 dependency dropped.
[ Checklist ]
[x] all changes are documented in the d/changelog
[x] I reviewed all changes and I approve them
[x] attach debdiff against the package in testing
[ Other info ]
python3-entrypoints reverse deps in Testing:
python3-ipyparallel
python3-papermill
python3-testbook
unblock ipyparallel/8.8.0-5
diff -Nru ipyparallel-8.8.0/debian/changelog ipyparallel-8.8.0/debian/changelog
--- ipyparallel-8.8.0/debian/changelog 2024-10-30 15:15:26.000000000 +0100
+++ ipyparallel-8.8.0/debian/changelog 2025-05-14 00:45:36.000000000 +0200
@@ -1,3 +1,10 @@
+ipyparallel (8.8.0-5) unstable; urgency=medium
+
+ * Team upload.
+ * Remove usage of python3-entrypoints using upstream patch.
+
+ -- Alexandre Detiste <tc...@debian.org> Wed, 14 May 2025 00:45:36 +0200
+
ipyparallel (8.8.0-4) unstable; urgency=medium
* Team upload.
diff -Nru ipyparallel-8.8.0/debian/control ipyparallel-8.8.0/debian/control
--- ipyparallel-8.8.0/debian/control 2024-10-30 13:10:18.000000000 +0100
+++ ipyparallel-8.8.0/debian/control 2025-05-14 00:45:36.000000000 +0200
@@ -17,7 +17,6 @@
python3-dateutil,
python3-decorator,
python3-doc <!nodoc>,
- python3-entrypoints,
python3-hatchling,
python3-ipykernel,
python3-ipython,
diff -Nru
ipyparallel-8.8.0/debian/patches/7989cac274a8451dce05e9ff8f258d6da992a032.patch
ipyparallel-8.8.0/debian/patches/7989cac274a8451dce05e9ff8f258d6da992a032.patch
---
ipyparallel-8.8.0/debian/patches/7989cac274a8451dce05e9ff8f258d6da992a032.patch
1970-01-01 01:00:00.000000000 +0100
+++
ipyparallel-8.8.0/debian/patches/7989cac274a8451dce05e9ff8f258d6da992a032.patch
2025-05-14 00:45:36.000000000 +0200
@@ -0,0 +1,169 @@
+From 7989cac274a8451dce05e9ff8f258d6da992a032 Mon Sep 17 00:00:00 2001
+From: Min RK <benjami...@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",
diff -Nru ipyparallel-8.8.0/debian/patches/series
ipyparallel-8.8.0/debian/patches/series
--- ipyparallel-8.8.0/debian/patches/series 2024-10-30 15:14:49.000000000
+0100
+++ ipyparallel-8.8.0/debian/patches/series 2025-05-14 00:45:36.000000000
+0200
@@ -4,3 +4,4 @@
mark_async_test_xfail.patch
fix_docs
0006-Define-asyncio_default_fixture_loop_scope-for-pytest.patch
+7989cac274a8451dce05e9ff8f258d6da992a032.patch
--- End Message ---