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.
Files changed (40) hide show
  1. ErisPulse/Core/Bases/module.py +1 -53
  2. ErisPulse/Core/Bases/module.pyi +0 -43
  3. ErisPulse/Core/Event/command.py +1 -6
  4. ErisPulse/Core/_self_config.py +1 -1
  5. ErisPulse/Core/adapter.py +10 -70
  6. ErisPulse/Core/adapter.pyi +1 -18
  7. ErisPulse/Core/exceptions.py +2 -4
  8. ErisPulse/Core/lifecycle.py +0 -9
  9. ErisPulse/Core/logger.py +15 -21
  10. ErisPulse/Core/logger.pyi +1 -2
  11. ErisPulse/Core/module.py +9 -57
  12. ErisPulse/Core/module.pyi +1 -12
  13. ErisPulse/Core/router.py +5 -13
  14. ErisPulse/Core/storage.py +256 -94
  15. ErisPulse/Core/storage.pyi +66 -13
  16. ErisPulse/__init__.py +1237 -35
  17. ErisPulse/__init__.pyi +290 -3
  18. ErisPulse/sdk_protocol.py +143 -0
  19. ErisPulse/sdk_protocol.pyi +97 -0
  20. {erispulse-2.3.4.dev2.dist-info → erispulse-2.3.4.dev114514.dist-info}/METADATA +1 -1
  21. {erispulse-2.3.4.dev2.dist-info → erispulse-2.3.4.dev114514.dist-info}/RECORD +24 -38
  22. ErisPulse/Core/Bases/manager.py +0 -136
  23. ErisPulse/Core/Bases/manager.pyi +0 -108
  24. ErisPulse/loaders/__init__.py +0 -22
  25. ErisPulse/loaders/__init__.pyi +0 -21
  26. ErisPulse/loaders/adapter_loader.py +0 -187
  27. ErisPulse/loaders/adapter_loader.pyi +0 -82
  28. ErisPulse/loaders/base_loader.py +0 -162
  29. ErisPulse/loaders/base_loader.pyi +0 -23
  30. ErisPulse/loaders/initializer.py +0 -150
  31. ErisPulse/loaders/initializer.pyi +0 -60
  32. ErisPulse/loaders/module_loader.py +0 -618
  33. ErisPulse/loaders/module_loader.pyi +0 -179
  34. ErisPulse/loaders/strategy.py +0 -129
  35. ErisPulse/loaders/strategy.pyi +0 -90
  36. ErisPulse/sdk.py +0 -435
  37. ErisPulse/sdk.pyi +0 -158
  38. {erispulse-2.3.4.dev2.dist-info → erispulse-2.3.4.dev114514.dist-info}/WHEEL +0 -0
  39. {erispulse-2.3.4.dev2.dist-info → erispulse-2.3.4.dev114514.dist-info}/entry_points.txt +0 -0
  40. {erispulse-2.3.4.dev2.dist-info → erispulse-2.3.4.dev114514.dist-info}/licenses/LICENSE +0 -0
