From 523ede6a82ad06ad729341b5feb743798ca02ee8 Mon Sep 17 00:00:00 2001 From: David Brochart Date: Thu, 24 Jul 2025 14:10:21 +0200 Subject: [PATCH 1/3] Remove traitlets dependency --- comm/base_comm.py | 15 ++++++++++++--- pyproject.toml | 3 --- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/comm/base_comm.py b/comm/base_comm.py index 151e85f..39aea03 100644 --- a/comm/base_comm.py +++ b/comm/base_comm.py @@ -9,8 +9,6 @@ import typing as t import uuid -from traitlets.utils.importstring import import_item - import comm if t.TYPE_CHECKING: @@ -212,7 +210,18 @@ def register_target(self, target_name: str, f: CommTargetCallback | str) -> None f can be a Python callable or an import string for one. """ if isinstance(f, str): - f = import_item(f) + parts = f.rsplit(".", 1) + if len(parts) == 2: + # called with 'foo.bar....' + package, obj = parts + module = __import__(package, fromlist=[obj]) + try: + f = getattr(module, obj) + except AttributeError as e: + raise ImportError("No module named %s" % obj) from e + else: + # called with un-dotted string + f = __import__(parts[0]) self.targets[target_name] = t.cast(CommTargetCallback, f) diff --git a/pyproject.toml b/pyproject.toml index a7d441d..3b9c7da 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,9 +23,6 @@ classifiers = [ "Programming Language :: Python", "Programming Language :: Python :: 3", ] -dependencies = [ - "traitlets>=4", -] [project.optional-dependencies] test = [ From 973761cbe269cf946b8b9a08d6a50d1e48fa579a Mon Sep 17 00:00:00 2001 From: David Brochart Date: Thu, 24 Jul 2025 14:18:33 +0200 Subject: [PATCH 2/3] lint --- comm/base_comm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/comm/base_comm.py b/comm/base_comm.py index 39aea03..dfad501 100644 --- a/comm/base_comm.py +++ b/comm/base_comm.py @@ -218,7 +218,7 @@ def register_target(self, target_name: str, f: CommTargetCallback | str) -> None try: f = getattr(module, obj) except AttributeError as e: - raise ImportError("No module named %s" % obj) from e + raise ImportError(f"No module named {obj}") from e else: # called with un-dotted string f = __import__(parts[0]) From 5127a001146b51baf708096b837561f7a0e257a9 Mon Sep 17 00:00:00 2001 From: David Brochart Date: Thu, 24 Jul 2025 14:25:27 +0200 Subject: [PATCH 3/3] again --- comm/base_comm.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/comm/base_comm.py b/comm/base_comm.py index dfad501..92aa6d8 100644 --- a/comm/base_comm.py +++ b/comm/base_comm.py @@ -218,7 +218,8 @@ def register_target(self, target_name: str, f: CommTargetCallback | str) -> None try: f = getattr(module, obj) except AttributeError as e: - raise ImportError(f"No module named {obj}") from e + error_msg = f"No module named {obj}" + raise ImportError(error_msg) from e else: # called with un-dotted string f = __import__(parts[0])