ErisPulse 2.1.15__py3-none-any.whl → 2.2.0__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.
@@ -0,0 +1,91 @@
1
+ """
2
+ ErisPulse 通知处理模块
3
+
4
+ 提供基于装饰器的通知事件处理功能
5
+
6
+ {!--< tips >!--}
7
+ 1. 支持好友、群组等不同类型通知
8
+ 2. 支持成员变动等细粒度事件
9
+ {!--< /tips >!--}
10
+ """
11
+
12
+ from .base import BaseEventHandler
13
+ from typing import Callable, Dict, Any
14
+
15
+ class NoticeHandler:
16
+ def __init__(self):
17
+ self.handler = BaseEventHandler("notice", "notice")
18
+
19
+ def on_notice(self, priority: int = 0):
20
+ """
21
+ 通用通知事件装饰器
22
+
23
+ :param priority: 处理器优先级
24
+ :return: 装饰器函数
25
+ """
26
+ def decorator(func: Callable):
27
+ self.handler.register(func, priority)
28
+ return func
29
+ return decorator
30
+
31
+ def on_friend_add(self, priority: int = 0):
32
+ """
33
+ 好友添加通知事件装饰器
34
+
35
+ :param priority: 处理器优先级
36
+ :return: 装饰器函数
37
+ """
38
+ def condition(event: Dict[str, Any]) -> bool:
39
+ return event.get("detail_type") == "friend_increase"
40
+
41
+ def decorator(func: Callable):
42
+ self.handler.register(func, priority, condition)
43
+ return func
44
+ return decorator
45
+
46
+ def on_friend_remove(self, priority: int = 0):
47
+ """
48
+ 好友删除通知事件装饰器
49
+
50
+ :param priority: 处理器优先级
51
+ :return: 装饰器函数
52
+ """
53
+ def condition(event: Dict[str, Any]) -> bool:
54
+ return event.get("detail_type") == "friend_decrease"
55
+
56
+ def decorator(func: Callable):
57
+ self.handler.register(func, priority, condition)
58
+ return func
59
+ return decorator
60
+
61
+ def on_group_increase(self, priority: int = 0):
62
+ """
63
+ 群成员增加通知事件装饰器
64
+
65
+ :param priority: 处理器优先级
66
+ :return: 装饰器函数
67
+ """
68
+ def condition(event: Dict[str, Any]) -> bool:
69
+ return event.get("detail_type") == "group_member_increase"
70
+
71
+ def decorator(func: Callable):
72
+ self.handler.register(func, priority, condition)
73
+ return func
74
+ return decorator
75
+
76
+ def on_group_decrease(self, priority: int = 0):
77
+ """
78
+ 群成员减少通知事件装饰器
79
+
80
+ :param priority: 处理器优先级
81
+ :return: 装饰器函数
82
+ """
83
+ def condition(event: Dict[str, Any]) -> bool:
84
+ return event.get("detail_type") == "group_member_decrease"
85
+
86
+ def decorator(func: Callable):
87
+ self.handler.register(func, priority, condition)
88
+ return func
89
+ return decorator
90
+
91
+ notice = NoticeHandler()
@@ -0,0 +1,61 @@
1
+ """
2
+ ErisPulse 请求处理模块
3
+
4
+ 提供基于装饰器的请求事件处理功能
5
+
6
+ {!--< tips >!--}
7
+ 1. 支持好友请求、群邀请等不同类型请求
8
+ 2. 可以通过返回特定值来同意或拒绝请求
9
+ {!--< /tips >!--}
10
+ """
11
+
12
+ from .base import BaseEventHandler
13
+ from typing import Callable, Dict, Any
14
+
15
+ class RequestHandler:
16
+ def __init__(self):
17
+ self.handler = BaseEventHandler("request", "request")
18
+
19
+ def on_request(self, priority: int = 0):
20
+ """
21
+ 通用请求事件装饰器
22
+
23
+ :param priority: 处理器优先级
24
+ :return: 装饰器函数
25
+ """
26
+ def decorator(func: Callable):
27
+ self.handler.register(func, priority)
28
+ return func
29
+ return decorator
30
+
31
+ def on_friend_request(self, priority: int = 0):
32
+ """
33
+ 好友请求事件装饰器
34
+
35
+ :param priority: 处理器优先级
36
+ :return: 装饰器函数
37
+ """
38
+ def condition(event: Dict[str, Any]) -> bool:
39
+ return event.get("detail_type") == "friend"
40
+
41
+ def decorator(func: Callable):
42
+ self.handler.register(func, priority, condition)
43
+ return func
44
+ return decorator
45
+
46
+ def on_group_request(self, priority: int = 0):
47
+ """
48
+ 群邀请请求事件装饰器
49
+
50
+ :param priority: 处理器优先级
51
+ :return: 装饰器函数
52
+ """
53
+ def condition(event: Dict[str, Any]) -> bool:
54
+ return event.get("detail_type") == "group"
55
+
56
+ def decorator(func: Callable):
57
+ self.handler.register(func, priority, condition)
58
+ return func
59
+ return decorator
60
+
61
+ request = RequestHandler()
@@ -2,22 +2,27 @@ from .adapter import AdapterFather, SendDSL, adapter
2
2
  from .storage import storage
