ErisPulse 2.4.5.dev1__tar.gz → 2.4.5.dev3__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.4.5.dev1 → erispulse-2.4.5.dev3}/PKG-INFO +9 -1
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/README.md +8 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/pyproject.toml +1 -1
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/cli.py +4 -1
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/cli.pyi +1 -1
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/init.py +118 -12
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/install.py +2 -10
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/install.pyi +0 -1
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/run.py +4 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/self_update.py +1 -6
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/self_update.pyi +0 -1
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/uninstall.py +1 -9
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/uninstall.pyi +0 -1
- erispulse-2.4.5.dev3/src/ErisPulse/CLI/console.py +84 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/console.pyi +3 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/registry.py +1 -1
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/wrapper.py +212 -3
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/wrapper.pyi +113 -2
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/__init__.py +12 -3
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/__init__.pyi +4 -3
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/adapter.py +23 -38
- erispulse-2.4.5.dev3/src/ErisPulse/Core/config.py +630 -0
- erispulse-2.4.5.dev3/src/ErisPulse/Core/config.pyi +175 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/logger.py +7 -10
- erispulse-2.4.5.dev3/src/ErisPulse/Core/metrics.py +489 -0
- erispulse-2.4.5.dev3/src/ErisPulse/Core/metrics.pyi +302 -0
- erispulse-2.4.5.dev3/src/ErisPulse/Core/router.py +1234 -0
- erispulse-2.4.5.dev3/src/ErisPulse/Core/router.pyi +451 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/storage.py +1 -1
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/__init__.py +1 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/__init__.pyi +1 -1
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/loaders/module.py +115 -13
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/loaders/module.pyi +1 -3
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/runtime/frame_config.py +5 -3
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/sdk.py +55 -22
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/sdk.pyi +4 -0
- erispulse-2.4.5.dev1/src/ErisPulse/CLI/console.py +0 -47
- erispulse-2.4.5.dev1/src/ErisPulse/Core/config.py +0 -333
- erispulse-2.4.5.dev1/src/ErisPulse/Core/config.pyi +0 -80
- erispulse-2.4.5.dev1/src/ErisPulse/Core/router.py +0 -571
- erispulse-2.4.5.dev1/src/ErisPulse/Core/router.pyi +0 -174
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/.gitignore +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/LICENSE +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/__init__.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/__init__.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/base.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/base.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/__init__.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/__init__.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/init.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/list.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/list.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/list_remote.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/list_remote.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/run.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/upgrade.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/commands/upgrade.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/registry.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/utils/__init__.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/utils/__init__.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/utils/package_manager.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/CLI/utils/package_manager.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Bases/__init__.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Bases/__init__.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Bases/adapter.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Bases/adapter.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Bases/manager.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Bases/manager.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Bases/module.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Bases/module.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Bases/storage.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Bases/storage.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/__init__.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/__init__.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/base.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/base.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/command.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/command.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/message.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/message.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/message_builder.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/message_builder.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/meta.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/meta.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/notice.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/notice.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/request.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/request.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/session_type.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/Event/session_type.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/adapter.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/lifecycle.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/lifecycle.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/logger.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/module.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/module.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/Core/storage.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/__main__.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/__main__.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/finders/__init__.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/finders/__init__.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/finders/adapter.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/finders/adapter.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/finders/bases/__init__.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/finders/bases/__init__.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/finders/bases/finder.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/finders/bases/finder.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/finders/module.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/finders/module.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/loaders/__init__.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/loaders/__init__.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/loaders/adapter.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/loaders/adapter.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/loaders/bases/__init__.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/loaders/bases/__init__.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/loaders/bases/loader.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/loaders/bases/loader.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/loaders/strategy.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/loaders/strategy.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/runtime/__init__.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/runtime/__init__.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/runtime/exceptions.py +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/runtime/exceptions.pyi +0 -0
- {erispulse-2.4.5.dev1 → erispulse-2.4.5.dev3}/src/ErisPulse/runtime/frame_config.pyi +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ErisPulse
|
|
3
|
-
Version: 2.4.5.
|
|
3
|
+
Version: 2.4.5.dev3
|
|
4
4
|
Summary: ErisPulse 是一个模块化、可扩展的异步 Python SDK 框架,主要用于构建高效、可维护的机器人应用程序。
|
|
5
5
|
Author-email: ErisDev <erisdev@88.com>
|
|
6
6
|
Maintainer-email: "艾莉丝·格雷拉特(WSu2059)" <wsu2059@qq.com>
|
|
@@ -214,6 +214,14 @@ docker pull erispulse/erispulse:dev
|
|
|
214
214
|
|
|
215
215
|
</details>
|
|
216
216
|
|
|
217
|
+
### 1Panel 应用商店
|
|
218
|
+
|
|
219
|
+
通过 [1Panel](https://1panel.cn) 应用商店一键安装 ErisPulse,详见 [ErisPulse-1Panel](https://github.com/ErisPulse/ErisPulse-1Panel)。
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
bash <(curl -sL https://get-1panel.erisdev.com/install.sh)
|
|
223
|
+
```
|
|
224
|
+
|
|
217
225
|
### 使用 pip 安装
|
|
218
226
|
|
|
219
227
|
```bash
|
|
@@ -142,6 +142,14 @@ docker pull erispulse/erispulse:dev
|
|
|
142
142
|
|
|
143
143
|
</details>
|
|
144
144
|
|
|
145
|
+
### 1Panel 应用商店
|
|
146
|
+
|
|
147
|
+
通过 [1Panel](https://1panel.cn) 应用商店一键安装 ErisPulse,详见 [ErisPulse-1Panel](https://github.com/ErisPulse/ErisPulse-1Panel)。
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
bash <(curl -sL https://get-1panel.erisdev.com/install.sh)
|
|
151
|
+
```
|
|
152
|
+
|
|
145
153
|
### 使用 pip 安装
|
|
146
154
|
|
|
147
155
|
```bash
|
|
@@ -12,7 +12,7 @@ from argparse import ArgumentParser, RawDescriptionHelpFormatter
|
|
|
12
12
|
|
|
13
13
|
from rich.panel import Panel
|
|
14
14
|
|
|
15
|
-
from .console import console
|
|
15
|
+
from .console import console, print_banner
|
|
16
16
|
from .registry import CommandRegistry
|
|
17
17
|
from .base import Command
|
|
18
18
|
|
|
@@ -143,6 +143,8 @@ class CLI:
|
|
|
143
143
|
args, unknown = self.parser.parse_known_args()
|
|
144
144
|
args._unknown_args = unknown
|
|
145
145
|
|
|
146
|
+
print_banner()
|
|
147
|
+
|
|
146
148
|
# 处理版本选项
|
|
147
149
|
if args.version:
|
|
148
150
|
self._print_version()
|
|
@@ -162,6 +164,7 @@ class CLI:
|
|
|
162
164
|
# 执行命令
|
|
163
165
|
command = self.registry.get(args.command)
|
|
164
166
|
if command:
|
|
167
|
+
console.print(f"[title]{command.description}[/]")
|
|
165
168
|
command.execute(args)
|
|
166
169
|
else:
|
|
167
170
|
console.print(f"[error]未知命令: {args.command}[/]")
|
|
@@ -16,7 +16,7 @@ import traceback
|
|
|
16
16
|
import pkgutil
|
|
17
17
|
from argparse import ArgumentParser, RawDescriptionHelpFormatter
|
|
18
18
|
from rich.panel import Panel
|
|
19
|
-
from .console import console
|
|
19
|
+
from .console import console, print_banner
|
|
20
20
|
from .registry import CommandRegistry
|
|
21
21
|
from .base import Command
|
|
22
22
|
|
|
@@ -84,32 +84,32 @@ class InitCommand(Command):
|
|
|
84
84
|
dir_path.mkdir(exist_ok=True)
|
|
85
85
|
console.print(f"[green]创建目录: {dir_name}[/green]")
|
|
86
86
|
|
|
87
|
-
# 创建配置文件
|
|
87
|
+
# 创建配置文件 (最小必须配置)
|
|
88
88
|
config_file = project_path / "config" / "config.toml"
|
|
89
89
|
if not config_file.exists():
|
|
90
90
|
with open(config_file, "w", encoding="utf-8") as f:
|
|
91
|
-
f.write("# ErisPulse 配置文件\n
|
|
92
|
-
f.write("
|
|
93
|
-
f.write("# 全局配置\n\n")
|
|
91
|
+
f.write("# ErisPulse 配置文件\n")
|
|
92
|
+
f.write("# 完整配置示例请参考 config.full.example\n\n")
|
|
94
93
|
f.write("[ErisPulse.server]\n")
|
|
95
94
|
f.write('host = "0.0.0.0"\n')
|
|
96
95
|
f.write("port = 8000\n\n")
|
|
97
96
|
f.write("[ErisPulse.logger]\n")
|
|
98
97
|
f.write('level = "INFO"\n')
|
|
99
|
-
f.write("log_files = [\"logs/app.log\"]\n")
|
|
100
|
-
f.write("memory_limit = 1000\n\n")
|
|
101
98
|
|
|
102
|
-
# 添加适配器配置
|
|
103
99
|
if adapter_list:
|
|
104
|
-
f.write("[ErisPulse.adapters]\n")
|
|
105
|
-
f.write("# 适配器配置\n\n")
|
|
106
|
-
f.write("[ErisPulse.adapters.status]\n")
|
|
100
|
+
f.write("\n[ErisPulse.adapters.status]\n")
|
|
107
101
|
for adapter in adapter_list:
|
|
108
|
-
f.write(f'{adapter} = false
|
|
109
|
-
f.write("\n")
|
|
102
|
+
f.write(f'{adapter} = false\n')
|
|
110
103
|
|
|
111
104
|
console.print("[green]创建配置文件: config/config.toml[/green]")
|
|
112
105
|
|
|
106
|
+
# 创建完整配置示例文件
|
|
107
|
+
example_file = project_path / "config" / "config.full.example"
|
|
108
|
+
if not example_file.exists():
|
|
109
|
+
with open(example_file, "w", encoding="utf-8") as f:
|
|
110
|
+
f.write(self._get_full_example_config(adapter_list))
|
|
111
|
+
console.print("[green]创建配置示例: config/config.full.example[/green]")
|
|
112
|
+
|
|
113
113
|
# 创建主程序文件
|
|
114
114
|
main_file = project_path / "main.py"
|
|
115
115
|
if not main_file.exists():
|
|
@@ -139,6 +139,112 @@ class InitCommand(Command):
|
|
|
139
139
|
console.print(f"[red]初始化项目失败: {e}[/]")
|
|
140
140
|
return False
|
|
141
141
|
|
|
142
|
+
@staticmethod
|
|
143
|
+
def _get_full_example_config(adapter_list=None):
|
|
144
|
+
"""
|
|
145
|
+
生成完整配置示例文件内容
|
|
146
|
+
|
|
147
|
+
:param adapter_list: list 可用适配器列表
|
|
148
|
+
:return: str 完整配置示例内容
|
|
149
|
+
|
|
150
|
+
{!--< internal-use >!--}
|
|
151
|
+
{!--< /internal-use >!--}
|
|
152
|
+
"""
|
|
153
|
+
lines = [
|
|
154
|
+
"# ErisPulse 完整配置示例",
|
|
155
|
+
"# 此文件展示所有可用配置项及其默认值",
|
|
156
|
+
"# 如需使用,将所需配置复制到 config.toml 并按需修改",
|
|
157
|
+
"",
|
|
158
|
+
"# ==================== 服务器 ====================",
|
|
159
|
+
"",
|
|
160
|
+
"[ErisPulse.server]",
|
|
161
|
+
'host = "0.0.0.0" # 监听地址',
|
|
162
|
+
"port = 8000 # 监听端口",
|
|
163
|
+
"ssl_certfile = null # SSL 证书路径",
|
|
164
|
+
"ssl_keyfile = null # SSL 密钥路径",
|
|
165
|
+
"",
|
|
166
|
+
"# ==================== 日志 ====================",
|
|
167
|
+
"",
|
|
168
|
+
"[ErisPulse.logger]",
|
|
169
|
+
'level = "INFO" # 日志级别: DEBUG/INFO/WARNING/ERROR',
|
|
170
|
+
"log_files = [] # 日志文件列表, 如 [\"logs/app.log\"]",
|
|
171
|
+
"memory_limit = 1000 # 内存日志条数上限",
|
|
172
|
+
"",
|
|
173
|
+
"# ==================== 存储 ====================",
|
|
174
|
+
"",
|
|
175
|
+
"[ErisPulse.storage]",
|
|
176
|
+
"use_global_db = false # 是否使用全局数据库",
|
|
177
|
+
"",
|
|
178
|
+
"# ==================== 事件系统 ====================",
|
|
179
|
+
"",
|
|
180
|
+
"[ErisPulse.event.message]",
|
|
181
|
+
"ignore_self = true # 忽略自身消息",
|
|
182
|
+
"",
|
|
183
|
+
"[ErisPulse.event.command]",
|
|
184
|
+
'prefix = "/" # 命令前缀',
|
|
185
|
+
"case_sensitive = true # 区分大小写",
|
|
186
|
+
"allow_space_prefix = false # 允许前缀前有空格",
|
|
187
|
+
"must_at_bot = false # 必须艾特Bot才触发",
|
|
188
|
+
"",
|
|
189
|
+
"# ==================== 框架 ====================",
|
|
190
|
+
"",
|
|
191
|
+
"[ErisPulse.framework]",
|
|
192
|
+
"enable_lazy_loading = true # 启用模块懒加载",
|
|
193
|
+
"",
|
|
194
|
+
"# ==================== 配置审计 ====================",
|
|
195
|
+
"",
|
|
196
|
+
"[ErisPulse.config.audit]",
|
|
197
|
+
"enabled = false # 是否启用配置审计",
|
|
198
|
+
"max_entries = 1000 # 审计日志最大条数",
|
|
199
|
+
"",
|
|
200
|
+
"# ==================== 指标监控 ====================",
|
|
201
|
+
"",
|
|
202
|
+
"[ErisPulse.metrics]",
|
|
203
|
+
"enabled = false # 是否启用指标采集",
|
|
204
|
+
"",
|
|
205
|
+
"# ==================== 路由增强 ====================",
|
|
206
|
+
"",
|
|
207
|
+
"[ErisPulse.router.cors]",
|
|
208
|
+
"enabled = false",
|
|
209
|
+
'allow_origins = ["*"]',
|
|
210
|
+
'allow_methods = ["*"]',
|
|
211
|
+
'allow_headers = ["*"]',
|
|
212
|
+
"allow_credentials = false",
|
|
213
|
+
"max_age = 600",
|
|
214
|
+
"",
|
|
215
|
+
"[ErisPulse.router.security]",
|
|
216
|
+
"enabled = false",
|
|
217
|
+
"",
|
|
218
|
+
"[ErisPulse.router.security.headers]",
|
|
219
|
+
'X-Content-Type-Options = "nosniff"',
|
|
220
|
+
'X-Frame-Options = "DENY"',
|
|
221
|
+
"",
|
|
222
|
+
"# ==================== 适配器状态 ====================",
|
|
223
|
+
"",
|
|
224
|
+
"[ErisPulse.adapters.status]",
|
|
225
|
+
]
|
|
226
|
+
|
|
227
|
+
if adapter_list:
|
|
228
|
+
for adapter in adapter_list:
|
|
229
|
+
lines.append(f"# {adapter} = false")
|
|
230
|
+
else:
|
|
231
|
+
lines.extend([
|
|
232
|
+
"# yunhu = false",
|
|
233
|
+
"# telegram = false",
|
|
234
|
+
"# onebot11 = false",
|
|
235
|
+
])
|
|
236
|
+
|
|
237
|
+
lines.extend([
|
|
238
|
+
"",
|
|
239
|
+
"# ==================== 模块状态 ====================",
|
|
240
|
+
"",
|
|
241
|
+
"[ErisPulse.modules.status]",
|
|
242
|
+
"# MyModule = true",
|
|
243
|
+
"",
|
|
244
|
+
])
|
|
245
|
+
|
|
246
|
+
return "\n".join(lines)
|
|
247
|
+
|
|
142
248
|
async def _fetch_available_adapters(self):
|
|
143
249
|
"""
|
|
144
250
|
从云端获取可用适配器列表
|
|
@@ -8,7 +8,6 @@ import sys
|
|
|
8
8
|
import asyncio
|
|
9
9
|
from argparse import ArgumentParser
|
|
10
10
|
|
|
11
|
-
from rich.panel import Panel
|
|
12
11
|
from rich.prompt import Confirm, Prompt
|
|
13
12
|
from rich.table import Table
|
|
14
13
|
from rich.box import SIMPLE
|
|
@@ -249,13 +248,6 @@ class InstallCommand(Command):
|
|
|
249
248
|
self._interactive_install(args.upgrade, args.pre)
|
|
250
249
|
|
|
251
250
|
def _interactive_install(self, upgrade: bool = False, pre: bool = False):
|
|
252
|
-
console.print(Panel(
|
|
253
|
-
"[bold cyan]ErisPulse 安装组件[/]\n"
|
|
254
|
-
"选择您要安装的组件类型",
|
|
255
|
-
title="欢迎",
|
|
256
|
-
border_style="cyan"
|
|
257
|
-
))
|
|
258
|
-
|
|
259
251
|
with console.status("[bold green]正在获取远程包列表...", spinner="dots"):
|
|
260
252
|
remote_packages = asyncio.run(self.package_manager.get_remote_packages())
|
|
261
253
|
console.print("[success]✔ 远程包列表获取完成[/]\n")
|
|
@@ -297,7 +289,7 @@ class InstallCommand(Command):
|
|
|
297
289
|
return
|
|
298
290
|
|
|
299
291
|
table = Table(box=SIMPLE, header_style="adapter", show_lines=False)
|
|
300
|
-
table.add_column("序号", style="
|
|
292
|
+
table.add_column("序号", style="#A0B0C0", width=4)
|
|
301
293
|
table.add_column("适配器名", style="adapter")
|
|
302
294
|
table.add_column("包名")
|
|
303
295
|
table.add_column("描述")
|
|
@@ -352,7 +344,7 @@ class InstallCommand(Command):
|
|
|
352
344
|
return
|
|
353
345
|
|
|
354
346
|
table = Table(box=SIMPLE, header_style="module", show_lines=False)
|
|
355
|
-
table.add_column("序号", style="
|
|
347
|
+
table.add_column("序号", style="#A0B0C0", width=4)
|
|
356
348
|
table.add_column("模块名", style="module")
|
|
357
349
|
table.add_column("包名")
|
|
358
350
|
table.add_column("描述")
|
|
@@ -101,6 +101,10 @@ class RunCommand(Command):
|
|
|
101
101
|
console.print(f"[error]脚本 [path]{script}[/] 不存在[/]")
|
|
102
102
|
console.print("[info]使用 [cyan]epsdk init[/cyan] 创建新项目[/]")
|
|
103
103
|
return
|
|
104
|
+
if os.path.isdir(script):
|
|
105
|
+
console.print(f"[error][path]{script}[/] 是一个目录,无法直接运行[/]")
|
|
106
|
+
console.print("[info]请指定具体的脚本文件,例如: [cyan]epsdk run {0}/main.py[/]".format(script))
|
|
107
|
+
return
|
|
104
108
|
self._run_script(script, reload_mode)
|
|
105
109
|
else:
|
|
106
110
|
self._run_internal(reload_mode)
|
|
@@ -8,7 +8,6 @@ import sys
|
|
|
8
8
|
import asyncio
|
|
9
9
|
from argparse import ArgumentParser
|
|
10
10
|
from rich.prompt import Confirm, Prompt
|
|
11
|
-
from rich.panel import Panel
|
|
12
11
|
|
|
13
12
|
from ..utils import PackageManager
|
|
14
13
|
from ..console import console
|
|
@@ -41,11 +40,7 @@ class SelfUpdateCommand(Command):
|
|
|
41
40
|
|
|
42
41
|
def execute(self, args):
|
|
43
42
|
current_version = self.package_manager.get_installed_version()
|
|
44
|
-
console.print(
|
|
45
|
-
f"[title]ErisPulse SDK 自更新[/]\n"
|
|
46
|
-
f"当前版本: [bold]{current_version}[/]",
|
|
47
|
-
title_align="left"
|
|
48
|
-
))
|
|
43
|
+
console.print(f"当前版本: [bold]{current_version}[/]")
|
|
49
44
|
|
|
50
45
|
# 获取可用版本
|
|
51
46
|
with console.status("[bold green]正在获取版本信息...", spinner="dots"):
|
|
@@ -7,7 +7,6 @@ Uninstall 命令实现
|
|
|
7
7
|
import sys
|
|
8
8
|
from argparse import ArgumentParser
|
|
9
9
|
|
|
10
|
-
from rich.panel import Panel
|
|
11
10
|
from rich.prompt import Prompt
|
|
12
11
|
from rich.table import Table
|
|
13
12
|
from rich.box import SIMPLE
|
|
@@ -43,13 +42,6 @@ class UninstallCommand(Command):
|
|
|
43
42
|
self._interactive_uninstall()
|
|
44
43
|
|
|
45
44
|
def _interactive_uninstall(self):
|
|
46
|
-
console.print(Panel(
|
|
47
|
-
"[bold cyan]ErisPulse 卸载向导[/]\n"
|
|
48
|
-
"选择要卸载的包",
|
|
49
|
-
title="卸载向导",
|
|
50
|
-
border_style="cyan"
|
|
51
|
-
))
|
|
52
|
-
|
|
53
45
|
# 获取已安装的包
|
|
54
46
|
installed = self.package_manager.get_installed_packages()
|
|
55
47
|
|
|
@@ -80,7 +72,7 @@ class UninstallCommand(Command):
|
|
|
80
72
|
|
|
81
73
|
# 显示包列表
|
|
82
74
|
table = Table(box=SIMPLE)
|
|
83
|
-
table.add_column("序号", style="
|
|
75
|
+
table.add_column("序号", style="#A0B0C0")
|
|
84
76
|
table.add_column("类型", style="bold")
|
|
85
77
|
table.add_column("名称")
|
|
86
78
|
table.add_column("包名")
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
from rich.console import Console
|
|
3
|
+
from rich.theme import Theme
|
|
4
|
+
from rich.highlighter import RegexHighlighter
|
|
5
|
+
|
|
6
|
+
BANNER = (
|
|
7
|
+
"\n\n"
|
|
8
|
+
"███████╗██████╗ ██╗███████╗██████╗ ██╗ ██╗██╗ ███████╗███████╗\n"
|
|
9
|
+
"██╔════╝██╔══██╗██║██╔════╝██╔══██╗██║ ██║██║ ██╔════╝██╔════╝\n"
|
|
10
|
+
"█████╗ ██████╔╝██║███████╗██████╔╝██║ ██║██║ ███████╗█████╗ \n"
|
|
11
|
+
"██╔══╝ ██╔══██╗██║╚════██║██╔═══╝ ██║ ██║██║ ╚════██║██╔══╝ \n"
|
|
12
|
+
"███████╗██║ ██║██║███████║██║ ╚██████╔╝███████╗███████║███████╗\n"
|
|
13
|
+
"╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚═╝ ╚═════╝ ╚══════╝╚══════╝╚══════╝\n"
|
|
14
|
+
"\n"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
_BANNER_MINI = (
|
|
18
|
+
"\n\n"
|
|
19
|
+
"███████╗██████╗ ███████╗██████╗ ██╗ ██╗\n"
|
|
20
|
+
"██╔════╝██╔══██╗██╔════╝██╔══██╗██║ ██╔╝\n"
|
|
21
|
+
"█████╗ ██████╔╝███████╗██║ ██║█████╔╝ \n"
|
|
22
|
+
"██╔══╝ ██╔═══╝ ╚════██║██║ ██║██╔═██╗ \n"
|
|
23
|
+
"███████╗██║ ███████║██████╔╝██║ ██╗\n"
|
|
24
|
+
"╚══════╝╚═╝ ╚══════╝╚═════╝ ╚═╝ ╚═╝\n"
|
|
25
|
+
"\n"
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
_banner_printed = False
|
|
30
|
+
|
|
31
|
+
def print_banner():
|
|
32
|
+
global _banner_printed
|
|
33
|
+
if _banner_printed:
|
|
34
|
+
return
|
|
35
|
+
_banner_printed = True
|
|
36
|
+
width = console.width
|
|
37
|
+
if width >= 75:
|
|
38
|
+
console.print(BANNER, style="bold white", highlight=False)
|
|
39
|
+
else:
|
|
40
|
+
console.print(_BANNER_MINI, style="bold white", highlight=False)
|
|
41
|
+
|
|
42
|
+
class CommandHighlighter(RegexHighlighter):
|
|
43
|
+
"""
|
|
44
|
+
高亮CLI命令和参数
|
|
45
|
+
|
|
46
|
+
{!--< tips >!--}
|
|
47
|
+
使用正则表达式匹配命令行参数和选项
|
|
48
|
+
{!--< /tips >!--}
|
|
49
|
+
"""
|
|
50
|
+
highlights = [
|
|
51
|
+
r"(?P<switch>\-\-?\w+)",
|
|
52
|
+
r"(?P<option>\[\w+\])",
|
|
53
|
+
r"(?P<command>\b\w+\b)",
|
|
54
|
+
]
|
|
55
|
+
|
|
56
|
+
# 主题配置
|
|
57
|
+
theme = Theme({
|
|
58
|
+
"info": "#A0B0C0",
|
|
59
|
+
"success": "#A5D6A7",
|
|
60
|
+
"warning": "#FFCC80",
|
|
61
|
+
"error": "#FFCDD2",
|
|
62
|
+
"title": "#7DBFE0",
|
|
63
|
+
"default": "default",
|
|
64
|
+
"progress": "#A5D6A7",
|
|
65
|
+
"progress.remaining": "#283545",
|
|
66
|
+
"cmd": "#90CAF9",
|
|
67
|
+
"param": "#80CBC4",
|
|
68
|
+
"switch": "#FFCC80",
|
|
69
|
+
"module": "#80CBC4",
|
|
70
|
+
"adapter": "#7DBFE0",
|
|
71
|
+
"cli": "#A0B0C0",
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
# 全局控制台实例
|
|
75
|
+
console = Console(
|
|
76
|
+
theme=theme,
|
|
77
|
+
color_system="auto",
|
|
78
|
+
highlighter=CommandHighlighter()
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
__all__ = [
|
|
82
|
+
"console",
|
|
83
|
+
"print_banner",
|
|
84
|
+
]
|