ErisPulse 2.3.4.dev2__py3-none-any.whl → 2.3.4.dev114514__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ErisPulse/Core/Bases/module.py +1 -53
- ErisPulse/Core/Bases/module.pyi +0 -43
- ErisPulse/Core/Event/command.py +1 -6
- ErisPulse/Core/_self_config.py +1 -1
- ErisPulse/Core/adapter.py +10 -70
- ErisPulse/Core/adapter.pyi +1 -18
- ErisPulse/Core/exceptions.py +2 -4
- ErisPulse/Core/lifecycle.py +0 -9
- ErisPulse/Core/logger.py +15 -21
- ErisPulse/Core/logger.pyi +1 -2
- ErisPulse/Core/module.py +9 -57
- ErisPulse/Core/module.pyi +1 -12
- ErisPulse/Core/router.py +5 -13
- ErisPulse/Core/storage.py +256 -94
- ErisPulse/Core/storage.pyi +66 -13
- ErisPulse/__init__.py +1237 -35
- ErisPulse/__init__.pyi +290 -3
- ErisPulse/sdk_protocol.py +143 -0
- ErisPulse/sdk_protocol.pyi +97 -0
- {erispulse-2.3.4.dev2.dist-info → erispulse-2.3.4.dev114514.dist-info}/METADATA +1 -1
- {erispulse-2.3.4.dev2.dist-info → erispulse-2.3.4.dev114514.dist-info}/RECORD +24 -38
- ErisPulse/Core/Bases/manager.py +0 -136
- ErisPulse/Core/Bases/manager.pyi +0 -108
- ErisPulse/loaders/__init__.py +0 -22
- ErisPulse/loaders/__init__.pyi +0 -21
- ErisPulse/loaders/adapter_loader.py +0 -187
- ErisPulse/loaders/adapter_loader.pyi +0 -82
- ErisPulse/loaders/base_loader.py +0 -162
- ErisPulse/loaders/base_loader.pyi +0 -23
- ErisPulse/loaders/initializer.py +0 -150
- ErisPulse/loaders/initializer.pyi +0 -60
- ErisPulse/loaders/module_loader.py +0 -618
- ErisPulse/loaders/module_loader.pyi +0 -179
- ErisPulse/loaders/strategy.py +0 -129
- ErisPulse/loaders/strategy.pyi +0 -90
- ErisPulse/sdk.py +0 -435
- ErisPulse/sdk.pyi +0 -158
- {erispulse-2.3.4.dev2.dist-info → erispulse-2.3.4.dev114514.dist-info}/WHEEL +0 -0
- {erispulse-2.3.4.dev2.dist-info → erispulse-2.3.4.dev114514.dist-info}/entry_points.txt +0 -0
- {erispulse-2.3.4.dev2.dist-info → erispulse-2.3.4.dev114514.dist-info}/licenses/LICENSE +0 -0
ErisPulse/sdk.py
DELETED
|
@@ -1,435 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
ErisPulse SDK 主类
|
|
3
|
-
|
|
4
|
-
提供统一的 SDK 接口,整合所有核心模块和加载器
|
|
5
|
-
|
|
6
|
-
{!--< tips >!--}
|
|
7
|
-
example:
|
|
8
|
-
>>> from ErisPulse import sdk
|
|
9
|
-
>>> await sdk.init()
|
|
10
|
-
>>> await sdk.adapter.startup()
|
|
11
|
-
{!--< /tips >!--}
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
import asyncio
|
|
15
|
-
from typing import Any
|
|
16
|
-
from .loaders.initializer import Initializer
|
|
17
|
-
|
|
18
|
-
# 导入核心模块
|
|
19
|
-
from .Core import Event
|
|
20
|
-
from .Core import lifecycle, logger, exceptions
|
|
21
|
-
from .Core import storage, env, config
|
|
22
|
-
from .Core import adapter, AdapterFather, BaseAdapter, SendDSL
|
|
23
|
-
from .Core import module
|
|
24
|
-
from .Core import router, adapter_server
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class SDK:
|
|
28
|
-
"""
|
|
29
|
-
ErisPulse SDK 主类
|
|
30
|
-
|
|
31
|
-
整合所有核心模块和加载器,提供统一的初始化和管理接口
|
|
32
|
-
|
|
33
|
-
{!--< tips >!--}
|
|
34
|
-
SDK 提供以下核心属性:
|
|
35
|
-
- Event: 事件系统
|
|
36
|
-
- lifecycle: 生命周期管理器
|
|
37
|
-
- logger: 日志管理器
|
|
38
|
-
- exceptions: 异常处理模块
|
|
39
|
-
- storage: 存储管理器
|
|
40
|
-
- env: 存储管理器别名
|
|
41
|
-
- config: 配置管理器
|
|
42
|
-
- adapter: 适配器管理器
|
|
43
|
-
- AdapterFather: 适配器基类别名
|
|
44
|
-
- BaseAdapter: 适配器基类
|
|
45
|
-
- SendDSL: DSL 发送接口基类
|
|
46
|
-
- module: 模块管理器
|
|
47
|
-
- router: 路由管理器
|
|
48
|
-
- adapter_server: 路由管理器别名
|
|
49
|
-
{!--< /tips >!--}
|
|
50
|
-
"""
|
|
51
|
-
|
|
52
|
-
# ==================== 核心模块属性 ====================
|
|
53
|
-
|
|
54
|
-
Event: Any
|
|
55
|
-
"""事件系统"""
|
|
56
|
-
|
|
57
|
-
lifecycle: Any
|
|
58
|
-
"""生命周期管理器"""
|
|
59
|
-
|
|
60
|
-
logger: Any
|
|
61
|
-
"""日志管理器"""
|
|
62
|
-
|
|
63
|
-
exceptions: Any
|
|
64
|
-
"""异常处理模块"""
|
|
65
|
-
|
|
66
|
-
storage: Any
|
|
67
|
-
"""存储管理器"""
|
|
68
|
-
|
|
69
|
-
env: Any
|
|
70
|
-
"""存储管理器别名"""
|
|
71
|
-
|
|
72
|
-
config: Any
|
|
73
|
-
"""配置管理器"""
|
|
74
|
-
|
|
75
|
-
adapter: Any
|
|
76
|
-
"""适配器管理器"""
|
|
77
|
-
|
|
78
|
-
AdapterFather: Any
|
|
79
|
-
"""适配器基类别名"""
|
|
80
|
-
|
|
81
|
-
BaseAdapter: Any
|
|
82
|
-
"""适配器基类"""
|
|
83
|
-
|
|
84
|
-
SendDSL: Any
|
|
85
|
-
"""DSL 发送接口基类"""
|
|
86
|
-
|
|
87
|
-
module: Any
|
|
88
|
-
"""模块管理器"""
|
|
89
|
-
|
|
90
|
-
router: Any
|
|
91
|
-
"""路由管理器"""
|
|
92
|
-
|
|
93
|
-
adapter_server: Any
|
|
94
|
-
"""路由管理器别名"""
|
|
95
|
-
|
|
96
|
-
def __init__(self):
|
|
97
|
-
"""
|
|
98
|
-
初始化 SDK 实例
|
|
99
|
-
|
|
100
|
-
挂载所有核心模块到 SDK 实例
|
|
101
|
-
"""
|
|
102
|
-
# 挂载核心模块
|
|
103
|
-
self.Event = Event
|
|
104
|
-
self.lifecycle = lifecycle
|
|
105
|
-
self.logger = logger
|
|
106
|
-
self.exceptions = exceptions
|
|
107
|
-
|
|
108
|
-
self.storage = storage
|
|
109
|
-
self.env = env
|
|
110
|
-
self.config = config
|
|
111
|
-
|
|
112
|
-
self.adapter = adapter
|
|
113
|
-
self.AdapterFather = AdapterFather
|
|
114
|
-
self.BaseAdapter = BaseAdapter
|
|
115
|
-
self.SendDSL = SendDSL
|
|
116
|
-
|
|
117
|
-
self.module = module
|
|
118
|
-
|
|
119
|
-
self.router = router
|
|
120
|
-
self.adapter_server = adapter_server
|
|
121
|
-
|
|
122
|
-
# 初始化协调器(在需要时创建)
|
|
123
|
-
self._initializer: Initializer = None # type: ignore
|
|
124
|
-
self._initialized: bool = False
|
|
125
|
-
|
|
126
|
-
# ==================== 初始化方法 ====================
|
|
127
|
-
|
|
128
|
-
async def init(self) -> bool:
|
|
129
|
-
"""
|
|
130
|
-
SDK 初始化入口
|
|
131
|
-
|
|
132
|
-
:return: bool SDK 初始化是否成功
|
|
133
|
-
|
|
134
|
-
:example:
|
|
135
|
-
>>> success = await sdk.init()
|
|
136
|
-
>>> if success:
|
|
137
|
-
>>> await sdk.adapter.startup()
|
|
138
|
-
"""
|
|
139
|
-
if not await self._prepare_environment():
|
|
140
|
-
return False
|
|
141
|
-
|
|
142
|
-
# 创建初始化协调器
|
|
143
|
-
self._initializer = Initializer(self)
|
|
144
|
-
|
|
145
|
-
# 执行初始化
|
|
146
|
-
self._initialized = await self._initializer.init()
|
|
147
|
-
return self._initialized
|
|
148
|
-
|
|
149
|
-
async def _prepare_environment(self) -> bool:
|
|
150
|
-
"""
|
|
151
|
-
{!--< internal-use >!--}
|
|
152
|
-
准备运行环境
|
|
153
|
-
|
|
154
|
-
初始化项目环境文件和配置
|
|
155
|
-
|
|
156
|
-
:return: bool 环境准备是否成功
|
|
157
|
-
"""
|
|
158
|
-
await lifecycle.submit_event(
|
|
159
|
-
"core.init.start",
|
|
160
|
-
msg="开始初始化"
|
|
161
|
-
)
|
|
162
|
-
|
|
163
|
-
logger.info("[Init] 准备初始化环境...")
|
|
164
|
-
try:
|
|
165
|
-
from .Core._self_config import get_erispulse_config
|
|
166
|
-
get_erispulse_config()
|
|
167
|
-
logger.info("[Init] 配置文件已加载")
|
|
168
|
-
|
|
169
|
-
main_init = await self._init_progress()
|
|
170
|
-
if main_init:
|
|
171
|
-
logger.info("[Init] 项目入口已生成, 你可以在 main.py 中编写一些代码")
|
|
172
|
-
return True
|
|
173
|
-
except Exception as e:
|
|
174
|
-
load_duration = self.lifecycle.stop_timer("core.init")
|
|
175
|
-
await lifecycle.submit_event(
|
|
176
|
-
"core.init.complete",
|
|
177
|
-
msg="模块初始化失败",
|
|
178
|
-
data={
|
|
179
|
-
"duration": load_duration,
|
|
180
|
-
"success": False
|
|
181
|
-
}
|
|
182
|
-
)
|
|
183
|
-
logger.error(f"环境准备失败: {e}")
|
|
184
|
-
return False
|
|
185
|
-
|
|
186
|
-
async def _init_progress(self) -> bool:
|
|
187
|
-
"""
|
|
188
|
-
{!--< internal-use >!--}
|
|
189
|
-
初始化项目环境文件
|
|
190
|
-
|
|
191
|
-
:return: bool 是否创建了新的 main.py 文件
|
|
192
|
-
"""
|
|
193
|
-
from pathlib import Path
|
|
194
|
-
|
|
195
|
-
main_file = Path("main.py")
|
|
196
|
-
main_init = False
|
|
197
|
-
|
|
198
|
-
try:
|
|
199
|
-
if not main_file.exists():
|
|
200
|
-
main_content = """# main.py
|
|
201
|
-
# ErisPulse 主程序文件
|
|
202
|
-
# 本文件由 SDK 自动创建,您可随意修改
|
|
203
|
-
import asyncio
|
|
204
|
-
from ErisPulse import sdk
|
|
205
|
-
|
|
206
|
-
async def main():
|
|
207
|
-
try:
|
|
208
|
-
isInit = await sdk.init()
|
|
209
|
-
|
|
210
|
-
if not isInit:
|
|
211
|
-
sdk.logger.error("ErisPulse 初始化失败,请检查日志")
|
|
212
|
-
return
|
|
213
|
-
|
|
214
|
-
await sdk.adapter.startup()
|
|
215
|
-
|
|
216
|
-
# 保持程序运行(不建议修改)
|
|
217
|
-
await asyncio.Event().wait()
|
|
218
|
-
except Exception as e:
|
|
219
|
-
sdk.logger.error(e)
|
|
220
|
-
except KeyboardInterrupt:
|
|
221
|
-
sdk.logger.info("正在停止程序")
|
|
222
|
-
finally:
|
|
223
|
-
await sdk.adapter.shutdown()
|
|
224
|
-
|
|
225
|
-
if __name__ == "__main__":
|
|
226
|
-
asyncio.run(main())
|
|
227
|
-
"""
|
|
228
|
-
with open(main_file, "w", encoding="utf-8") as f:
|
|
229
|
-
f.write(main_content)
|
|
230
|
-
main_init = True
|
|
231
|
-
|
|
232
|
-
return main_init
|
|
233
|
-
except Exception as e:
|
|
234
|
-
logger.error(f"无法初始化项目环境: {e}")
|
|
235
|
-
return False
|
|
236
|
-
|
|
237
|
-
def init_sync(self) -> bool:
|
|
238
|
-
"""
|
|
239
|
-
SDK 初始化入口(同步版本)
|
|
240
|
-
|
|
241
|
-
用于命令行直接调用,自动在事件循环中运行异步初始化
|
|
242
|
-
|
|
243
|
-
:return: bool SDK 初始化是否成功
|
|
244
|
-
"""
|
|
245
|
-
return asyncio.run(self.init())
|
|
246
|
-
|
|
247
|
-
def init_task(self) -> asyncio.Task:
|
|
248
|
-
"""
|
|
249
|
-
SDK 初始化入口,返回 Task 对象
|
|
250
|
-
|
|
251
|
-
:return: asyncio.Task 初始化任务
|
|
252
|
-
"""
|
|
253
|
-
async def _async_init():
|
|
254
|
-
if not await self._prepare_environment():
|
|
255
|
-
return False
|
|
256
|
-
|
|
257
|
-
self._initializer = Initializer(self)
|
|
258
|
-
self._initialized = await self._initializer.init()
|
|
259
|
-
return self._initialized
|
|
260
|
-
|
|
261
|
-
try:
|
|
262
|
-
return asyncio.create_task(_async_init())
|
|
263
|
-
except RuntimeError:
|
|
264
|
-
loop = asyncio.new_event_loop()
|
|
265
|
-
asyncio.set_event_loop(loop)
|
|
266
|
-
return loop.create_task(_async_init())
|
|
267
|
-
|
|
268
|
-
# ==================== 模块加载方法 ====================
|
|
269
|
-
|
|
270
|
-
async def load_module(self, module_name: str) -> bool:
|
|
271
|
-
"""
|
|
272
|
-
手动加载指定模块
|
|
273
|
-
|
|
274
|
-
:param module_name: str 要加载的模块名称
|
|
275
|
-
:return: bool 加载是否成功
|
|
276
|
-
|
|
277
|
-
:example:
|
|
278
|
-
>>> await sdk.load_module("MyModule")
|
|
279
|
-
"""
|
|
280
|
-
from .loaders.module_loader import LazyModule
|
|
281
|
-
|
|
282
|
-
try:
|
|
283
|
-
module_instance = getattr(self, module_name, None)
|
|
284
|
-
if isinstance(module_instance, LazyModule):
|
|
285
|
-
# 检查模块是否需要异步初始化
|
|
286
|
-
if hasattr(module_instance, '_needs_async_init') and object.__getattribute__(module_instance, '_needs_async_init'):
|
|
287
|
-
# 对于需要异步初始化的模块,执行完整异步初始化
|
|
288
|
-
await module_instance._initialize()
|
|
289
|
-
object.__setattr__(module_instance, '_needs_async_init', False)
|
|
290
|
-
return True
|
|
291
|
-
# 检查模块是否已经同步初始化但未完成异步部分
|
|
292
|
-
elif (object.__getattribute__(module_instance, '_initialized') and
|
|
293
|
-
object.__getattribute__(module_instance, '_is_base_module')):
|
|
294
|
-
# 如果是 BaseModule 子类且已同步初始化,只需完成异步部分
|
|
295
|
-
await module_instance._complete_async_init()
|
|
296
|
-
return True
|
|
297
|
-
else:
|
|
298
|
-
# 触发懒加载模块的完整初始化
|
|
299
|
-
await module_instance._initialize()
|
|
300
|
-
return True
|
|
301
|
-
elif module_instance is not None:
|
|
302
|
-
logger.warning(f"模块 {module_name} 已经加载")
|
|
303
|
-
return False
|
|
304
|
-
else:
|
|
305
|
-
logger.error(f"模块 {module_name} 不存在")
|
|
306
|
-
return False
|
|
307
|
-
except Exception as e:
|
|
308
|
-
logger.error(f"加载模块 {module_name} 失败: {e}")
|
|
309
|
-
return False
|
|
310
|
-
|
|
311
|
-
# ==================== 运行方法 ====================
|
|
312
|
-
|
|
313
|
-
async def run(self, keep_running: bool = True) -> None:
|
|
314
|
-
"""
|
|
315
|
-
无头模式运行 ErisPulse
|
|
316
|
-
|
|
317
|
-
:param keep_running: bool 是否保持运行
|
|
318
|
-
|
|
319
|
-
:example:
|
|
320
|
-
>>> await sdk.run(keep_running=True)
|
|
321
|
-
"""
|
|
322
|
-
try:
|
|
323
|
-
isInit = await self.init()
|
|
324
|
-
|
|
325
|
-
if not isInit:
|
|
326
|
-
logger.error("ErisPulse 初始化失败,请检查日志")
|
|
327
|
-
return
|
|
328
|
-
|
|
329
|
-
await self.adapter.startup()
|
|
330
|
-
|
|
331
|
-
if keep_running:
|
|
332
|
-
# 保持程序运行
|
|
333
|
-
await asyncio.Event().wait()
|
|
334
|
-
except Exception as e:
|
|
335
|
-
logger.error(e)
|
|
336
|
-
finally:
|
|
337
|
-
await self.module.unload()
|
|
338
|
-
await self.adapter.shutdown()
|
|
339
|
-
|
|
340
|
-
# ==================== 重启方法 ====================
|
|
341
|
-
|
|
342
|
-
async def restart(self) -> bool:
|
|
343
|
-
"""
|
|
344
|
-
SDK 重新启动
|
|
345
|
-
|
|
346
|
-
执行完整的反初始化后再初始化过程
|
|
347
|
-
|
|
348
|
-
:return: bool 重新加载是否成功
|
|
349
|
-
|
|
350
|
-
:example:
|
|
351
|
-
>>> await sdk.restart()
|
|
352
|
-
"""
|
|
353
|
-
logger.info("[Reload] 开始重新加载SDK...")
|
|
354
|
-
|
|
355
|
-
# 先执行反初始化
|
|
356
|
-
if not await self.uninit():
|
|
357
|
-
logger.error("[Reload] 反初始化失败,无法继续重新加载")
|
|
358
|
-
return False
|
|
359
|
-
|
|
360
|
-
# 再执行初始化
|
|
361
|
-
logger.info("[Reload] 开始重新初始化SDK...")
|
|
362
|
-
if not await self.init():
|
|
363
|
-
logger.error("[Reload] 初始化失败,请检查日志")
|
|
364
|
-
return False
|
|
365
|
-
|
|
366
|
-
logger.info("[Reload] 正在启动适配器...")
|
|
367
|
-
await self.adapter.startup()
|
|
368
|
-
|
|
369
|
-
logger.info("[Reload] 重新加载完成")
|
|
370
|
-
return True
|
|
371
|
-
|
|
372
|
-
# ==================== 反初始化方法 ====================
|
|
373
|
-
|
|
374
|
-
async def uninit(self) -> bool:
|
|
375
|
-
"""
|
|
376
|
-
SDK 反初始化
|
|
377
|
-
|
|
378
|
-
执行以下操作:
|
|
379
|
-
1. 关闭所有适配器
|
|
380
|
-
2. 卸载所有模块
|
|
381
|
-
3. 清理所有事件处理器
|
|
382
|
-
4. 清理僵尸线程
|
|
383
|
-
|
|
384
|
-
:return: bool 反初始化是否成功
|
|
385
|
-
|
|
386
|
-
:example:
|
|
387
|
-
>>> await sdk.uninit()
|
|
388
|
-
"""
|
|
389
|
-
try:
|
|
390
|
-
logger.info("[Uninit] 开始反初始化SDK...")
|
|
391
|
-
|
|
392
|
-
# 1. 关闭所有适配器
|
|
393
|
-
logger.debug("[Uninit] 正在关闭适配器...")
|
|
394
|
-
await self.adapter.shutdown()
|
|
395
|
-
|
|
396
|
-
# 2. 卸载所有模块
|
|
397
|
-
logger.debug("[Uninit] 正在卸载模块...")
|
|
398
|
-
await self.module.unload()
|
|
399
|
-
|
|
400
|
-
# 3. 清理 Event 模块中的所有事件处理器
|
|
401
|
-
Event._clear_all_handlers()
|
|
402
|
-
|
|
403
|
-
# 4. 清理僵尸线程
|
|
404
|
-
logger.debug("[Uninit] 正在清理线程...")
|
|
405
|
-
# SDK 本身不创建线程,但可以记录可能的线程泄漏
|
|
406
|
-
current_task = asyncio.current_task()
|
|
407
|
-
logger.debug(f"[Uninit] 当前任务: {current_task}")
|
|
408
|
-
|
|
409
|
-
# 重置初始化状态
|
|
410
|
-
self._initialized = False
|
|
411
|
-
self._initializer = None
|
|
412
|
-
|
|
413
|
-
logger.info("[Uninit] SDK反初始化完成")
|
|
414
|
-
return True
|
|
415
|
-
|
|
416
|
-
except Exception as e:
|
|
417
|
-
logger.error(f"[Uninit] SDK反初始化失败: {e}")
|
|
418
|
-
return False
|
|
419
|
-
|
|
420
|
-
def __repr__(self) -> str:
|
|
421
|
-
"""
|
|
422
|
-
返回 SDK 的字符串表示
|
|
423
|
-
|
|
424
|
-
:return: str SDK 的字符串表示
|
|
425
|
-
"""
|
|
426
|
-
return f"<ErisPulse SDK initialized={self._initialized}>"
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
# 创建全局 SDK 实例
|
|
430
|
-
sdk = SDK()
|
|
431
|
-
|
|
432
|
-
__all__ = [
|
|
433
|
-
"SDK",
|
|
434
|
-
"sdk"
|
|
435
|
-
]
|
ErisPulse/sdk.pyi
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
# type: ignore
|
|
2
|
-
#
|
|
3
|
-
# Auto-generated type stub for sdk.py
|
|
4
|
-
# DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
"""
|
|
8
|
-
ErisPulse SDK 主类
|
|
9
|
-
|
|
10
|
-
提供统一的 SDK 接口,整合所有核心模块和加载器
|
|
11
|
-
|
|
12
|
-
{!--< tips >!--}
|
|
13
|
-
example:
|
|
14
|
-
>>> from ErisPulse import sdk
|
|
15
|
-
>>> await sdk.init()
|
|
16
|
-
>>> await sdk.adapter.startup()
|
|
17
|
-
{!--< /tips >!--}
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
import asyncio
|
|
21
|
-
from typing import Any
|
|
22
|
-
from .loaders.initializer import Initializer
|
|
23
|
-
from .Core import Event
|
|
24
|
-
from .Core import lifecycle, logger, exceptions
|
|
25
|
-
from .Core import storage, env, config
|
|
26
|
-
from .Core import adapter, AdapterFather, BaseAdapter, SendDSL
|
|
27
|
-
from .Core import module
|
|
28
|
-
from .Core import router, adapter_server
|
|
29
|
-
|
|
30
|
-
class SDK:
|
|
31
|
-
"""
|
|
32
|
-
ErisPulse SDK 主类
|
|
33
|
-
|
|
34
|
-
整合所有核心模块和加载器,提供统一的初始化和管理接口
|
|
35
|
-
|
|
36
|
-
{!--< tips >!--}
|
|
37
|
-
SDK 提供以下核心属性:
|
|
38
|
-
- Event: 事件系统
|
|
39
|
-
- lifecycle: 生命周期管理器
|
|
40
|
-
- logger: 日志管理器
|
|
41
|
-
- exceptions: 异常处理模块
|
|
42
|
-
- storage: 存储管理器
|
|
43
|
-
- env: 存储管理器别名
|
|
44
|
-
- config: 配置管理器
|
|
45
|
-
- adapter: 适配器管理器
|
|
46
|
-
- AdapterFather: 适配器基类别名
|
|
47
|
-
- BaseAdapter: 适配器基类
|
|
48
|
-
- SendDSL: DSL 发送接口基类
|
|
49
|
-
- module: 模块管理器
|
|
50
|
-
- router: 路由管理器
|
|
51
|
-
- adapter_server: 路由管理器别名
|
|
52
|
-
{!--< /tips >!--}
|
|
53
|
-
"""
|
|
54
|
-
Event: Any
|
|
55
|
-
lifecycle: Any
|
|
56
|
-
logger: Any
|
|
57
|
-
exceptions: Any
|
|
58
|
-
storage: Any
|
|
59
|
-
env: Any
|
|
60
|
-
config: Any
|
|
61
|
-
adapter: Any
|
|
62
|
-
AdapterFather: Any
|
|
63
|
-
BaseAdapter: Any
|
|
64
|
-
SendDSL: Any
|
|
65
|
-
module: Any
|
|
66
|
-
router: Any
|
|
67
|
-
adapter_server: Any
|
|
68
|
-
def __init__(self: None) -> ...:
|
|
69
|
-
"""
|
|
70
|
-
初始化 SDK 实例
|
|
71
|
-
|
|
72
|
-
挂载所有核心模块到 SDK 实例
|
|
73
|
-
"""
|
|
74
|
-
...
|
|
75
|
-
async def init(self: object) -> bool:
|
|
76
|
-
"""
|
|
77
|
-
SDK 初始化入口
|
|
78
|
-
|
|
79
|
-
:return: bool SDK 初始化是否成功
|
|
80
|
-
|
|
81
|
-
:example:
|
|
82
|
-
>>> success = await sdk.init()
|
|
83
|
-
>>> if success:
|
|
84
|
-
>>> await sdk.adapter.startup()
|
|
85
|
-
"""
|
|
86
|
-
...
|
|
87
|
-
def init_sync(self: object) -> bool:
|
|
88
|
-
"""
|
|
89
|
-
SDK 初始化入口(同步版本)
|
|
90
|
-
|
|
91
|
-
用于命令行直接调用,自动在事件循环中运行异步初始化
|
|
92
|
-
|
|
93
|
-
:return: bool SDK 初始化是否成功
|
|
94
|
-
"""
|
|
95
|
-
...
|
|
96
|
-
def init_task(self: object) -> asyncio.Task:
|
|
97
|
-
"""
|
|
98
|
-
SDK 初始化入口,返回 Task 对象
|
|
99
|
-
|
|
100
|
-
:return: asyncio.Task 初始化任务
|
|
101
|
-
"""
|
|
102
|
-
...
|
|
103
|
-
async def load_module(self: object, module_name: str) -> bool:
|
|
104
|
-
"""
|
|
105
|
-
手动加载指定模块
|
|
106
|
-
|
|
107
|
-
:param module_name: str 要加载的模块名称
|
|
108
|
-
:return: bool 加载是否成功
|
|
109
|
-
|
|
110
|
-
:example:
|
|
111
|
-
>>> await sdk.load_module("MyModule")
|
|
112
|
-
"""
|
|
113
|
-
...
|
|
114
|
-
async def run(self: object, keep_running: bool = ...) -> None:
|
|
115
|
-
"""
|
|
116
|
-
无头模式运行 ErisPulse
|
|
117
|
-
|
|
118
|
-
:param keep_running: bool 是否保持运行
|
|
119
|
-
|
|
120
|
-
:example:
|
|
121
|
-
>>> await sdk.run(keep_running=True)
|
|
122
|
-
"""
|
|
123
|
-
...
|
|
124
|
-
async def restart(self: object) -> bool:
|
|
125
|
-
"""
|
|
126
|
-
SDK 重新启动
|
|
127
|
-
|
|
128
|
-
执行完整的反初始化后再初始化过程
|
|
129
|
-
|
|
130
|
-
:return: bool 重新加载是否成功
|
|
131
|
-
|
|
132
|
-
:example:
|
|
133
|
-
>>> await sdk.restart()
|
|
134
|
-
"""
|
|
135
|
-
...
|
|
136
|
-
async def uninit(self: object) -> bool:
|
|
137
|
-
"""
|
|
138
|
-
SDK 反初始化
|
|
139
|
-
|
|
140
|
-
执行以下操作:
|
|
141
|
-
1. 关闭所有适配器
|
|
142
|
-
2. 卸载所有模块
|
|
143
|
-
3. 清理所有事件处理器
|
|
144
|
-
4. 清理僵尸线程
|
|
145
|
-
|
|
146
|
-
:return: bool 反初始化是否成功
|
|
147
|
-
|
|
148
|
-
:example:
|
|
149
|
-
>>> await sdk.uninit()
|
|
150
|
-
"""
|
|
151
|
-
...
|
|
152
|
-
def __repr__(self: object) -> str:
|
|
153
|
-
"""
|
|
154
|
-
返回 SDK 的字符串表示
|
|
155
|
-
|
|
156
|
-
:return: str SDK 的字符串表示
|
|
157
|
-
"""
|
|
158
|
-
...
|
|
File without changes
|
|
File without changes
|
|
File without changes
|