Skip to content

Commit 64329c9

Browse files
committed
✨ load Builder/Exporter from entry_point
1 parent b38e1f0 commit 64329c9

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/nonebot_plugin_alconna/uniseg/adapters/__init__.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from typing import TYPE_CHECKING, cast
77

88
from nonebot import get_adapters
9+
from importlib_metadata import entry_points
910

1011
from ..constraint import SupportAdapter
1112

@@ -26,6 +27,21 @@
2627
except Exception as e: # noqa: PERF203
2728
warn(f"Failed to import uniseg adapter {name}: {e}", RuntimeWarning, 15)
2829

30+
# Load adapters from entry points
31+
points = entry_points().select(group="n-p-alc.uniseg.adapters")
32+
for entry_point in points.names:
33+
try:
34+
module = points[entry_point].load()
35+
if isinstance(module, type):
36+
loader = cast("BaseLoader", module())
37+
loaders[loader.get_adapter().value] = loader
38+
else:
39+
loader = cast("BaseLoader", module.Loader())
40+
loaders[loader.get_adapter().value] = loader
41+
except Exception as e: # noqa: PERF203
42+
warn(f"Failed to import uniseg adapter {entry_point}: {e}", RuntimeWarning, 15)
43+
44+
2945
EXPORTER_MAPPING: dict[str, "MessageExporter"] = {
3046
SupportAdapter.nonebug.value: loaders[SupportAdapter.nonebug.value].get_exporter()
3147
}

0 commit comments

Comments
 (0)