ErisPulse 2.3.2__py3-none-any.whl → 2.3.3__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/__init__.pyi +14 -0
- ErisPulse/Core/Bases/adapter.py +13 -1
- ErisPulse/Core/Bases/adapter.pyi +140 -0
- ErisPulse/Core/Bases/module.pyi +52 -0
- ErisPulse/Core/Event/__init__.py +3 -1
- ErisPulse/Core/Event/__init__.pyi +26 -0
- ErisPulse/Core/Event/base.py +5 -0
- ErisPulse/Core/Event/base.pyi +62 -0
- ErisPulse/Core/Event/command.py +66 -17
- ErisPulse/Core/Event/command.pyi +113 -0
- ErisPulse/Core/Event/exceptions.pyi +43 -0
- ErisPulse/Core/Event/message.pyi +93 -0
- ErisPulse/Core/Event/meta.pyi +92 -0
- ErisPulse/Core/Event/notice.pyi +108 -0
- ErisPulse/Core/Event/request.pyi +76 -0
- ErisPulse/Core/Event/wrapper.py +592 -0
- ErisPulse/Core/Event/wrapper.pyi +404 -0
- ErisPulse/Core/__init__.py +16 -8
- ErisPulse/Core/__init__.pyi +17 -0
- ErisPulse/Core/_self_config.pyi +72 -0
- ErisPulse/Core/adapter.pyi +229 -0
- ErisPulse/Core/config.pyi +70 -0
- ErisPulse/Core/exceptions.pyi +60 -0
- ErisPulse/Core/lifecycle.py +6 -1
- ErisPulse/Core/lifecycle.pyi +92 -0
- ErisPulse/Core/logger.pyi +168 -0
- ErisPulse/Core/module.pyi +178 -0
- ErisPulse/Core/router.pyi +120 -0
- ErisPulse/Core/storage.pyi +273 -0
- ErisPulse/Core/ux.pyi +94 -0
- ErisPulse/__init__.py +10 -5
- ErisPulse/__init__.pyi +310 -0
- ErisPulse/__main__.py +0 -5
- ErisPulse/__main__.pyi +24 -0
- ErisPulse/sdk_protocol.py +150 -0
- ErisPulse/sdk_protocol.pyi +100 -0
- ErisPulse/utils/__init__.pyi +16 -0
- ErisPulse/utils/cli.pyi +145 -0
- ErisPulse/utils/console.pyi +20 -0
- ErisPulse/utils/package_manager.pyi +224 -0
- ErisPulse/utils/reload_handler.pyi +64 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/Bases/__init__.pyi +14 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/Bases/adapter.pyi +140 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/Bases/module.pyi +52 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/Event/__init__.pyi +26 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/Event/base.pyi +62 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/Event/command.pyi +113 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/Event/exceptions.pyi +43 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/Event/message.pyi +93 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/Event/meta.pyi +92 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/Event/notice.pyi +108 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/Event/request.pyi +76 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/Event/wrapper.pyi +404 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/__init__.pyi +17 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/_self_config.pyi +72 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/adapter.pyi +229 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/config.pyi +70 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/exceptions.pyi +60 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/lifecycle.pyi +92 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/logger.pyi +168 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/module.pyi +178 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/router.pyi +120 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/storage.pyi +273 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/Core/ux.pyi +94 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/__init__.pyi +310 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/__main__.pyi +24 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/sdk_protocol.pyi +100 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/utils/__init__.pyi +16 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/utils/cli.pyi +145 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/utils/console.pyi +20 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/utils/package_manager.pyi +224 -0
- erispulse-2.3.3.data/data/ErisPulse-stubs/ErisPulse/utils/reload_handler.pyi +64 -0
- {erispulse-2.3.2.dist-info → erispulse-2.3.3.dist-info}/METADATA +1 -3
- erispulse-2.3.3.dist-info/RECORD +98 -0
- erispulse-2.3.2.dist-info/RECORD +0 -34
- {erispulse-2.3.2.dist-info → erispulse-2.3.3.dist-info}/WHEEL +0 -0
- {erispulse-2.3.2.dist-info → erispulse-2.3.3.dist-info}/entry_points.txt +0 -0
- {erispulse-2.3.2.dist-info → erispulse-2.3.3.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
#
|
|
3
|
+
# Auto-generated type stub for adapter.py
|
|
4
|
+
# DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
ErisPulse 适配器系统
|
|
9
|
+
|
|
10
|
+
提供平台适配器管理功能。支持多平台消息处理、事件驱动和生命周期管理。
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import functools
|
|
14
|
+
import asyncio
|
|
15
|
+
from typing import Callable, Any, Dict, List, Type, Optional, Set
|
|
16
|
+
from collections import defaultdict
|
|
17
|
+
from .logger import logger
|
|
18
|
+
from .Bases.adapter import BaseAdapter
|
|
19
|
+
from .config import config
|
|
20
|
+
from .lifecycle import lifecycle
|
|
21
|
+
|
|
22
|
+
class AdapterManager:
|
|
23
|
+
"""
|
|
24
|
+
适配器管理器
|
|
25
|
+
|
|
26
|
+
管理多个平台适配器的注册、启动和关闭,提供与模块管理器一致的接口
|
|
27
|
+
|
|
28
|
+
{!--< tips >!--}
|
|
29
|
+
1. 通过register方法注册适配器
|
|
30
|
+
2. 通过startup方法启动适配器
|
|
31
|
+
3. 通过shutdown方法关闭所有适配器
|
|
32
|
+
4. 通过on装饰器注册OneBot12协议事件处理器
|
|
33
|
+
{!--< /tips >!--}
|
|
34
|
+
"""
|
|
35
|
+
def __init__(self: None) -> ...:
|
|
36
|
+
...
|
|
37
|
+
def register(self: object, platform: str, adapter_class: Type[BaseAdapter], adapter_info: Optional[Dict] = ...) -> bool:
|
|
38
|
+
"""
|
|
39
|
+
注册新的适配器类(标准化注册方法)
|
|
40
|
+
|
|
41
|
+
:param platform: 平台名称
|
|
42
|
+
:param adapter_class: 适配器类
|
|
43
|
+
:param adapter_info: 适配器信息
|
|
44
|
+
:return: 注册是否成功
|
|
45
|
+
|
|
46
|
+
:raises TypeError: 当适配器类无效时抛出
|
|
47
|
+
|
|
48
|
+
:example:
|
|
49
|
+
>>> adapter.register("MyPlatform", MyPlatformAdapter)
|
|
50
|
+
"""
|
|
51
|
+
...
|
|
52
|
+
def _register_platform_attributes(self: object, platform: str, instance: BaseAdapter) -> None:
|
|
53
|
+
"""
|
|
54
|
+
注册平台名称的多种大小写形式作为属性
|
|
55
|
+
|
|
56
|
+
:param platform: 平台名称
|
|
57
|
+
:param instance: 适配器实例
|
|
58
|
+
"""
|
|
59
|
+
...
|
|
60
|
+
async def startup(self: object, platforms: ... = ...) -> None:
|
|
61
|
+
"""
|
|
62
|
+
启动指定的适配器
|
|
63
|
+
|
|
64
|
+
:param platforms: 要启动的平台列表,None表示所有平台
|
|
65
|
+
|
|
66
|
+
:raises ValueError: 当平台未注册时抛出
|
|
67
|
+
|
|
68
|
+
:example:
|
|
69
|
+
>>> # 启动所有适配器
|
|
70
|
+
>>> await adapter.startup()
|
|
71
|
+
>>> # 启动指定适配器
|
|
72
|
+
>>> await adapter.startup(["Platform1", "Platform2"])
|
|
73
|
+
"""
|
|
74
|
+
...
|
|
75
|
+
async def shutdown(self: object) -> None:
|
|
76
|
+
"""
|
|
77
|
+
关闭所有适配器
|
|
78
|
+
"""
|
|
79
|
+
...
|
|
80
|
+
def _config_register(self: object, platform: str, enabled: bool = ...) -> bool:
|
|
81
|
+
"""
|
|
82
|
+
注册新平台适配器(仅当平台不存在时注册)
|
|
83
|
+
|
|
84
|
+
:param platform: 平台名称
|
|
85
|
+
:param enabled: [bool] 是否启用适配器
|
|
86
|
+
:return: [bool] 操作是否成功
|
|
87
|
+
"""
|
|
88
|
+
...
|
|
89
|
+
def exists(self: object, platform: str) -> bool:
|
|
90
|
+
"""
|
|
91
|
+
检查平台是否存在
|
|
92
|
+
|
|
93
|
+
:param platform: 平台名称
|
|
94
|
+
:return: [bool] 平台是否存在
|
|
95
|
+
"""
|
|
96
|
+
...
|
|
97
|
+
def is_enabled(self: object, platform: str) -> bool:
|
|
98
|
+
"""
|
|
99
|
+
检查平台适配器是否启用
|
|
100
|
+
|
|
101
|
+
:param platform: 平台名称
|
|
102
|
+
:return: [bool] 平台适配器是否启用
|
|
103
|
+
"""
|
|
104
|
+
...
|
|
105
|
+
def enable(self: object, platform: str) -> bool:
|
|
106
|
+
"""
|
|
107
|
+
启用平台适配器
|
|
108
|
+
|
|
109
|
+
:param platform: 平台名称
|
|
110
|
+
:return: [bool] 操作是否成功
|
|
111
|
+
"""
|
|
112
|
+
...
|
|
113
|
+
def disable(self: object, platform: str) -> bool:
|
|
114
|
+
"""
|
|
115
|
+
禁用平台适配器
|
|
116
|
+
|
|
117
|
+
:param platform: 平台名称
|
|
118
|
+
:return: [bool] 操作是否成功
|
|
119
|
+
"""
|
|
120
|
+
...
|
|
121
|
+
def list_adapters(self: object) -> Dict[(str, bool)]:
|
|
122
|
+
"""
|
|
123
|
+
列出所有平台适配器状态
|
|
124
|
+
|
|
125
|
+
:return: [Dict[str, bool]] 平台适配器状态字典
|
|
126
|
+
"""
|
|
127
|
+
...
|
|
128
|
+
def on(self: object, event_type: str = ...) -> Callable[([Callable], Callable)]:
|
|
129
|
+
"""
|
|
130
|
+
OneBot12协议事件监听装饰器
|
|
131
|
+
|
|
132
|
+
:param event_type: OneBot12事件类型
|
|
133
|
+
:param raw: 是否监听原生事件
|
|
134
|
+
:param platform: 指定平台,None表示监听所有平台
|
|
135
|
+
:return: 装饰器函数
|
|
136
|
+
|
|
137
|
+
:example:
|
|
138
|
+
>>> # 监听OneBot12标准事件(所有平台)
|
|
139
|
+
>>> @sdk.adapter.on("message")
|
|
140
|
+
>>> async def handle_message(data):
|
|
141
|
+
>>> print(f"收到OneBot12消息: {data}")
|
|
142
|
+
>>>
|
|
143
|
+
>>> # 监听特定平台的OneBot12标准事件
|
|
144
|
+
>>> @sdk.adapter.on("message", platform="onebot11")
|
|
145
|
+
>>> async def handle_onebot11_message(data):
|
|
146
|
+
>>> print(f"收到OneBot11标准消息: {data}")
|
|
147
|
+
>>>
|
|
148
|
+
>>> # 监听平台原生事件
|
|
149
|
+
>>> @sdk.adapter.on("message", raw=True, platform="onebot11")
|
|
150
|
+
>>> async def handle_raw_message(data):
|
|
151
|
+
>>> print(f"收到OneBot11原生事件: {data}")
|
|
152
|
+
>>>
|
|
153
|
+
>>> # 监听所有平台的原生事件
|
|
154
|
+
>>> @sdk.adapter.on("message", raw=True)
|
|
155
|
+
>>> async def handle_all_raw_message(data):
|
|
156
|
+
>>> print(f"收到原生事件: {data}")
|
|
157
|
+
"""
|
|
158
|
+
...
|
|
159
|
+
def middleware(self: object, func: Callable) -> Callable:
|
|
160
|
+
"""
|
|
161
|
+
添加OneBot12中间件处理器
|
|
162
|
+
|
|
163
|
+
:param func: 中间件函数
|
|
164
|
+
:return: 中间件函数
|
|
165
|
+
|
|
166
|
+
:example:
|
|
167
|
+
>>> @sdk.adapter.middleware
|
|
168
|
+
>>> async def onebot_middleware(data):
|
|
169
|
+
>>> print("处理OneBot12数据:", data)
|
|
170
|
+
>>> return data
|
|
171
|
+
"""
|
|
172
|
+
...
|
|
173
|
+
async def emit(self: object, data: Any) -> None:
|
|
174
|
+
"""
|
|
175
|
+
提交OneBot12协议事件到指定平台
|
|
176
|
+
|
|
177
|
+
:param data: 符合OneBot12标准的事件数据
|
|
178
|
+
|
|
179
|
+
:example:
|
|
180
|
+
>>> await sdk.adapter.emit({
|
|
181
|
+
>>> "id": "123",
|
|
182
|
+
>>> "time": 1620000000,
|
|
183
|
+
>>> "type": "message",
|
|
184
|
+
>>> "detail_type": "private",
|
|
185
|
+
>>> "message": [{"type": "text", "data": {"text": "Hello"}}],
|
|
186
|
+
>>> "platform": "myplatform",
|
|
187
|
+
>>> "myplatform_raw": {...平台原生事件数据...},
|
|
188
|
+
>>> "myplatform_raw_type": "text_message"
|
|
189
|
+
>>> })
|
|
190
|
+
"""
|
|
191
|
+
...
|
|
192
|
+
def get(self: object, platform: str) -> Optional[BaseAdapter]:
|
|
193
|
+
"""
|
|
194
|
+
获取指定平台的适配器实例
|
|
195
|
+
|
|
196
|
+
:param platform: 平台名称
|
|
197
|
+
:return: 适配器实例或None
|
|
198
|
+
|
|
199
|
+
:example:
|
|
200
|
+
>>> adapter = adapter.get("MyPlatform")
|
|
201
|
+
"""
|
|
202
|
+
...
|
|
203
|
+
def platforms(self: object) -> List[str]:
|
|
204
|
+
"""
|
|
205
|
+
获取所有已注册的平台列表
|
|
206
|
+
|
|
207
|
+
:return: 平台名称列表
|
|
208
|
+
|
|
209
|
+
:example:
|
|
210
|
+
>>> print("已注册平台:", adapter.platforms)
|
|
211
|
+
"""
|
|
212
|
+
...
|
|
213
|
+
def __getattr__(self: object, platform: str) -> BaseAdapter:
|
|
214
|
+
"""
|
|
215
|
+
通过属性访问获取适配器实例
|
|
216
|
+
|
|
217
|
+
:param platform: 平台名称
|
|
218
|
+
:return: 适配器实例
|
|
219
|
+
:raises AttributeError: 当平台不存在或未启用时
|
|
220
|
+
"""
|
|
221
|
+
...
|
|
222
|
+
def __contains__(self: object, platform: str) -> bool:
|
|
223
|
+
"""
|
|
224
|
+
检查平台是否存在且处于启用状态
|
|
225
|
+
|
|
226
|
+
:param platform: 平台名称
|
|
227
|
+
:return: [bool] 平台是否存在且启用
|
|
228
|
+
"""
|
|
229
|
+
...
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
#
|
|
3
|
+
# Auto-generated type stub for config.py
|
|
4
|
+
# DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
ErisPulse 配置中心
|
|
9
|
+
|
|
10
|
+
集中管理所有配置项,避免循环导入问题
|
|
11
|
+
提供自动补全缺失配置项的功能
|
|
12
|
+
添加内存缓存和延迟写入机制以提高性能
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
import os
|
|
16
|
+
import time
|
|
17
|
+
import toml
|
|
18
|
+
import threading
|
|
19
|
+
from typing import Any, Dict
|
|
20
|
+
|
|
21
|
+
class ConfigManager:
|
|
22
|
+
def __init__(self: None, config_file: str = ...) -> ...:
|
|
23
|
+
...
|
|
24
|
+
def _load_config(self: object) -> None:
|
|
25
|
+
"""
|
|
26
|
+
从文件加载配置到缓存
|
|
27
|
+
"""
|
|
28
|
+
...
|
|
29
|
+
def _flush_config(self: object) -> None:
|
|
30
|
+
"""
|
|
31
|
+
将待写入的配置刷新到文件
|
|
32
|
+
"""
|
|
33
|
+
...
|
|
34
|
+
def _schedule_write(self: object) -> None:
|
|
35
|
+
"""
|
|
36
|
+
安排延迟写入
|
|
37
|
+
"""
|
|
38
|
+
...
|
|
39
|
+
def _check_cache_validity(self: object) -> None:
|
|
40
|
+
"""
|
|
41
|
+
检查缓存有效性,必要时重新加载
|
|
42
|
+
"""
|
|
43
|
+
...
|
|
44
|
+
def getConfig(self: object, key: str, default: Any = ...) -> Any:
|
|
45
|
+
"""
|
|
46
|
+
获取模块/适配器配置项(优先从缓存获取)
|
|
47
|
+
:param key: 配置项的键(支持点分隔符如"module.sub.key")
|
|
48
|
+
:param default: 默认值
|
|
49
|
+
:return: 配置项的值
|
|
50
|
+
"""
|
|
51
|
+
...
|
|
52
|
+
def setConfig(self: object, key: str, value: Any, immediate: bool = ...) -> bool:
|
|
53
|
+
"""
|
|
54
|
+
设置模块/适配器配置(缓存+延迟写入)
|
|
55
|
+
:param key: 配置项键名(支持点分隔符如"module.sub.key")
|
|
56
|
+
:param value: 配置项值
|
|
57
|
+
:param immediate: 是否立即写入磁盘(默认为False,延迟写入)
|
|
58
|
+
:return: 操作是否成功
|
|
59
|
+
"""
|
|
60
|
+
...
|
|
61
|
+
def force_save(self: object) -> None:
|
|
62
|
+
"""
|
|
63
|
+
强制立即保存所有待写入的配置到磁盘
|
|
64
|
+
"""
|
|
65
|
+
...
|
|
66
|
+
def reload(self: object) -> None:
|
|
67
|
+
"""
|
|
68
|
+
重新从磁盘加载配置,丢弃所有未保存的更改
|
|
69
|
+
"""
|
|
70
|
+
...
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
#
|
|
3
|
+
# Auto-generated type stub for exceptions.py
|
|
4
|
+
# DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
ErisPulse 全局异常处理系统
|
|
9
|
+
|
|
10
|
+
提供统一的异常捕获和格式化功能,支持同步和异步代码的异常处理。
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import sys
|
|
14
|
+
import traceback
|
|
15
|
+
import asyncio
|
|
16
|
+
import os
|
|
17
|
+
from typing import Dict, Any, Type
|
|
18
|
+
|
|
19
|
+
class ExceptionHandler:
|
|
20
|
+
def format_exception(exc_type: Type[Exception], exc_value: Exception, exc_traceback: Any) -> str:
|
|
21
|
+
"""
|
|
22
|
+
:param exc_type: 异常类型
|
|
23
|
+
:param exc_value: 异常值
|
|
24
|
+
:param exc_traceback: 追踪信息
|
|
25
|
+
:return: 格式化后的异常信息
|
|
26
|
+
"""
|
|
27
|
+
...
|
|
28
|
+
def format_async_exception(exception: Exception) -> str:
|
|
29
|
+
"""
|
|
30
|
+
:param exception: 异常对象
|
|
31
|
+
:return: 格式化后的异常信息
|
|
32
|
+
"""
|
|
33
|
+
...
|
|
34
|
+
|
|
35
|
+
def global_exception_handler(exc_type: Type[Exception], exc_value: Exception, exc_traceback: Any) -> None:
|
|
36
|
+
"""
|
|
37
|
+
全局异常处理器
|
|
38
|
+
|
|
39
|
+
:param exc_type: 异常类型
|
|
40
|
+
:param exc_value: 异常值
|
|
41
|
+
:param exc_traceback: 追踪信息
|
|
42
|
+
"""
|
|
43
|
+
...
|
|
44
|
+
|
|
45
|
+
def async_exception_handler(loop: asyncio.AbstractEventLoop, context: Dict[(str, Any)]) -> None:
|
|
46
|
+
"""
|
|
47
|
+
异步异常处理器
|
|
48
|
+
|
|
49
|
+
:param loop: 事件循环
|
|
50
|
+
:param context: 上下文字典
|
|
51
|
+
"""
|
|
52
|
+
...
|
|
53
|
+
|
|
54
|
+
def setup_async_loop(loop: asyncio.AbstractEventLoop = ...) -> None:
|
|
55
|
+
"""
|
|
56
|
+
为指定的事件循环设置异常处理器
|
|
57
|
+
|
|
58
|
+
:param loop: 事件循环实例,如果为None则使用当前事件循环
|
|
59
|
+
"""
|
|
60
|
+
...
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
#
|
|
3
|
+
# Auto-generated type stub for lifecycle.py
|
|
4
|
+
# DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
ErisPulse 生命周期管理模块
|
|
9
|
+
|
|
10
|
+
提供统一的生命周期事件管理和触发机制
|
|
11
|
+
|
|
12
|
+
事件标准格式:
|
|
13
|
+
{
|
|
14
|
+
"event": "事件名称", # 必填
|
|
15
|
+
"timestamp": float, # 必填,Unix时间戳
|
|
16
|
+
"data": dict, # 可选,事件相关数据
|
|
17
|
+
"source": str, # 必填,事件来源
|
|
18
|
+
"msg": str # 可选,事件描述
|
|
19
|
+
}
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
import asyncio
|
|
23
|
+
import time
|
|
24
|
+
from typing import Callable, List, Dict, Any
|
|
25
|
+
from .logger import logger
|
|
26
|
+
|
|
27
|
+
class LifecycleManager:
|
|
28
|
+
"""
|
|
29
|
+
生命周期管理器
|
|
30
|
+
|
|
31
|
+
管理SDK的生命周期事件,提供事件注册和触发功能
|
|
32
|
+
支持点式结构事件监听,例如 module.init 可以被 module 监听到
|
|
33
|
+
"""
|
|
34
|
+
def __init__(self: None) -> ...:
|
|
35
|
+
...
|
|
36
|
+
def _validate_event(self: object, event_data: Dict[(str, Any)]) -> bool:
|
|
37
|
+
"""
|
|
38
|
+
验证事件数据格式
|
|
39
|
+
|
|
40
|
+
:param event_data: 事件数据字典
|
|
41
|
+
:return: 是否有效
|
|
42
|
+
"""
|
|
43
|
+
...
|
|
44
|
+
def on(self: object, event: str) -> Callable:
|
|
45
|
+
"""
|
|
46
|
+
注册生命周期事件处理器
|
|
47
|
+
|
|
48
|
+
:param event: 事件名称,支持点式结构如 module.init
|
|
49
|
+
:return: 装饰器函数
|
|
50
|
+
|
|
51
|
+
:raises ValueError: 当事件名无效时抛出
|
|
52
|
+
"""
|
|
53
|
+
...
|
|
54
|
+
def start_timer(self: object, timer_id: str) -> None:
|
|
55
|
+
"""
|
|
56
|
+
开始计时
|
|
57
|
+
|
|
58
|
+
:param timer_id: 计时器ID
|
|
59
|
+
"""
|
|
60
|
+
...
|
|
61
|
+
def get_duration(self: object, timer_id: str) -> float:
|
|
62
|
+
"""
|
|
63
|
+
获取指定计时器的持续时间
|
|
64
|
+
|
|
65
|
+
:param timer_id: 计时器ID
|
|
66
|
+
:return: 持续时间(秒)
|
|
67
|
+
"""
|
|
68
|
+
...
|
|
69
|
+
def stop_timer(self: object, timer_id: str) -> float:
|
|
70
|
+
"""
|
|
71
|
+
停止计时并返回持续时间
|
|
72
|
+
|
|
73
|
+
:param timer_id: 计时器ID
|
|
74
|
+
:return: 持续时间(秒)
|
|
75
|
+
"""
|
|
76
|
+
...
|
|
77
|
+
async def submit_event(self: object, event_type: str) -> None:
|
|
78
|
+
"""
|
|
79
|
+
提交生命周期事件
|
|
80
|
+
|
|
81
|
+
:param event: 事件名称
|
|
82
|
+
:param event_data: 事件数据字典
|
|
83
|
+
"""
|
|
84
|
+
...
|
|
85
|
+
async def _execute_handlers(self: object, event: str, event_data: Dict[(str, Any)]) -> None:
|
|
86
|
+
"""
|
|
87
|
+
执行事件处理器
|
|
88
|
+
|
|
89
|
+
:param event: 事件名称
|
|
90
|
+
:param event_data: 事件数据
|
|
91
|
+
"""
|
|
92
|
+
...
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
#
|
|
3
|
+
# Auto-generated type stub for logger.py
|
|
4
|
+
# DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
ErisPulse 日志系统
|
|
9
|
+
|
|
10
|
+
提供模块化日志记录功能,支持多级日志、模块过滤和内存存储。
|
|
11
|
+
|
|
12
|
+
{!--< tips >!--}
|
|
13
|
+
1. 支持按模块设置不同日志级别
|
|
14
|
+
2. 日志可存储在内存中供后续分析
|
|
15
|
+
3. 自动识别调用模块名称
|
|
16
|
+
{!--< /tips >!--}
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
import logging
|
|
20
|
+
import inspect
|
|
21
|
+
import datetime
|
|
22
|
+
from rich.logging import RichHandler
|
|
23
|
+
from rich.console import Console
|
|
24
|
+
|
|
25
|
+
class Logger:
|
|
26
|
+
"""
|
|
27
|
+
日志管理器
|
|
28
|
+
|
|
29
|
+
提供模块化日志记录和存储功能
|
|
30
|
+
|
|
31
|
+
{!--< tips >!--}
|
|
32
|
+
1. 使用set_module_level设置模块日志级别
|
|
33
|
+
2. 使用get_logs获取历史日志
|
|
34
|
+
3. 支持标准日志级别(DEBUG, INFO等)
|
|
35
|
+
{!--< /tips >!--}
|
|
36
|
+
"""
|
|
37
|
+
def __init__(self: None) -> ...:
|
|
38
|
+
...
|
|
39
|
+
def set_memory_limit(self: object, limit: int) -> bool:
|
|
40
|
+
"""
|
|
41
|
+
设置日志内存存储上限
|
|
42
|
+
|
|
43
|
+
:param limit: 日志存储上限
|
|
44
|
+
:return: bool 设置是否成功
|
|
45
|
+
"""
|
|
46
|
+
...
|
|
47
|
+
def set_level(self: object, level: str) -> bool:
|
|
48
|
+
"""
|
|
49
|
+
设置全局日志级别
|
|
50
|
+
|
|
51
|
+
:param level: 日志级别(DEBUG/INFO/WARNING/ERROR/CRITICAL)
|
|
52
|
+
:return: bool 设置是否成功
|
|
53
|
+
"""
|
|
54
|
+
...
|
|
55
|
+
def set_module_level(self: object, module_name: str, level: str) -> bool:
|
|
56
|
+
"""
|
|
57
|
+
设置指定模块日志级别
|
|
58
|
+
|
|
59
|
+
:param module_name: 模块名称
|
|
60
|
+
:param level: 日志级别(DEBUG/INFO/WARNING/ERROR/CRITICAL)
|
|
61
|
+
:return: bool 设置是否成功
|
|
62
|
+
"""
|
|
63
|
+
...
|
|
64
|
+
def set_output_file(self: object, path: ...) -> bool:
|
|
65
|
+
"""
|
|
66
|
+
设置日志输出
|
|
67
|
+
|
|
68
|
+
:param path: 日志文件路径 Str/List
|
|
69
|
+
:return: bool 设置是否成功
|
|
70
|
+
"""
|
|
71
|
+
...
|
|
72
|
+
def save_logs(self: object, path: ...) -> bool:
|
|
73
|
+
"""
|
|
74
|
+
保存所有在内存中记录的日志
|
|
75
|
+
|
|
76
|
+
:param path: 日志文件路径 Str/List
|
|
77
|
+
:return: bool 设置是否成功
|
|
78
|
+
"""
|
|
79
|
+
...
|
|
80
|
+
def get_logs(self: object, module_name: str = ...) -> dict:
|
|
81
|
+
"""
|
|
82
|
+
获取日志内容
|
|
83
|
+
|
|
84
|
+
:param module_name (可选): 模块名称
|
|
85
|
+
:return: dict 日志内容
|
|
86
|
+
"""
|
|
87
|
+
...
|
|
88
|
+
def _save_in_memory(self: object, ModuleName: ..., msg: ...) -> ...:
|
|
89
|
+
...
|
|
90
|
+
def _setup_config(self: object) -> ...:
|
|
91
|
+
...
|
|
92
|
+
def _get_effective_level(self: object, module_name: ...) -> ...:
|
|
93
|
+
...
|
|
94
|
+
def _get_caller(self: object) -> ...:
|
|
95
|
+
...
|
|
96
|
+
def get_child(self: object, child_name: str = ...) -> ...:
|
|
97
|
+
"""
|
|
98
|
+
获取子日志记录器
|
|
99
|
+
|
|
100
|
+
:param child_name: 子模块名称(可选)
|
|
101
|
+
:return: LoggerChild 子日志记录器实例
|
|
102
|
+
"""
|
|
103
|
+
...
|
|
104
|
+
def debug(self: object, msg: ..., *args: ..., **kwargs: ...) -> ...:
|
|
105
|
+
...
|
|
106
|
+
def info(self: object, msg: ..., *args: ..., **kwargs: ...) -> ...:
|
|
107
|
+
...
|
|
108
|
+
def warning(self: object, msg: ..., *args: ..., **kwargs: ...) -> ...:
|
|
109
|
+
...
|
|
110
|
+
def error(self: object, msg: ..., *args: ..., **kwargs: ...) -> ...:
|
|
111
|
+
...
|
|
112
|
+
def critical(self: object, msg: ..., *args: ..., **kwargs: ...) -> ...:
|
|
113
|
+
"""
|
|
114
|
+
记录 CRITICAL 级别日志
|
|
115
|
+
这是最高级别的日志,表示严重的系统错误
|
|
116
|
+
注意:此方法不会触发程序崩溃,仅记录日志
|
|
117
|
+
|
|
118
|
+
{!--< tips >!--}
|
|
119
|
+
1. 这是最高级别的日志,表示严重系统错误
|
|
120
|
+
2. 不会触发程序崩溃,如需终止程序请显式调用 sys.exit()
|
|
121
|
+
3. 会在日志文件中添加 CRITICAL 标记便于后续分析
|
|
122
|
+
{!--< /tips >!--}
|
|
123
|
+
"""
|
|
124
|
+
...
|
|
125
|
+
|
|
126
|
+
class LoggerChild:
|
|
127
|
+
"""
|
|
128
|
+
子日志记录器
|
|
129
|
+
|
|
130
|
+
用于创建具有特定名称的子日志记录器,仅改变模块名称,其他功能全部委托给父日志记录器
|
|
131
|
+
"""
|
|
132
|
+
def __init__(self: None, parent_logger: Logger, name: str) -> ...:
|
|
133
|
+
"""
|
|
134
|
+
初始化子日志记录器
|
|
135
|
+
|
|
136
|
+
:param parent_logger: 父日志记录器实例
|
|
137
|
+
:param name: 子日志记录器名称
|
|
138
|
+
"""
|
|
139
|
+
...
|
|
140
|
+
def debug(self: object, msg: ..., *args: ..., **kwargs: ...) -> ...:
|
|
141
|
+
...
|
|
142
|
+
def info(self: object, msg: ..., *args: ..., **kwargs: ...) -> ...:
|
|
143
|
+
...
|
|
144
|
+
def warning(self: object, msg: ..., *args: ..., **kwargs: ...) -> ...:
|
|
145
|
+
...
|
|
146
|
+
def error(self: object, msg: ..., *args: ..., **kwargs: ...) -> ...:
|
|
147
|
+
...
|
|
148
|
+
def critical(self: object, msg: ..., *args: ..., **kwargs: ...) -> ...:
|
|
149
|
+
"""
|
|
150
|
+
记录 CRITICAL 级别日志
|
|
151
|
+
这是最高级别的日志,表示严重的系统错误
|
|
152
|
+
注意:此方法不会触发程序崩溃,仅记录日志
|
|
153
|
+
|
|
154
|
+
{!--< tips >!--}
|
|
155
|
+
1. 这是最高级别的日志,表示严重系统错误
|
|
156
|
+
2. 不会触发程序崩溃,如需终止程序请显式调用 sys.exit()
|
|
157
|
+
3. 会在日志文件中添加 CRITICAL 标记便于后续分析
|
|
158
|
+
{!--< /tips >!--}
|
|
159
|
+
"""
|
|
160
|
+
...
|
|
161
|
+
def get_child(self: object, child_name: str) -> ...:
|
|
162
|
+
"""
|
|
163
|
+
获取子日志记录器的子记录器
|
|
164
|
+
|
|
165
|
+
:param child_name: 子模块名称
|
|
166
|
+
:return: LoggerChild 子日志记录器实例
|
|
167
|
+
"""
|
|
168
|
+
...
|