diff --git a/arclet/entari/plugin/model.py b/arclet/entari/plugin/model.py index 8e076ac..eadfc8c 100644 --- a/arclet/entari/plugin/model.py +++ b/arclet/entari/plugin/model.py @@ -17,7 +17,7 @@ from loguru import logger from satori.client import Account -from .service import plugin_service, PluginLifecycleService +from .service import PluginLifecycleService, plugin_service if TYPE_CHECKING: from ..event import Event @@ -189,7 +189,7 @@ def dispose(self): sys.modules.pop(self.module.__name__, None) delattr(self.module, "__plugin__") if self.subplugins: - subplugs = list(i.removeprefix(self.id)[1:] for i in self.subplugins) + subplugs = [i.removeprefix(self.id)[1:] for i in self.subplugins] subplugs = (subplugs[:3] + ["..."]) if len(subplugs) > 3 else subplugs logger.debug(f"disposing sub-plugin {', '.join(subplugs)} of {self.id}") for subplug in self.subplugins: diff --git a/arclet/entari/plugin/service.py b/arclet/entari/plugin/service.py index c1b7da7..8b6b944 100644 --- a/arclet/entari/plugin/service.py +++ b/arclet/entari/plugin/service.py @@ -28,26 +28,25 @@ def __init__(self, plugin_id: str): @property def available(self) -> bool: - return bool(plug := plugin_service.plugins.get(self.plugin_id)) and bool(plug._preparing or plug._running or plug._cleanup) + return bool(plug := plugin_service.plugins.get(self.plugin_id)) and bool( + plug._preparing or plug._running or plug._cleanup + ) @staticmethod def iter_preparing(plug: "Plugin"): - for func in plug._preparing: - yield func + yield from plug._preparing for subplug in plug.subplugins: yield from PluginLifecycleService.iter_preparing(plugin_service.plugins[subplug]) @staticmethod def iter_cleanup(plug: "Plugin"): - for func in plug._cleanup: - yield func + yield from plug._cleanup for subplug in plug.subplugins: yield from PluginLifecycleService.iter_cleanup(plugin_service.plugins[subplug]) @staticmethod def iter_running(plug: "Plugin"): - for func in plug._running: - yield func + yield from plug._running for subplug in plug.subplugins: yield from PluginLifecycleService.iter_running(plugin_service.plugins[subplug]) @@ -55,7 +54,9 @@ async def launch(self, manager: Launart): plug = plugin_service.plugins[self.plugin_id] async with self.stage("preparing"): - await asyncio.gather(*[func() for func in PluginLifecycleService.iter_preparing(plug)], return_exceptions=True) + await asyncio.gather( + *[func() for func in PluginLifecycleService.iter_preparing(plug)], return_exceptions=True + ) async with self.stage("blocking"): sigexit_task = asyncio.create_task(manager.status.wait_for_sigexit()) running_tasks = [asyncio.create_task(func()) for func in PluginLifecycleService.iter_running(plug)] # type: ignore @@ -68,7 +69,9 @@ async def launch(self, manager: Launart): task.cancel() await task async with self.stage("cleanup"): - await asyncio.gather(*[func() for func in PluginLifecycleService.iter_cleanup(plug)], return_exceptions=True) + await asyncio.gather( + *[func() for func in PluginLifecycleService.iter_cleanup(plug)], return_exceptions=True + ) del plug diff --git a/arclet/entari/session.py b/arclet/entari/session.py index e604524..19bc2ee 100644 --- a/arclet/entari/session.py +++ b/arclet/entari/session.py @@ -7,7 +7,7 @@ from satori.client.account import Account from satori.client.protocol import ApiProtocol from satori.element import Element -from satori.model import Channel, Guild, Member, MessageObject, MessageReceipt, PageResult, Role, User +from satori.model import Channel, Guild, Member, MessageReceipt, PageResult, Role, User from .event import Event, FriendRequestEvent, GuildMemberRequestEvent, GuildRequestEvent, MessageEvent from .message import MessageChain