diff --git a/comm/base_comm.py b/comm/base_comm.py index 151e85f..92aa6d8 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,19 @@ 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: + error_msg = f"No module named {obj}" + raise ImportError(error_msg) 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 = [