3
3
  from .env import env
4
4
  from .logger import logger
5
- from .mods import mods
5
+ from .module_registry import module_registry
6
+ from .module import module
6
7
  from .router import router, adapter_server
7
8
  from .config import config
8
9
  from . import exceptions
9
10
 
11
+ from . import Event
12
+
10
13
  BaseAdapter = AdapterFather
11
14
 
12
15
  __all__ = [
16
+ 'Event',
13
17
  'BaseAdapter',
14
18
  'AdapterFather',
15
19
  'SendDSL',
16
20
  'adapter',
21
+ 'module',
17
22
  'storage',
18
23
  'env',
19
24
  'logger',
20
- 'mods',
25
+ 'module_registry',
21
26
  'exceptions',
22
27
  'router',
23
28
  'adapter_server',
ErisPulse/Core/logger.py CHANGED
@@ -90,8 +90,8 @@ class Logger:
90
90
  :param level: 日志级别(DEBUG/INFO/WARNING/ERROR/CRITICAL)
91
91
  :return: bool 设置是否成功
92
92
  """
93
- from .mods import mods
94
- if not mods.get_module_status(module_name):
93
+ from .module_registry import module_registry
94
+ if not module_registry.get_module_status(module_name):
95
95
  self._logger.warning(f"模块 {module_name} 未启用,无法设置日志等级。")
96
96
  return False
97
97
  level = level.upper()
@@ -0,0 +1,150 @@
1
+ """
2
+ ErisPulse 模块管理模块
3
+
4
+ 提供便捷的模块访问接口
5
+ """
6
+
7
+ from typing import Any, Optional, Dict
8
+ from .module_registry import module_registry
9
+ from .logger import logger
10
+
11
+ class ModuleManager:
12
+ """
13
+ 模块管理器
14
+
15
+ 提供便捷的模块访问接口,支持获取模块实例、检查模块状态等操作
16
+ """
17
+
18
+ def __init__(self):
19
+ self._modules = {}
20
+
21
+ def get(self, module_name: str) -> Any:
22
+ """
23
+ 获取指定模块的实例
24
+
25
+ :param module_name: [str] 模块名称
26
+ :return: [Any] 模块实例或None
27
+ """
28
+ # 是否已缓存
29
+ if module_name in self._modules:
30
+ return self._modules[module_name]
31
+
32
+ # 从模块注册表获取模块信息
33
+ module_info = module_registry.get_module(module_name)
34
+ if not module_info:
35
+ logger.warning(f"模块 {module_name} 未注册")
36
+ return None
37
+
38
+ # 模块是否启用
39
+ if not module_registry.get_module_status(module_name):
40
+ logger.warning(f"模块 {module_name} 已禁用")
41
+ return None
42
+
43
+ try:
44
+ from .. import sdk
45
+ if hasattr(sdk, module_name):
46
+ module_instance = getattr(sdk, module_name)
47
+ self._modules[module_name] = module_instance
48
+ return module_instance
49
+ else:
50
+ logger.warning(f"模块 {module_name} 实例未找到")
51
+ return None
52
+ except Exception as e:
53
+ logger.error(f"获取模块 {module_name} 实例时出错: {e}")
54
+ return None
55
+
56
+ def exists(self, module_name: str) -> bool:
57
+ """
58
+ 检查模块是否存在
59
+
60
+ :param module_name: [str] 模块名称
61
+ :return: [bool] 模块是否存在
62
+ """
63
+ return module_registry.get_module(module_name) is not None
64
+
65
+ def is_enabled(self, module_name: str) -> bool:
66
+ """
67
+ 检查模块是否启用
68
+
69
+ :param module_name: [str] 模块名称
70
+ :return: [bool] 模块是否启用
71
+ """
72
+ return module_registry.get_module_status(module_name)
73
+
74
+ def enable(self, module_name: str) -> bool:
75
+ """
76
+ 启用模块
77
+
78
+ :param module_name: [str] 模块名称
79
+ :return: [bool] 操作是否成功
80
+ """
81
+ if not self.exists(module_name):
82
+ logger.error(f"模块 {module_name} 不存在")
83
+ return False
84
+
85
+ module_registry.set_module_status(module_name, True)
86
+ logger.info(f"模块 {module_name} 已启用")
87
+ return True
88
+
89
+ def disable(self, module_name: str) -> bool:
90
+ """
91
+ 禁用模块
92
+
93
+ :param module_name: [str] 模块名称
94
+ :return: [bool] 操作是否成功
95
+ """
96
+ if not self.exists(module_name):
97
+ logger.error(f"模块 {module_name} 不存在")
98
+ return False
99
+
100
+ module_registry.set_module_status(module_name, False)
101
+ logger.info(f"模块 {module_name} 已禁用")
102
+ # 如果模块在缓存中,移除它
103
+ if module_name in self._modules:
104
+ del self._modules[module_name]
105
+ return True
106
+
107
+ def list_modules(self) -> Dict[str, Dict[str, Any]]:
108
+ """
109
+ 列出所有模块信息
110
+
111
+ :return: [Dict[str, Dict[str, Any]]] 模块信息字典
112
+ """
113
+ return module_registry.get_all_modules()
114
+
115
+ def get_info(self, module_name: str) -> Optional[Dict[str, Any]]:
116
+ """
117
+ 获取模块详细信息
118
+
119
+ :param module_name: [str] 模块名称
120
+ :return: [Optional[Dict[str, Any]]] 模块信息字典
121
+ """
122
+ return module_registry.get_module(module_name)
123
+
124
+ def __getattr__(self, module_name: str) -> Any:
125
+ """
126
+ 通过属性访问获取模块实例
127
+
128
+ :param module_name: [str] 模块名称
129
+ :return: [Any] 模块实例
130
+ :raises AttributeError: 当模块不存在或未启用时
131
+ """
132
+ module_instance = self.get(module_name)
133
+ if module_instance is None:
134
+ raise AttributeError(f"模块 {module_name} 不存在或未启用")
135
+ return module_instance
136
+
137
+ def __contains__(self, module_name: str) -> bool:
138
+ """
139
+ 检查模块是否存在且处于启用状态
140
+
141
+ :param module_name: [str] 模块名称
142
+ :return: [bool] 模块是否存在且启用
143
+ """
144
+ return self.exists(module_name) and self.is_enabled(module_name)
145
+
146
+ module = ModuleManager()
147
+
148
+ __all__ = [
149
+ "module"
150
+ ]
@@ -10,19 +10,18 @@ ErisPulse 模块管理器
10
10
  {!--< /tips >!--}
11
11
  """
12
12
 
13
- import json
14
13
  from typing import Dict, Optional, Any, List, Set, Tuple, Union, Type, FrozenSet
15
14
 
16
- class ModuleManager:
15
+ class ModuleRegistry:
17
16
  """
18
- 模块管理器
17
+ ErisPulse 模块注册表
19
18
 
20
- 管理所有模块的注册、状态和依赖关系
19
+ 管理所有模块的注册信息和启用状态
21
20
 
22
21
  {!--< tips >!--}
23
- 1. 通过set_module/get_module管理模块信息
24
- 2. 通过set_module_status/get_module_status控制模块状态
25
- 3. 通过set_all_modules/get_all_modules批量操作模块
22
+ 1. 模块信息通过 set_module/get_module 管理
23
+ 2. 模块状态通过 set_module_status/get_module_status 控制
24
+ 3. 支持批量操作模块信息
26
25
  {!--< /tips >!--}
27
26
  """
28
27
 
@@ -66,14 +65,14 @@ class ModuleManager:
66
65
  """
67
66
  设置模块启用状态
68
67
 
69
- :param module_name: 模块名称
70
- :param status: 启用状态
68
+ :param module_name: [str] 模块名称
69
+ :param status: [bool] 启用状态 (True=启用, False=禁用)
71
70
 
72
71
  :example:
73
72
  >>> # 启用模块
74
- >>> mods.set_module_status("MyModule", True)
73
+ >>> module_registry.set_module_status("MyModule", True)
75
74
  >>> # 禁用模块
76
- >>> mods.set_module_status("MyModule", False)
75
+ >>> module_registry.set_module_status("MyModule", False)
77
76
  """
78
77
  from .logger import logger
79
78
  self.storage.set(f"{self.status_prefix}{module_name}", bool(status))
@@ -83,11 +82,11 @@ class ModuleManager:
83
82
  """
84
83
  获取模块启用状态
85
84
 
86
- :param module_name: 模块名称
87
- :return: 模块是否启用
85
+ :param module_name: [str] 模块名称
86
+ :return: [bool] 模块是否启用
88
87
 
89
88
  :example:
90
- >>> if mods.get_module_status("MyModule"):
89
+ >>> if module_registry.get_module_status("MyModule"):
91
90
  >>> print("模块已启用")
92
91
  """
93
92
  status = self.storage.get(f"{self.status_prefix}{module_name}", True)
@@ -97,15 +96,19 @@ class ModuleManager:
97
96
 
98
97
  def set_module(self, module_name: str, module_info: Dict[str, Any]) -> None:
99
98
  """
100
- 设置模块信息
99
+ 注册或更新模块信息
101
100
 
102
- :param module_name: 模块名称
103
- :param module_info: 模块信息字典
101
+ :param module_name: [str] 模块名称
102
+ :param module_info: [Dict[str, Any]] 模块信息字典
103
+ 必须包含 version 和 description 字段
104
104
 
105
105
  :example:
106
- >>> mods.set_module("MyModule", {
106
+ >>> module_registry.set_module("MyModule", {
107
107
  >>> "version": "1.0.0",
108
108
  >>> "description": "我的模块",
109
+ >>> "dependencies": [],
110
+ >>> "author": "开发者",
111
+ >>> "license": "MIT"
109
112
  >>> })
110
113
  """
111
114
  self.storage.set(f"{self.module_prefix}{module_name}", module_info)
@@ -114,11 +117,11 @@ class ModuleManager:
114
117
  """
115
118
  获取模块信息
116
119
 
117
- :param module_name: 模块名称
118
- :return: 模块信息字典或None
120
+ :param module_name: [str] 模块名称
121
+ :return: [Optional[Dict[str, Any]]] 模块信息字典或None
119
122
 
120
123
  :example:
121
- >>> module_info = mods.get_module("MyModule")
124
+ >>> module_info = module_registry.get_module("MyModule")
122
125
  >>> if module_info:
123
126
  >>> print(f"模块版本: {module_info.get('version')}")
124
127
  """
@@ -126,12 +129,13 @@ class ModuleManager:
126
129
 
127
130
  def set_all_modules(self, modules_info: Dict[str, Dict[str, Any]]) -> None:
128
131
  """
129
- 批量设置多个模块信息
132
+ 批量设置模块信息
130
133
 
131
- :param modules_info: 模块信息字典
134
+ :param modules_info: [Dict[str, Dict[str, Any]]] 模块信息字典
135
+ 格式: {模块名: 模块信息}
132
136
 
133
137
  :example:
134
- >>> mods.set_all_modules({
138
+ >>> module_registry.set_all_modules({
135
139
  >>> "Module1": {"version": "1.0", "status": True},
136
140
  >>> "Module2": {"version": "2.0", "status": False}
137
141
  >>> })
@@ -141,12 +145,12 @@ class ModuleManager:
141
145
 
142
146
  def get_all_modules(self) -> Dict[str, Dict[str, Any]]:
143
147
  """
144
- 获取所有模块信息
148
+ 获取所有已注册模块信息
145
149
 
146
- :return: 模块信息字典
150
+ :return: [Dict[str, Dict[str, Any]]] 所有模块信息字典
147
151
 
148
152
  :example:
149
- >>> all_modules = mods.get_all_modules()
153
+ >>> all_modules = module_registry.get_all_modules()
150
154
  >>> for name, info in all_modules.items():
151
155
  >>> print(f"{name}: {info.get('status')}")
152
156
  """
@@ -173,13 +177,13 @@ class ModuleManager:
173
177
 
174
178
  def remove_module(self, module_name: str) -> bool:
175
179
  """
176
- 移除模块
180
+ 移除模块注册信息
177
181
 
178
- :param module_name: 模块名称
179
- :return: 是否成功移除
182
+ :param module_name: [str] 模块名称
183
+ :return: [bool] 是否成功移除
180
184
 
181
185
  :example:
182
- >>> if mods.remove_module("OldModule"):
186
+ >>> if module_registry.remove_module("OldModule"):
183
187
  >>> print("模块已移除")
184
188
  """
185
189
  module_key = f"{self.module_prefix}{module_name}"
@@ -193,14 +197,14 @@ class ModuleManager:
193
197
 
194
198
  def update_prefixes(self, module_prefix: Optional[str] = None, status_prefix: Optional[str] = None) -> None:
195
199
  """
196
- 更新模块前缀配置
200
+ 更新模块存储前缀配置
197
201
 
198
- :param module_prefix: 新的模块数据前缀(可选)
199
- :param status_prefix: 新的模块状态前缀(可选)
202
+ :param module_prefix: [Optional[str]] 模块数据前缀 (默认: "erispulse.data.modules.info:")
203
+ :param status_prefix: [Optional[str]] 模块状态前缀 (默认: "erispulse.data.modules.status:")
200
204
 
201
205
  :example:
202
206
  >>> # 更新模块前缀
203
- >>> mods.update_prefixes(
207
+ >>> module_registry.update_prefixes(
204
208
  >>> module_prefix="custom.module.data:",
205
209
  >>> status_prefix="custom.module.status:"
206
210
  >>> )
@@ -216,8 +220,8 @@ class ModuleManager:
216
220
  self.storage.set("erispulse.system.status_prefix", status_prefix)
217
221
 
218
222
 
219
- mods = ModuleManager()
223
+ module_registry = ModuleRegistry()
220
224
 
221
225
  __all__ = [
222
- "mods",
226
+ "module_registry",
223
227
  ]
ErisPulse/__init__.py CHANGED
@@ -10,9 +10,6 @@ ErisPulse SDK 主模块
10
10
  {!--< /tips >!--}
11
11
  """
12
12
 
13
- __version__ = "2.1.15-dev.4"
14
- __author__ = "ErisPulse"
15
-
16
13
  import os
17
14
  import sys
18
15
  import importlib
@@ -26,22 +23,32 @@ from pathlib import Path
26
23
  from .Core import logger
27
24
  from .Core import storage
28
25
  from .Core import env
29
- from .Core import mods
26
+ from .Core import module_registry
30
27
  from .Core import adapter, AdapterFather, SendDSL
28
+ from .Core import module
31
29
  from .Core import router, adapter_server
32
30
  from .Core import exceptions
33
31
  from .Core import config
32
+ from .Core import Event
33
+
34
+ try:
35
+ __version__ = importlib.metadata.version('ErisPulse')
36
+ except importlib.metadata.PackageNotFoundError:
37
+ logger.critical("未找到ErisPulse版本信息,请检查是否正确安装ErisPulse")
38
+ __author__ = "ErisPulse"
34
39
 
35
40
  sdk = sys.modules[__name__]
36
41
 
37
42
  BaseModules = {
43
+ "Event": Event,
38
44
  "logger": logger,
39
45
  "config": config,
40
46
  "exceptions": exceptions,
41
47
  "storage": storage,
42
48
  "env": env,
43
- "mods": mods,
49
+ "module_registry": module_registry,
44
50
  "adapter": adapter,
51
+ "module": module,
45
52
  "router": router,
46
53
  "adapter_server": adapter_server,
47
54
  "SendDSL": SendDSL,
@@ -254,7 +261,7 @@ class AdapterLoader:
254
261
  :raises ImportError: 当适配器加载失败时抛出
255
262
  """
256
263
  meta_name = entry_point.name
257
- adapter_status = mods.get_module_status(meta_name)
264
+ adapter_status = module_registry.get_module_status(meta_name)
258
265
  logger.debug(f"适配器 {meta_name} 状态: {adapter_status}")
259
266
 
260
267
  if adapter_status is False:
@@ -285,7 +292,7 @@ class AdapterLoader:
285
292
  adapter_obj.adapterInfo[meta_name] = adapter_info
286
293
 
287
294
  # 存储适配器信息
288
- mods.set_module(meta_name, adapter_info)
295
+ module_registry.set_module(meta_name, adapter_info)
289
296
 
290
297
  adapter_objs[meta_name] = adapter_obj
291
298
  enabled_adapters.append(meta_name)
@@ -369,7 +376,7 @@ class ModuleLoader:
369
376
  :raises ImportError: 当模块加载失败时抛出
370
377
  """
371
378
  meta_name = entry_point.name
372
- module_status = mods.get_module_status(meta_name)
379
+ module_status = module_registry.get_module_status(meta_name)
373
380
  logger.debug(f"模块 {meta_name} 状态: {module_status}")
374
381
 
375
382
  # 首先检查模块状态,如果明确为False则直接跳过
@@ -401,7 +408,7 @@ class ModuleLoader:
401
408
  module_obj.moduleInfo = module_info
402
409
 
403
410
  # 存储模块信息
404
- mods.set_module(meta_name, module_info)
411
+ module_registry.set_module(meta_name, module_info)
405
412
 
406
413
  module_objs[meta_name] = module_obj
407
414
  enabled_modules.append(meta_name)
ErisPulse/__main__.py CHANGED
@@ -249,8 +249,8 @@ class PackageManager:
249
249
  :raises ImportError: 核心模块不可用时抛出
250
250
  """
251
251
  try:
252
- from ErisPulse.Core import mods
253
- return mods.get_module_status(module_name)
252
+ from ErisPulse.Core import module_registry
253
+ return module_registry.get_module_status(module_name)
254
254
  except ImportError:
255
255
  return True
256
256
  except Exception:
@@ -1718,21 +1718,21 @@ class CLI:
1718
1718
  sys.exit(1)
1719
1719
 
1720
1720
  elif args.command == "module":
1721
- from ErisPulse.Core import mods
1721
+ from ErisPulse.Core import module_registry
1722
1722
  installed = self.package_manager.get_installed_packages()
1723
1723
 
1724
1724
  if args.module_command == "enable":
1725
1725
  if args.module not in installed["modules"]:
1726
1726
  console.print(f"[error]模块 [bold]{args.module}[/] 不存在或未安装[/]")
1727
1727
  else:
1728
- mods.set_module_status(args.module, True)
1728
+ module_registry.set_module_status(args.module, True)
1729
1729
  console.print(f"[success]模块 [bold]{args.module}[/] 已启用[/]")
1730
1730
 
1731
1731
  elif args.module_command == "disable":
1732
1732
  if args.module not in installed["modules"]:
1733
1733
  console.print(f"[error]模块 [bold]{args.module}[/] 不存在或未安装[/]")
1734
1734
  else:
1735
- mods.set_module_status(args.module, False)
1735
+ module_registry.set_module_status(args.module, False)
1736
1736
  console.print(f"[warning]模块 [bold]{args.module}[/] 已禁用[/]")
1737
1737
  else:
1738
1738
  self.parser.parse_args(["module", "--help"])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ErisPulse
3
- Version: 2.1.15
3
+ Version: 2.2.0
4
4
  Summary: ErisPulse 是一个模块化、可扩展的异步 Python SDK 框架,主要用于构建高效、可维护的机器人应用程序。
5
5
  Author-email: "艾莉丝·格雷拉特(WSu2059)" <wsu2059@qq.com>
6
6
  License: MIT License
@@ -0,0 +1,26 @@
1
+ ErisPulse/__init__.py,sha256=L-YLh-5qMYydReBiBO9weceeH7PVv2ONBo40o5ekr3Y,27133
2
+ ErisPulse/__main__.py,sha256=GUh_30fEkWmE0udDFe1Kkwf41hg2v4WgbRY1RswJ9Uc,76331
3
+ ErisPulse/Core/__init__.py,sha256=96QS7gD0QNt27wQkIprye7y_Nja_IH2XUqPstZ4uLsY,589
4
+ ErisPulse/Core/adapter.py,sha256=y75u_heNmpYLDjIBtVTfMzTHZFixWtYFv0JVskNI-2w,18300
5
+ ErisPulse/Core/config.py,sha256=y0ChfCuw-6jAqs9Ii2tPJg0e4A765qzQLRcK6O8zh4c,2425
6
+ ErisPulse/Core/env.py,sha256=IT_6Xks5Ka089O_4SVTvYNIC9Ly1IHX_Esb3SsleRj8,338
7
+ ErisPulse/Core/erispulse_config.py,sha256=QDx401hNX9JcSHqCSVK33X6VTubl6HI1znAK3T_J0K0,3034
8
+ ErisPulse/Core/exceptions.py,sha256=zuTREGczwGzbYT4Z6dACqHwgNRpiJeLFR8aCxFdOg7k,3667
9
+ ErisPulse/Core/logger.py,sha256=g8HgpzK3k-WpnuiU_UQKWdw4s7BLLHOS23uDFrO_7W8,11285
10
+ ErisPulse/Core/module.py,sha256=wCIFC3qHukeu7DSj8TuNMw8s_gzTwk7_coM4oflmieA,4680
11
+ ErisPulse/Core/module_registry.py,sha256=BeOQwh3Pwv2fceBLJEObF6Ek65td0VOFzv3L0aEudXY,7740
12
+ ErisPulse/Core/router.py,sha256=s2EBh2qpt3UXYhB06Ppc1XTFuZ3u0ZfXENJxwkgPoq8,8542
13
+ ErisPulse/Core/storage.py,sha256=oRum4eVaTc3yxcaafggoIvrk41LPbvApSCxkGM3YmzU,17904
14
+ ErisPulse/Core/Event/__init__.py,sha256=ixL1jaF0qXt0LbHckRWPH7Xu159qeeXQcsp4ZOs8J6Y,1120
15
+ ErisPulse/Core/Event/base.py,sha256=cimfKDvFviZsaFU_DGDaN0G_zlz8r7PdFZiUM7_WuAo,3080
16
+ ErisPulse/Core/Event/command.py,sha256=k6aiAYkkCLg3MTxqDeNF9AIiEtPud9CkMbfJzICeZSM,11266
17
+ ErisPulse/Core/Event/exceptions.py,sha256=iGcuPaC7F4cZeujcvBdZb9bzQGnHBdb9CcPKoB760Bo,711
18
+ ErisPulse/Core/Event/message.py,sha256=dXB2-HYJ20jVzuWqUOzH1V4an-F9csF32n_qCG69Gss,2499
19
+ ErisPulse/Core/Event/meta.py,sha256=KjEXilYe6Vj-t30gBlBRrFHxn8vkhKY1c6W99BOxUr4,2172
20
+ ErisPulse/Core/Event/notice.py,sha256=3z7DDbgEAbY0RgcYw9MdaFwxEDzksqc4QriYSEPfHTY,2705
21
+ ErisPulse/Core/Event/request.py,sha256=ojQpNMlYBGPNF9sh3IUwV-dwXZ8sjJRVcogFQLw_aJ8,1721
22
+ erispulse-2.2.0.dist-info/METADATA,sha256=YA7Zl5Ca_ZanCHPm0wEVWFJ5cMG0sbT6hvEhxJpd6Gw,7285
23
+ erispulse-2.2.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
24
+ erispulse-2.2.0.dist-info/entry_points.txt,sha256=Jss71M6nEha0TA-DyVZugPYdcL14s9QpiOeIlgWxzOc,182
25
+ erispulse-2.2.0.dist-info/licenses/LICENSE,sha256=b2XwzcfWuv_36Op3xGdjcuPHgfCz62yT3bXYjfStpxY,1852
26
+ erispulse-2.2.0.dist-info/RECORD,,