ErisPulse 2.2.0.dev2__tar.gz → 2.2.1.dev0__tar.gz
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-2.2.0.dev2 → erispulse-2.2.1.dev0}/.github/tools/update-api-docs.py +18 -16
- erispulse-2.2.1.dev0/CONTRIBUTING.md +43 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/PKG-INFO +32 -52
- erispulse-2.2.1.dev0/README.md +118 -0
- erispulse-2.2.1.dev0/devs/test_cmd.py +433 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/AIDocs/ErisPulse-AdapterDev.md +1352 -587
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/AIDocs/ErisPulse-Core.md +1376 -767
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/AIDocs/ErisPulse-Full.md +1381 -763
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/AIDocs/ErisPulse-ModuleDev.md +1387 -769
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/CHANGELOG.md +61 -1
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/Development/Adapter.md +2 -2
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/Development/Module.md +11 -2
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/PlatformFeatures.md +5 -162
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/UseCore.md +275 -21
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/api/ErisPulse/Core/Event/__init__.md +2 -2
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/api/ErisPulse/Core/Event/base.md +25 -24
- erispulse-2.2.1.dev0/docs/api/ErisPulse/Core/Event/command.md +154 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/api/ErisPulse/Core/Event/exceptions.md +10 -10
- erispulse-2.2.1.dev0/docs/api/ErisPulse/Core/Event/message.md +101 -0
- erispulse-2.2.1.dev0/docs/api/ErisPulse/Core/Event/meta.md +100 -0
- erispulse-2.2.1.dev0/docs/api/ErisPulse/Core/Event/notice.md +118 -0
- erispulse-2.2.1.dev0/docs/api/ErisPulse/Core/Event/request.md +82 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/api/ErisPulse/Core/adapter.md +74 -74
- erispulse-2.2.1.dev0/docs/api/ErisPulse/Core/config.md +44 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/api/ErisPulse/Core/env.md +2 -2
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/api/ErisPulse/Core/erispulse_config.md +2 -2
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/api/ErisPulse/Core/exceptions.md +27 -2
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/api/ErisPulse/Core/logger.md +33 -33
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/api/ErisPulse/Core/module.md +31 -31
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/api/ErisPulse/Core/module_registry.md +40 -40
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/api/ErisPulse/Core/router.md +28 -28
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/api/ErisPulse/Core/storage.md +64 -64
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/api/ErisPulse/__init__.md +58 -58
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/api/ErisPulse/__main__.md +133 -133
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/pyproject.toml +2 -2
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/Event/base.py +20 -10
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/Event/command.py +163 -3
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/Event/message.py +36 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/Event/meta.py +36 -1
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/Event/notice.py +45 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/Event/request.py +27 -0
- erispulse-2.2.0.dev2/README.md +0 -138
- erispulse-2.2.0.dev2/devs/test_cmd.py +0 -242
- erispulse-2.2.0.dev2/docs/api/ErisPulse/Core/Event/command.md +0 -20
- erispulse-2.2.0.dev2/docs/api/ErisPulse/Core/Event/message.md +0 -20
- erispulse-2.2.0.dev2/docs/api/ErisPulse/Core/Event/meta.md +0 -19
- erispulse-2.2.0.dev2/docs/api/ErisPulse/Core/Event/notice.md +0 -19
- erispulse-2.2.0.dev2/docs/api/ErisPulse/Core/Event/request.md +0 -19
- erispulse-2.2.0.dev2/docs/api/ErisPulse/Core/config.md +0 -17
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/.github/ISSUE_TEMPLATE/module_submission.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/.github/assets/docs/install_pip.gif +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/.github/assets/erispulse_logo.png +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/.github/scripts/update_packages.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/.github/tools/merge_md.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/.github/workflows/auto-tag-release.yml +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/.github/workflows/auto-update-packages.yml +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/.github/workflows/pypi-publish.yml +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/.gitignore +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/.python-version +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/.worker/worker.js +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/CODE_OF_CONDUCT.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/LICENSE +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/SECURITY.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/devs/test.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/devs/test_adapter.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/devs/test_event.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/devs/test_files/test.docx +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/devs/test_files/test.jpg +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/devs/test_files/test.mp4 +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/AIModuleGeneration.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/AdapterStandards/APIResponse.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/AdapterStandards/EventConversion.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/AdapterStandards/README.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/CLI.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/Development/CLI.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/Development/README.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/StyleGuide/DocstringSpec.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/StyleGuide/README.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/docs/quick-start.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-adapter/LICENSE +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-adapter/MyAdapter/Core.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-adapter/MyAdapter/__init__.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-adapter/README.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-adapter/pyproject.toml +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-cli-module/LICENSE +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-cli-module/README.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-cli-module/my_cli_module/__init__.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-cli-module/my_cli_module/cli.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-cli-module/pyproject.toml +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-module/LICENSE +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-module/MyModule/Core.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-module/MyModule/__init__.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-module/README.md +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/examples/example-module/pyproject.toml +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/packages.json +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/scripts/install/install.ps1 +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/scripts/install/install.sh +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/Event/__init__.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/Event/exceptions.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/__init__.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/adapter.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/config.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/env.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/erispulse_config.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/exceptions.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/logger.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/module.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/module_registry.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/router.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/Core/storage.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/__init__.py +0 -0
- {erispulse-2.2.0.dev2 → erispulse-2.2.1.dev0}/src/ErisPulse/__main__.py +0 -0
|
@@ -117,11 +117,9 @@ def parse_python_file(file_path: str) -> Tuple[Optional[str], List[Dict], List[D
|
|
|
117
117
|
# 处理类定义
|
|
118
118
|
if isinstance(node, ast.ClassDef):
|
|
119
119
|
class_doc = ast.get_docstring(node)
|
|
120
|
-
processed_class_doc = process_docstring(class_doc) if class_doc else
|
|
120
|
+
processed_class_doc = process_docstring(class_doc) if class_doc else ""
|
|
121
121
|
|
|
122
|
-
|
|
123
|
-
continue
|
|
124
|
-
|
|
122
|
+
# 不管类有没有文档,都要处理其中的方法
|
|
125
123
|
methods = []
|
|
126
124
|
# 提取类方法
|
|
127
125
|
for item in node.body:
|
|
@@ -129,7 +127,7 @@ def parse_python_file(file_path: str) -> Tuple[Optional[str], List[Dict], List[D
|
|
|
129
127
|
method_doc = ast.get_docstring(item)
|
|
130
128
|
processed_method_doc = process_docstring(method_doc) if method_doc else None
|
|
131
129
|
|
|
132
|
-
if processed_method_doc:
|
|
130
|
+
if processed_method_doc: # 只有方法有文档才添加
|
|
133
131
|
# 获取函数签名
|
|
134
132
|
args = []
|
|
135
133
|
defaults = dict(zip([arg.arg for arg in item.args.args][-len(item.args.defaults):], item.args.defaults)) if item.args.defaults else {}
|
|
@@ -159,12 +157,14 @@ def parse_python_file(file_path: str) -> Tuple[Optional[str], List[Dict], List[D
|
|
|
159
157
|
bases = [ast.unparse(base) for base in node.bases] if node.bases else []
|
|
160
158
|
class_signature = f"class {node.name}({', '.join(bases)})" if bases else f"class {node.name}"
|
|
161
159
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
160
|
+
# 只有类有文档或者有方法时才添加类
|
|
161
|
+
if processed_class_doc or methods:
|
|
162
|
+
classes.append({
|
|
163
|
+
"name": node.name,
|
|
164
|
+
"signature": class_signature,
|
|
165
|
+
"doc": processed_class_doc,
|
|
166
|
+
"methods": methods
|
|
167
|
+
})
|
|
168
168
|
|
|
169
169
|
# 处理函数定义
|
|
170
170
|
elif isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)):
|
|
@@ -243,11 +243,13 @@ def generate_markdown(module_path: str, module_doc: Optional[str],
|
|
|
243
243
|
if classes:
|
|
244
244
|
content.append("## 类列表\n")
|
|
245
245
|
for cls in classes:
|
|
246
|
+
# 如果类没有文档,显示默认信息
|
|
247
|
+
class_doc = cls['doc'] if cls['doc'] else f"{cls['name']} 类提供相关功能。"
|
|
246
248
|
content.append(f"""### `{cls['signature']}`
|
|
247
249
|
|
|
248
|
-
{
|
|
250
|
+
{class_doc}
|
|
249
251
|
|
|
250
|
-
""")
|
|
252
|
+
""")
|
|
251
253
|
|
|
252
254
|
# 类方法
|
|
253
255
|
if cls["methods"]:
|
|
@@ -256,10 +258,10 @@ def generate_markdown(module_path: str, module_doc: Optional[str],
|
|
|
256
258
|
async_marker = "async " if method["is_async"] else ""
|
|
257
259
|
content.append(f"""##### {async_marker}`{method['signature']}`
|
|
258
260
|
|
|
259
|
-
{method['doc']}
|
|
261
|
+
{method['doc']}
|
|
260
262
|
|
|
261
|
-
---
|
|
262
|
-
""")
|
|
263
|
+
---
|
|
264
|
+
""")
|
|
263
265
|
|
|
264
266
|
# 文档尾部
|
|
265
267
|
content.append(f"<sub>文档最后更新于 {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}</sub>")
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 项目贡献指南
|
|
2
|
+
|
|
3
|
+
## 分支管理规范
|
|
4
|
+
|
|
5
|
+
### 分支结构
|
|
6
|
+
- **main**: 主分支,存放稳定可发布的代码
|
|
7
|
+
- **Develop/v2**: 开发主分支,所有功能分支最终合并至此
|
|
8
|
+
- **Pre-Release/v2**: 预发布分支,用于版本发布前的测试
|
|
9
|
+
- **feature/***: 功能开发分支,按功能命名
|
|
10
|
+
- **Archive/v1**: 归档分支,存放旧版本代码
|
|
11
|
+
|
|
12
|
+
## 贡献流程
|
|
13
|
+
|
|
14
|
+
1. **Fork仓库**
|
|
15
|
+
- 首先fork主仓库到您的个人账户
|
|
16
|
+
|
|
17
|
+
2. **创建个人分支**
|
|
18
|
+
- 从`Develop/v2`创建您的功能分支,命名规范:
|
|
19
|
+
- `feature/描述性名称` (如`feature/wsu2059q`) -> 可为长期的功能开发/修复分支
|
|
20
|
+
|
|
21
|
+
3. **开发工作**
|
|
22
|
+
- 在您的功能分支上进行开发
|
|
23
|
+
- 保持提交信息清晰明确
|
|
24
|
+
- 提交前确保已经在ChangeLog中添加描述
|
|
25
|
+
- 定期从`Develop/v2`拉取更新以避免冲突
|
|
26
|
+
|
|
27
|
+
4. **提交Pull Request**
|
|
28
|
+
- 开发完成后,向`Develop/v2`分支提交PR
|
|
29
|
+
- 在PR的模板中勾选对应选项 或 添加一些详情信息
|
|
30
|
+
|
|
31
|
+
5. **合并到Develop/v2**
|
|
32
|
+
- 审查通过后,代码将被合并到`Develop/v2`
|
|
33
|
+
|
|
34
|
+
6. **发布流程**
|
|
35
|
+
- 版本更新, `Develop/v2` 会随更新合并到 `Pre-Release/v2` 发布并进行测试
|
|
36
|
+
- 测试通过后,代码将最终发布到`main`分支
|
|
37
|
+
|
|
38
|
+
## 注意事项
|
|
39
|
+
|
|
40
|
+
- 请勿直接向`main`或`Pre-Release/v2`分支提交代码
|
|
41
|
+
- 如有疑问,请联系 `support@erisdev.com` 或者 添加我们的社交讨论群: 云湖群ID -> 635409929
|
|
42
|
+
|
|
43
|
+
感谢您的贡献!
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ErisPulse
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.1.dev0
|
|
4
4
|
Summary: ErisPulse 是一个模块化、可扩展的异步 Python SDK 框架,主要用于构建高效、可维护的机器人应用程序。
|
|
5
5
|
Author-email: "艾莉丝·格雷拉特(WSu2059)" <wsu2059@qq.com>
|
|
6
6
|
License: MIT License
|
|
@@ -52,7 +52,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
52
52
|
Classifier: Programming Language :: Python :: 3.12
|
|
53
53
|
Classifier: Programming Language :: Python :: 3.13
|
|
54
54
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
55
|
-
Requires-Python: >=3.
|
|
55
|
+
Requires-Python: >=3.10
|
|
56
56
|
Requires-Dist: aiohttp
|
|
57
57
|
Requires-Dist: colorama
|
|
58
58
|
Requires-Dist: fastapi>=0.116.1
|
|
@@ -71,43 +71,31 @@ Description-Content-Type: text/markdown
|
|
|
71
71
|
|
|
72
72
|

|
|
73
73
|
|
|
74
|
-
[](https://pypi.org/project/ErisPulse/)
|
|
75
75
|
[](https://pypi.org/project/ErisPulse/)
|
|
76
|
+
[](https://socket.dev/pypi/package/ErisPulse)
|
|
76
77
|
|
|
77
|
-
##
|
|
78
|
+
## 文档资源
|
|
78
79
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
[
|
|
82
|
-
[
|
|
83
|
-
|
|
84
|
-
## 模块市场
|
|
85
|
-
|
|
86
|
-
[](https://www.erisdev.com/#market)
|
|
87
|
-
[](https://erispulse.pages.dev/#market)
|
|
88
|
-
[](https://erispulse.github.io/#market)
|
|
89
|
-
[](https://erispulse.netlify.app/#market)
|
|
90
|
-
|
|
91
|
-
---
|
|
80
|
+
| 平台 | 主站点 | 备用站点 |
|
|
81
|
+
|------|--------|---------|
|
|
82
|
+
| 文档 | [erisdev.com](https://www.erisdev.com/#docs) | [Cloudflare](https://erispulse.pages.dev/#docs) • [GitHub](https://erispulse.github.io/#docs) • [Netlify](https://erispulse.netlify.app/#docs) |
|
|
83
|
+
| 模块市场 | [erisdev.com](https://www.erisdev.com/#market) | [Cloudflare](https://erispulse.pages.dev/#market) • [GitHub](https://erispulse.github.io/#market) • [Netlify](https://erispulse.netlify.app/#market) |
|
|
92
84
|
|
|
93
85
|
## 核心特性
|
|
94
86
|
|
|
95
87
|
| 特性 | 描述 |
|
|
96
88
|
|:-----|:-----|
|
|
97
|
-
|
|
|
98
|
-
|
|
|
99
|
-
|
|
|
100
|
-
|
|
|
101
|
-
|
|
|
102
|
-
|
|
103
|
-
---
|
|
89
|
+
| 异步架构 | 完全基于 async/await 的异步设计 |
|
|
90
|
+
| 模块化系统 | 灵活的插件和模块管理 |
|
|
91
|
+
| 热重载 | 开发时自动重载,无需重启 |
|
|
92
|
+
| 错误管理 | 统一的错误处理和报告系统 |
|
|
93
|
+
| 配置管理 | 灵活的配置存储和访问 |
|
|
104
94
|
|
|
105
95
|
## 快速开始
|
|
106
96
|
|
|
107
97
|
### 一键安装脚本
|
|
108
98
|
|
|
109
|
-
我们提供了一键安装脚本,支持所有主流平台:
|
|
110
|
-
|
|
111
99
|
#### Windows (PowerShell):
|
|
112
100
|
|
|
113
101
|
```powershell
|
|
@@ -120,30 +108,30 @@ irm https://get.erisdev.com/install.ps1 -OutFile install.ps1; powershell -Execut
|
|
|
120
108
|
curl -sSL https://get.erisdev.com/install.sh | tee install.sh >/dev/null && chmod +x install.sh && ./install.sh
|
|
121
109
|
```
|
|
122
110
|
|
|
123
|
-
|
|
111
|
+
## 开发与测试
|
|
124
112
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
### 1. 克隆项目并进入目录
|
|
113
|
+
### 1. 克隆项目
|
|
128
114
|
|
|
129
115
|
```bash
|
|
130
116
|
git clone -b Develop/v2 https://github.com/ErisPulse/ErisPulse.git
|
|
131
117
|
cd ErisPulse
|
|
132
118
|
```
|
|
133
119
|
|
|
134
|
-
### 2.
|
|
120
|
+
### 2. 环境搭建
|
|
121
|
+
|
|
122
|
+
使用 uv 同步项目环境:
|
|
135
123
|
|
|
136
124
|
```bash
|
|
137
125
|
uv sync
|
|
138
126
|
|
|
139
|
-
#
|
|
140
|
-
source .venv/bin/activate
|
|
127
|
+
# 激活虚拟环境
|
|
128
|
+
source .venv/bin/activate # macOS/Linux
|
|
141
129
|
# Windows: .venv\Scripts\activate
|
|
142
130
|
```
|
|
143
131
|
|
|
144
|
-
|
|
132
|
+
说明: ErisPulse 使用 Python 3.13 开发,但兼容 Python 3.10+
|
|
145
133
|
|
|
146
|
-
### 3.
|
|
134
|
+
### 3. 安装依赖
|
|
147
135
|
|
|
148
136
|
```bash
|
|
149
137
|
uv pip install -e .
|
|
@@ -161,7 +149,7 @@ python -c "from ErisPulse import sdk; sdk.init()"
|
|
|
161
149
|
|
|
162
150
|
### 5. 运行测试
|
|
163
151
|
|
|
164
|
-
我们提供了一个交互式测试脚本,可以帮助您快速验证SDK
|
|
152
|
+
我们提供了一个交互式测试脚本,可以帮助您快速验证SDK功能(于开发中):
|
|
165
153
|
|
|
166
154
|
```bash
|
|
167
155
|
uv run devs/test.py
|
|
@@ -174,34 +162,26 @@ uv run devs/test.py
|
|
|
174
162
|
- 工具函数测试
|
|
175
163
|
- 适配器功能测试
|
|
176
164
|
|
|
177
|
-
### 6. 开发模式 (热重载)
|
|
178
|
-
|
|
179
|
-
```bash
|
|
180
|
-
epsdk run your_script.py --reload
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
165
|
## 贡献指南
|
|
186
166
|
|
|
187
167
|
我们欢迎各种形式的贡献,包括但不限于:
|
|
188
168
|
|
|
189
|
-
1.
|
|
169
|
+
1. 报告问题
|
|
190
170
|
在 [GitHub Issues](https://github.com/ErisPulse/ErisPulse/issues) 提交bug报告
|
|
191
171
|
|
|
192
|
-
2.
|
|
172
|
+
2. 功能请求
|
|
193
173
|
通过 [社区讨论](https://github.com/ErisPulse/ErisPulse/discussions) 提出新想法
|
|
194
174
|
|
|
195
|
-
3.
|
|
196
|
-
提交 Pull Request 前请阅读我们的 [代码风格](docs/StyleGuide/DocstringSpec.md)
|
|
175
|
+
3. 代码贡献
|
|
176
|
+
提交 Pull Request 前请阅读我们的 [代码风格](docs/StyleGuide/DocstringSpec.md) 以及 [贡献指南](CONTRIBUTING.md)
|
|
197
177
|
|
|
198
|
-
4.
|
|
178
|
+
4. 文档改进
|
|
199
179
|
帮助完善文档和示例代码
|
|
200
180
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
[加入社区讨论 →](https://github.com/ErisPulse/ErisPulse/discussions)
|
|
181
|
+
[加入社区讨论](https://github.com/ErisPulse/ErisPulse/discussions)
|
|
204
182
|
|
|
205
183
|
---
|
|
206
184
|
|
|
207
185
|
[](https://starchart.cc/ErisPulse/ErisPulse)
|
|
186
|
+
|
|
187
|
+
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# ErisPulse - 异步机器人开发框架
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
[](https://pypi.org/project/ErisPulse/)
|
|
6
|
+
[](https://pypi.org/project/ErisPulse/)
|
|
7
|
+
[](https://socket.dev/pypi/package/ErisPulse)
|
|
8
|
+
|
|
9
|
+
## 文档资源
|
|
10
|
+
|
|
11
|
+
| 平台 | 主站点 | 备用站点 |
|
|
12
|
+
|------|--------|---------|
|
|
13
|
+
| 文档 | [erisdev.com](https://www.erisdev.com/#docs) | [Cloudflare](https://erispulse.pages.dev/#docs) • [GitHub](https://erispulse.github.io/#docs) • [Netlify](https://erispulse.netlify.app/#docs) |
|
|
14
|
+
| 模块市场 | [erisdev.com](https://www.erisdev.com/#market) | [Cloudflare](https://erispulse.pages.dev/#market) • [GitHub](https://erispulse.github.io/#market) • [Netlify](https://erispulse.netlify.app/#market) |
|
|
15
|
+
|
|
16
|
+
## 核心特性
|
|
17
|
+
|
|
18
|
+
| 特性 | 描述 |
|
|
19
|
+
|:-----|:-----|
|
|
20
|
+
| 异步架构 | 完全基于 async/await 的异步设计 |
|
|
21
|
+
| 模块化系统 | 灵活的插件和模块管理 |
|
|
22
|
+
| 热重载 | 开发时自动重载,无需重启 |
|
|
23
|
+
| 错误管理 | 统一的错误处理和报告系统 |
|
|
24
|
+
| 配置管理 | 灵活的配置存储和访问 |
|
|
25
|
+
|
|
26
|
+
## 快速开始
|
|
27
|
+
|
|
28
|
+
### 一键安装脚本
|
|
29
|
+
|
|
30
|
+
#### Windows (PowerShell):
|
|
31
|
+
|
|
32
|
+
```powershell
|
|
33
|
+
irm https://get.erisdev.com/install.ps1 -OutFile install.ps1; powershell -ExecutionPolicy Bypass -File install.ps1
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
#### macOS/Linux:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
curl -sSL https://get.erisdev.com/install.sh | tee install.sh >/dev/null && chmod +x install.sh && ./install.sh
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 开发与测试
|
|
43
|
+
|
|
44
|
+
### 1. 克隆项目
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
git clone -b Develop/v2 https://github.com/ErisPulse/ErisPulse.git
|
|
48
|
+
cd ErisPulse
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 2. 环境搭建
|
|
52
|
+
|
|
53
|
+
使用 uv 同步项目环境:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
uv sync
|
|
57
|
+
|
|
58
|
+
# 激活虚拟环境
|
|
59
|
+
source .venv/bin/activate # macOS/Linux
|
|
60
|
+
# Windows: .venv\Scripts\activate
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
说明: ErisPulse 使用 Python 3.13 开发,但兼容 Python 3.10+
|
|
64
|
+
|
|
65
|
+
### 3. 安装依赖
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
uv pip install -e .
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
这将以"开发模式"安装 SDK,所有本地修改都会立即生效。
|
|
72
|
+
|
|
73
|
+
### 4. 验证安装
|
|
74
|
+
|
|
75
|
+
运行以下命令确认 SDK 正常加载:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
python -c "from ErisPulse import sdk; sdk.init()"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 5. 运行测试
|
|
82
|
+
|
|
83
|
+
我们提供了一个交互式测试脚本,可以帮助您快速验证SDK功能(于开发中):
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
uv run devs/test.py
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
测试功能包括:
|
|
90
|
+
- 日志系统测试
|
|
91
|
+
- 环境配置测试
|
|
92
|
+
- 错误管理测试
|
|
93
|
+
- 工具函数测试
|
|
94
|
+
- 适配器功能测试
|
|
95
|
+
|
|
96
|
+
## 贡献指南
|
|
97
|
+
|
|
98
|
+
我们欢迎各种形式的贡献,包括但不限于:
|
|
99
|
+
|
|
100
|
+
1. 报告问题
|
|
101
|
+
在 [GitHub Issues](https://github.com/ErisPulse/ErisPulse/issues) 提交bug报告
|
|
102
|
+
|
|
103
|
+
2. 功能请求
|
|
104
|
+
通过 [社区讨论](https://github.com/ErisPulse/ErisPulse/discussions) 提出新想法
|
|
105
|
+
|
|
106
|
+
3. 代码贡献
|
|
107
|
+
提交 Pull Request 前请阅读我们的 [代码风格](docs/StyleGuide/DocstringSpec.md) 以及 [贡献指南](CONTRIBUTING.md)
|
|
108
|
+
|
|
109
|
+
4. 文档改进
|
|
110
|
+
帮助完善文档和示例代码
|
|
111
|
+
|
|
112
|
+
[加入社区讨论](https://github.com/ErisPulse/ErisPulse/discussions)
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
[](https://starchart.cc/ErisPulse/ErisPulse)
|
|
117
|
+
|
|
118
|
+
|