@@ -1,136 +0,0 @@
1
- """
2
- ErisPulse 管理器基类
3
-
4
- 提供适配器和模块管理器的统一接口定义
5
-
6
- {!--< tips >!--}
7
- 适配器管理器和模块管理器都应继承此基类以保持接口一致性
8
- {!--< /tips >!--}
9
- """
10
-
11
- from abc import ABC, abstractmethod
12
- from typing import Dict, List, Any, Type, Optional
13
-
14
-
15
- class ManagerBase(ABC):
16
- """
17
- 管理器基类
18
-
19
- 定义适配器和模块管理器的统一接口
20
-
21
- {!--< tips >!--}
22
- 统一方法:
23
- - register(): 注册类
24
- - unregister(): 取消注册
25
- - get(): 获取实例
26
- - exists(): 检查是否存在
27
- - enable()/disable(): 启用/禁用
28
- - is_enabled(): 检查是否启用
29
- - list_*(): 列出相关项
30
- {!--< /tips >!--}
31
- """
32
-
33
- # ==================== 注册与取消注册 ====================
34
-
35
- @abstractmethod
36
- def register(self, name: str, class_type: Type, info: Optional[Dict] = None) -> bool:
37
- """
38
- 注册类
39
-
40
- :param name: 名称
41
- :param class_type: 类类型
42
- :param info: 额外信息
43
- :return: 是否注册成功
44
- """
45
- ...
46
-
47
- @abstractmethod
48
- def unregister(self, name: str) -> bool:
49
- """
50
- 取消注册
51
-
52
- :param name: 名称
53
- :return: 是否取消成功
54
- """
55
- ...
56
-
57
- # ==================== 实例获取 ====================
58
-
59
- @abstractmethod
60
- def get(self, name: str) -> Any:
61
- """
62
- 获取实例
63
-
64
- :param name: 名称
65
- :return: 实例或 None
66
- """
67
- ...
68
-
69
- # ==================== 存在性检查 ====================
70
-
71
- @abstractmethod
72
- def exists(self, name: str) -> bool:
73
- """
74
- 检查是否存在(在配置中注册)
75
-
76
- :param name: 名称
77
- :return: 是否存在
78
- """
79
- ...
80
-
81
- # ==================== 启用/禁用管理 ====================
82
-
83
- @abstractmethod
84
- def is_enabled(self, name: str) -> bool:
85
- """
86
- 检查是否启用
87
-
88
- :param name: 名称
89
- :return: 是否启用
90
- """
91
- ...
92
-
93
- @abstractmethod
94
- def enable(self, name: str) -> bool:
95
- """
96
- 启用
97
-
98
- :param name: 名称
99
- :return: 是否成功
100
- """
101
- ...
102
-
103
- @abstractmethod
104
- def disable(self, name: str) -> bool:
105
- """
106
- 禁用
107
-
108
- :param name: 名称
109
- :return: 是否成功
110
- """
111
- ...
112
-
113
- # ==================== 列表方法 ====================
114
-
115
- @abstractmethod
116
- def list_registered(self) -> List[str]:
117
- """
118
- 列出所有已注册的项
119
-
120
- :return: 名称列表
121
- """
122
- ...
123
-
124
- @abstractmethod
125
- def list_items(self) -> Dict[str, bool]:
126
- """
127
- 列出所有项及其状态
128
-
129
- :return: {名称: 是否启用} 字典
130
- """
131
- ...
132
-
133
-
134
- __all__ = [
135
- "ManagerBase"
136
- ]
@@ -1,108 +0,0 @@
1
- # type: ignore
2
- #
3
- # Auto-generated type stub for manager.py
4
- # DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
5
- #
6
-
7
- """
8
- ErisPulse 管理器基类
9
-
10
- 提供适配器和模块管理器的统一接口定义
11
-
12
- {!--< tips >!--}
13
- 适配器管理器和模块管理器都应继承此基类以保持接口一致性
14
- {!--< /tips >!--}
15
- """
16
-
17
- from abc import ABC, abstractmethod
18
- from typing import Dict, List, Any, Type, Optional
19
-
20
- class ManagerBase(ABC):
21
- """
22
- 管理器基类
23
-
24
- 定义适配器和模块管理器的统一接口
25
-
26
- {!--< tips >!--}
27
- 统一方法:
28
- - register(): 注册类
29
- - unregister(): 取消注册
30
- - get(): 获取实例
31
- - exists(): 检查是否存在
32
- - enable()/disable(): 启用/禁用
33
- - is_enabled(): 检查是否启用
34
- - list_*(): 列出相关项
35
- {!--< /tips >!--}
36
- """
37
- def register(self: object, name: str, class_type: Type, info: Optional[Dict] = ...) -> bool:
38
- """
39
- 注册类
40
-
41
- :param name: 名称
42
- :param class_type: 类类型
43
- :param info: 额外信息
44
- :return: 是否注册成功
45
- """
46
- ...
47
- def unregister(self: object, name: str) -> bool:
48
- """
49
- 取消注册
50
-
51
- :param name: 名称
52
- :return: 是否取消成功
53
- """
54
- ...
55
- def get(self: object, name: str) -> Any:
56
- """
57
- 获取实例
58
-
59
- :param name: 名称
60
- :return: 实例或 None
61
- """
62
- ...
63
- def exists(self: object, name: str) -> bool:
64
- """
65
- 检查是否存在(在配置中注册)
66
-
67
- :param name: 名称
68
- :return: 是否存在
69
- """
70
- ...
71
- def is_enabled(self: object, name: str) -> bool:
72
- """
73
- 检查是否启用
74
-
75
- :param name: 名称
76
- :return: 是否启用
77
- """
78
- ...
79
- def enable(self: object, name: str) -> bool:
80
- """
81
- 启用
82
-
83
- :param name: 名称
84
- :return: 是否成功
85
- """
86
- ...
87
- def disable(self: object, name: str) -> bool:
88
- """
89
- 禁用
90
-
91
- :param name: 名称
92
- :return: 是否成功
93
- """
94
- ...
95
- def list_registered(self: object) -> List[str]:
96
- """
97
- 列出所有已注册的项
98
-
99
- :return: 名称列表
100
- """
101
- ...
102
- def list_items(self: object) -> Dict[(str, bool)]:
103
- """
104
- 列出所有项及其状态
105
-
106
- :return: {名称: 是否启用} 字典
107
- """
108
- ...
@@ -1,22 +0,0 @@
1
- """
2
- ErisPulse 加载器模块
3
-
4
- 提供适配器和模块的加载功能
5
-
6
- {!--< tips >!--}
7
- 1. 此模块由 SDK 内部使用
8
- 2. 一般不需要手动导入这些加载器
9
- {!--< /tips >!--}
10
- """
11
-
12
- from .adapter_loader import AdapterLoader
13
- from .module_loader import ModuleLoader
14
- from .initializer import Initializer
15
- from .strategy import ModuleLoadStrategy
16
-
17
- __all__ = [
18
- "AdapterLoader",
19
- "ModuleLoader",
20
- "Initializer",
21
- "ModuleLoadStrategy",
22
- ]
@@ -1,21 +0,0 @@
1
- # type: ignore
2
- #
3
- # Auto-generated type stub for __init__.py
4
- # DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
5
- #
6
-
7
- """
8
- ErisPulse 加载器模块
9
-
10
- 提供适配器和模块的加载功能
11
-
12
- {!--< tips >!--}
13
- 1. 此模块由 SDK 内部使用
14
- 2. 一般不需要手动导入这些加载器
15
- {!--< /tips >!--}
16
- """
17
-
18
- from .adapter_loader import AdapterLoader
19
- from .module_loader import ModuleLoader
20
- from .initializer import Initializer
21
- from .strategy import ModuleLoadStrategy
@@ -1,187 +0,0 @@
1
- """
2
- ErisPulse 适配器加载器
3
-
4
- 专门用于从 PyPI 包加载和初始化适配器
5
-
6
- {!--< tips >!--}
7
- 1. 适配器必须通过 entry-points 机制注册到 erispulse.adapter 组
8
- 2. 适配器类必须继承 BaseAdapter
9
- 3. 适配器不适用懒加载
10
- {!--< /tips >!--}
11
- """
12
-
13
- import sys
14
- import asyncio
15
- import importlib.metadata
16
- from typing import Dict, List, Any, Tuple
17
- from .base_loader import BaseLoader
18
- from ..Core.logger import logger
19
- from ..Core.lifecycle import lifecycle
20
-
21
- class AdapterLoader(BaseLoader):
22
- """
23
- 适配器加载器
24
-
25
- 负责从 PyPI entry-points 加载适配器
26
-
27
- {!--< tips >!--}
28
- 使用方式:
29
- >>> loader = AdapterLoader()
30
- >>> adapter_objs, enabled, disabled = await loader.load(adapter_manager)
31
- {!--< /tips >!--}
32
- """
33
-
34
- def __init__(self):
35
- """初始化适配器加载器"""
36
- super().__init__("ErisPulse.adapters")
37
-
38
- def _get_entry_point_group(self) -> str:
39
- """
40
- 获取 entry-point 组名
41
-
42
- :return: "erispulse.adapter"
43
- """
44
- return "erispulse.adapter"
45
-
46
- async def _process_entry_point(
47
- self,
48
- entry_point: Any,
49
- objs: Dict[str, Any],
50
- enabled_list: List[str],
51
- disabled_list: List[str],
52
- manager_instance: Any
53
- ) -> Tuple[Dict[str, Any], List[str], List[str]]:
54
- """
55
- 处理单个适配器 entry-point
56
-
57
- :param entry_point: entry-point 对象
58
- :param objs: 适配器对象字典
59
- :param enabled_list: 启用的适配器列表
60
- :param disabled_list: 停用的适配器列表
61
- :param manager_instance: 适配器管理器实例
62
-
63
- :return:
64
- Dict[str, Any]: 更新后的适配器对象字典
65
- List[str]: 更新后的启用适配器列表
66
- List[str]: 更新后的禁用适配器列表
67
-
68
- :raises ImportError: 当适配器加载失败时抛出
69
- """
70
- meta_name = entry_point.name
71
-
72
- # 检查适配器是否已经注册,如果未注册则进行注册(默认启用)
73
- if not manager_instance.exists(meta_name):
74
- manager_instance._config_register(meta_name, True)
75
- logger.info(f"发现新适配器 {meta_name},默认已启用")
76
-
77
- # 获取适配器当前状态
78
- adapter_status = manager_instance.is_enabled(meta_name)
79
- logger.debug(f"适配器 {meta_name} 状态: {adapter_status}")
80
-
81
- if not adapter_status:
82
- disabled_list.append(meta_name)
83
- logger.debug(f"适配器 {meta_name} 已禁用,跳过...")
84
- return objs, enabled_list, disabled_list
85
-
86
- try:
87
- loaded_class = entry_point.load()
88
- adapter_obj = sys.modules[loaded_class.__module__]
89
- dist = importlib.metadata.distribution(entry_point.dist.name)
90
-
91
- adapter_info = {
92
- "meta": {
93
- "name": meta_name,
94
- "version": getattr(adapter_obj, "__version__", dist.version if dist else "1.0.0"),
95
- "description": getattr(adapter_obj, "__description__", ""),
96
- "author": getattr(adapter_obj, "__author__", ""),
97
- "license": getattr(adapter_obj, "__license__", ""),
98
- "package": entry_point.dist.name
99
- },
100
- "adapter_class": loaded_class
101
- }
102
-
103
- if not hasattr(adapter_obj, 'adapterInfo'):
104
- setattr(adapter_obj, 'adapterInfo', {})
105
-
106
- adapter_obj.adapterInfo[meta_name] = adapter_info
107
-
108
- objs[meta_name] = adapter_obj
109
- enabled_list.append(meta_name)
110
- logger.debug(f"从 PyPI 包发现适配器: {meta_name}")
111
-
112
- except Exception as e:
113
- logger.warning(f"从 entry-point 加载适配器 {meta_name} 失败: {e}")
114
- raise ImportError(f"无法加载适配器 {meta_name}: {e}")
115
-
116
- return objs, enabled_list, disabled_list
117
-
118
- async def register_to_manager(
119
- self,
120
- adapters: List[str],
121
- adapter_objs: Dict[str, Any],
122
- manager_instance: Any
123
- ) -> bool:
124
- """
125
- 将适配器注册到管理器
126
-
127
- :param adapters: 适配器名称列表
128
- :param adapter_objs: 适配器对象字典
129
- :param manager_instance: 适配器管理器实例
130
- :return: 适配器注册是否成功
131
-
132
- {!--< tips >!--}
133
- 此方法由初始化协调器调用
134
- {!--< /tips >!--}
135
- """
136
- # 并行注册所有适配器
137
- register_tasks = []
138
-
139
- for adapter_name in adapters:
140
- adapter_obj = adapter_objs[adapter_name]
141
-
142
- async def register_single_adapter(name: str, obj: Any) -> bool:
143
- """注册单个适配器"""
144
- try:
145
- success = True
146
- if hasattr(obj, "adapterInfo") and isinstance(obj.adapterInfo, dict):
147
- for platform, adapter_info in obj.adapterInfo.items():
148
- # 使用管理器的方法检查是否已存在
149
- if platform in manager_instance._adapters:
150
- continue
151
-
152
- adapter_class = adapter_info["adapter_class"]
153
-
154
- # 调用管理器的 register 方法
155
- manager_instance.register(platform, adapter_class, adapter_info)
156
- logger.info(f"注册适配器: {platform} ({adapter_class.__name__})")
157
-
158
- # 提交适配器加载完成事件
159
- await lifecycle.submit_event(
160
- "adapter.load",
161
- msg=f"适配器 {platform} 加载完成",
162
- data={
163
- "platform": platform,
164
- "success": True
165
- }
166
- )
167
- return success
168
- except Exception as e:
169
- logger.error(f"适配器 {name} 注册失败: {e}")
170
- # 提交适配器加载失败事件
171
- await lifecycle.submit_event(
172
- "adapter.load",
173
- msg=f"适配器 {name} 加载失败: {e}",
174
- data={
175
- "platform": name,
176
- "success": False
177
- }
178
- )
179
- return False
180
-
181
- register_tasks.append(register_single_adapter(adapter_name, adapter_obj))
182
-
183
- # 等待所有注册任务完成
184
- register_results = await asyncio.gather(*register_tasks, return_exceptions=True)
185
-
186
- # 检查是否有注册失败的情况
187
- return not any(isinstance(result, Exception) or result is False for result in register_results)
@@ -1,82 +0,0 @@
1
- # type: ignore
2
- #
3
- # Auto-generated type stub for adapter_loader.py
4
- # DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
5
- #
6
-
7
- """
8
- ErisPulse 适配器加载器
9
-
10
- 专门用于从 PyPI 包加载和初始化适配器
11
-
12
- {!--< tips >!--}
13
- 1. 适配器必须通过 entry-points 机制注册到 erispulse.adapter 组
14
- 2. 适配器类必须继承 BaseAdapter
15
- 3. 适配器不适用懒加载
16
- {!--< /tips >!--}
17
- """
18
-
19
- import sys
20
- import asyncio
21
- import importlib.metadata
22
- from typing import Dict, List, Any, Tuple
23
- from .base_loader import BaseLoader
24
- from ..Core.logger import logger
25
- from ..Core.lifecycle import lifecycle
26
-
27
- class AdapterLoader(BaseLoader):
28
- """
29
- 适配器加载器
30
-
31
- 负责从 PyPI entry-points 加载适配器
32
-
33
- {!--< tips >!--}
34
- 使用方式:
35
- >>> loader = AdapterLoader()
36
- >>> adapter_objs, enabled, disabled = await loader.load(adapter_manager)
37
- {!--< /tips >!--}
38
- """
39
- def __init__(self: None) -> ...:
40
- """
41
- 初始化适配器加载器
42
- """
43
- ...
44
- def _get_entry_point_group(self: object) -> str:
45
- """
46
- 获取 entry-point 组名
47
-
48
- :return: "erispulse.adapter"
49
- """
50
- ...
51
- async def _process_entry_point(self: object, entry_point: Any, objs: Dict[(str, Any)], enabled_list: List[str], disabled_list: List[str], manager_instance: Any) -> Tuple[(Dict[(str, Any)], List[str], List[str])]:
52
- """
53
- 处理单个适配器 entry-point
54
-
55
- :param entry_point: entry-point 对象
56
- :param objs: 适配器对象字典
57
- :param enabled_list: 启用的适配器列表
58
- :param disabled_list: 停用的适配器列表
59
- :param manager_instance: 适配器管理器实例
60
-
61
- :return:
62
- Dict[str, Any]: 更新后的适配器对象字典
63
- List[str]: 更新后的启用适配器列表
64
- List[str]: 更新后的禁用适配器列表
65
-
66
- :raises ImportError: 当适配器加载失败时抛出
67
- """
68
- ...
69
- async def register_to_manager(self: object, adapters: List[str], adapter_objs: Dict[(str, Any)], manager_instance: Any) -> bool:
70
- """
71
- 将适配器注册到管理器
72
-
73
- :param adapters: 适配器名称列表
74
- :param adapter_objs: 适配器对象字典
75
- :param manager_instance: 适配器管理器实例
76
- :return: 适配器注册是否成功
77
-
78
- {!--< tips >!--}
79
- 此方法由初始化协调器调用
80
- {!--< /tips >!--}
81
- """
82
- ...