ErisPulse 2.3.3.dev0__py3-none-any.whl → 2.3.4.dev0__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__.pyi +26 -0
- ErisPulse/Core/Event/base.pyi +62 -0
- 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 +2 -3
- ErisPulse/Core/Event/wrapper.pyi +403 -0
- ErisPulse/Core/__init__.py +16 -13
- ErisPulse/Core/__init__.pyi +16 -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/__init__.py +10 -9
- ErisPulse/__init__.pyi +309 -0
- ErisPulse/__main__.pyi +24 -0
- ErisPulse/sdk_protocol.py +143 -0
- ErisPulse/sdk_protocol.pyi +97 -0
- ErisPulse/utils/__init__.py +1 -1
- ErisPulse/utils/__init__.pyi +16 -0
- ErisPulse/utils/cli/__init__.py +11 -0
- ErisPulse/utils/cli/__init__.pyi +13 -0
- ErisPulse/utils/cli/__main__.py +225 -0
- ErisPulse/utils/cli/__main__.pyi +81 -0
- ErisPulse/utils/cli/base.py +52 -0
- ErisPulse/utils/cli/base.pyi +50 -0
- ErisPulse/utils/cli/commands/__init__.py +6 -0
- ErisPulse/utils/cli/commands/__init__.pyi +12 -0
- ErisPulse/utils/cli/commands/init.py +400 -0
- ErisPulse/utils/cli/commands/init.pyi +82 -0
- ErisPulse/utils/cli/commands/install.py +307 -0
- ErisPulse/utils/cli/commands/install.pyi +70 -0
- ErisPulse/utils/cli/commands/list.py +165 -0
- ErisPulse/utils/cli/commands/list.pyi +56 -0
- ErisPulse/utils/cli/commands/list_remote.py +128 -0
- ErisPulse/utils/cli/commands/list_remote.pyi +47 -0
- ErisPulse/utils/cli/commands/run.py +112 -0
- ErisPulse/utils/cli/commands/run.pyi +48 -0
- ErisPulse/utils/cli/commands/self_update.py +237 -0
- ErisPulse/utils/cli/commands/self_update.pyi +59 -0
- ErisPulse/utils/cli/commands/uninstall.py +37 -0
- ErisPulse/utils/cli/commands/uninstall.pyi +37 -0
- ErisPulse/utils/cli/commands/upgrade.py +62 -0
- ErisPulse/utils/cli/commands/upgrade.pyi +38 -0
- ErisPulse/utils/cli/registry.py +112 -0
- ErisPulse/utils/cli/registry.pyi +99 -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.dev0.dist-info → erispulse-2.3.4.dev0.dist-info}/METADATA +6 -20
- erispulse-2.3.4.dev0.dist-info/RECORD +89 -0
- {erispulse-2.3.3.dev0.dist-info → erispulse-2.3.4.dev0.dist-info}/licenses/LICENSE +3 -3
- ErisPulse/Core/ux.py +0 -635
- ErisPulse/utils/cli.py +0 -1097
- erispulse-2.3.3.dev0.dist-info/RECORD +0 -35
- {erispulse-2.3.3.dev0.dist-info → erispulse-2.3.4.dev0.dist-info}/WHEEL +0 -0
- {erispulse-2.3.3.dev0.dist-info → erispulse-2.3.4.dev0.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
#
|
|
3
|
+
# Auto-generated type stub for uninstall.py
|
|
4
|
+
# DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
Uninstall 命令实现
|
|
9
|
+
|
|
10
|
+
支持卸载模块、适配器、CLI 扩展
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import sys
|
|
14
|
+
from argparse import ArgumentParser
|
|
15
|
+
from ...package_manager import PackageManager
|
|
16
|
+
from ...console import console
|
|
17
|
+
from ..base import Command
|
|
18
|
+
|
|
19
|
+
class UninstallCommand(Command):
|
|
20
|
+
"""
|
|
21
|
+
卸载命令
|
|
22
|
+
"""
|
|
23
|
+
def __init__(self: None) -> ...:
|
|
24
|
+
"""
|
|
25
|
+
初始化命令
|
|
26
|
+
"""
|
|
27
|
+
...
|
|
28
|
+
def add_arguments(self: object, parser: ArgumentParser) -> ...:
|
|
29
|
+
"""
|
|
30
|
+
添加命令参数
|
|
31
|
+
"""
|
|
32
|
+
...
|
|
33
|
+
def execute(self: object, args: ...) -> ...:
|
|
34
|
+
"""
|
|
35
|
+
执行命令
|
|
36
|
+
"""
|
|
37
|
+
...
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Upgrade 命令实现
|
|
3
|
+
|
|
4
|
+
升级组件
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import sys
|
|
8
|
+
from argparse import ArgumentParser
|
|
9
|
+
from rich.prompt import Confirm
|
|
10
|
+
|
|
11
|
+
from ...package_manager import PackageManager
|
|
12
|
+
from ...console import console
|
|
13
|
+
from ..base import Command
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class UpgradeCommand(Command):
|
|
17
|
+
"""升级命令"""
|
|
18
|
+
|
|
19
|
+
name = "upgrade"
|
|
20
|
+
description = "升级组件(不指定包名则升级所有)"
|
|
21
|
+
|
|
22
|
+
def __init__(self):
|
|
23
|
+
"""初始化命令"""
|
|
24
|
+
self.package_manager = PackageManager()
|
|
25
|
+
|
|
26
|
+
def add_arguments(self, parser: ArgumentParser):
|
|
27
|
+
"""添加命令参数"""
|
|
28
|
+
parser.add_argument(
|
|
29
|
+
'package',
|
|
30
|
+
nargs='*',
|
|
31
|
+
help='要升级的包名 (可选,不指定则升级所有)'
|
|
32
|
+
)
|
|
33
|
+
parser.add_argument(
|
|
34
|
+
'--force', '-f',
|
|
35
|
+
action='store_true',
|
|
36
|
+
help='跳过确认直接升级'
|
|
37
|
+
)
|
|
38
|
+
parser.add_argument(
|
|
39
|
+
'--pre',
|
|
40
|
+
action='store_true',
|
|
41
|
+
help='包含预发布版本'
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
def execute(self, args):
|
|
45
|
+
"""执行命令"""
|
|
46
|
+
if args.package:
|
|
47
|
+
# 升级指定包
|
|
48
|
+
success = self.package_manager.upgrade_package(
|
|
49
|
+
args.package,
|
|
50
|
+
pre=args.pre
|
|
51
|
+
)
|
|
52
|
+
if not success:
|
|
53
|
+
sys.exit(1)
|
|
54
|
+
else:
|
|
55
|
+
# 升级所有包
|
|
56
|
+
if args.force or Confirm.ask(
|
|
57
|
+
"确定要升级所有ErisPulse组件吗?",
|
|
58
|
+
default=False
|
|
59
|
+
):
|
|
60
|
+
success = self.package_manager.upgrade_all()
|
|
61
|
+
if not success:
|
|
62
|
+
sys.exit(1)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
#
|
|
3
|
+
# Auto-generated type stub for upgrade.py
|
|
4
|
+
# DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
Upgrade 命令实现
|
|
9
|
+
|
|
10
|
+
升级组件
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import sys
|
|
14
|
+
from argparse import ArgumentParser
|
|
15
|
+
from rich.prompt import Confirm
|
|
16
|
+
from ...package_manager import PackageManager
|
|
17
|
+
from ...console import console
|
|
18
|
+
from ..base import Command
|
|
19
|
+
|
|
20
|
+
class UpgradeCommand(Command):
|
|
21
|
+
"""
|
|
22
|
+
升级命令
|
|
23
|
+
"""
|
|
24
|
+
def __init__(self: None) -> ...:
|
|
25
|
+
"""
|
|
26
|
+
初始化命令
|
|
27
|
+
"""
|
|
28
|
+
...
|
|
29
|
+
def add_arguments(self: object, parser: ArgumentParser) -> ...:
|
|
30
|
+
"""
|
|
31
|
+
添加命令参数
|
|
32
|
+
"""
|
|
33
|
+
...
|
|
34
|
+
def execute(self: object, args: ...) -> ...:
|
|
35
|
+
"""
|
|
36
|
+
执行命令
|
|
37
|
+
"""
|
|
38
|
+
...
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"""
|
|
2
|
+
CLI 命令注册器
|
|
3
|
+
|
|
4
|
+
负责命令的注册、查找和管理
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from typing import Optional, List, Dict
|
|
8
|
+
from .base import Command
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CommandRegistry:
|
|
12
|
+
"""
|
|
13
|
+
命令注册器
|
|
14
|
+
|
|
15
|
+
管理所有已注册的 CLI 命令
|
|
16
|
+
|
|
17
|
+
{!--< tips >!--}
|
|
18
|
+
1. 使用单例模式确保全局唯一
|
|
19
|
+
2. 支持命令的动态注册和查找
|
|
20
|
+
3. 支持第三方命令的兼容
|
|
21
|
+
{!--< /tips >!--}
|
|
22
|
+
|
|
23
|
+
:ivar _commands: 已注册的命令字典 {name: Command}
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
_instance = None
|
|
27
|
+
|
|
28
|
+
def __new__(cls):
|
|
29
|
+
"""实现单例模式"""
|
|
30
|
+
if cls._instance is None:
|
|
31
|
+
cls._instance = super().__new__(cls)
|
|
32
|
+
cls._instance._commands: Dict[str, Command] = {}
|
|
33
|
+
cls._instance._external_commands: Dict[str, Command] = {}
|
|
34
|
+
return cls._instance
|
|
35
|
+
|
|
36
|
+
def register(self, command: Command):
|
|
37
|
+
"""
|
|
38
|
+
注册命令
|
|
39
|
+
|
|
40
|
+
:param command: 要注册的命令实例
|
|
41
|
+
:raises ValueError: 命令名称已存在时抛出
|
|
42
|
+
"""
|
|
43
|
+
if command.name in self._commands:
|
|
44
|
+
raise ValueError(f"命令 '{command.name}' 已存在")
|
|
45
|
+
self._commands[command.name] = command
|
|
46
|
+
|
|
47
|
+
def register_external(self, name: str, command: Command):
|
|
48
|
+
"""
|
|
49
|
+
注册第三方命令
|
|
50
|
+
|
|
51
|
+
:param name: 命令名称
|
|
52
|
+
:param command: 命令实例
|
|
53
|
+
"""
|
|
54
|
+
self._external_commands[name] = command
|
|
55
|
+
|
|
56
|
+
def get(self, name: str) -> Optional[Command]:
|
|
57
|
+
"""
|
|
58
|
+
获取命令
|
|
59
|
+
|
|
60
|
+
:param name: 命令名称
|
|
61
|
+
:return: 命令实例,未找到返回 None
|
|
62
|
+
"""
|
|
63
|
+
# 优先查找内置命令
|
|
64
|
+
if name in self._commands:
|
|
65
|
+
return self._commands[name]
|
|
66
|
+
# 然后查找外部命令
|
|
67
|
+
return self._external_commands.get(name)
|
|
68
|
+
|
|
69
|
+
def get_all(self) -> List[Command]:
|
|
70
|
+
"""
|
|
71
|
+
获取所有命令(包括外部命令)
|
|
72
|
+
|
|
73
|
+
:return: 所有命令列表
|
|
74
|
+
"""
|
|
75
|
+
return list(self._commands.values()) + list(self._external_commands.values())
|
|
76
|
+
|
|
77
|
+
def list_all(self) -> List[str]:
|
|
78
|
+
"""
|
|
79
|
+
列出所有命令名称
|
|
80
|
+
|
|
81
|
+
:return: 命令名称列表
|
|
82
|
+
"""
|
|
83
|
+
return list(self._commands.keys()) + list(self._external_commands.keys())
|
|
84
|
+
|
|
85
|
+
def list_builtin(self) -> List[str]:
|
|
86
|
+
"""
|
|
87
|
+
列出内置命令名称
|
|
88
|
+
|
|
89
|
+
:return: 内置命令名称列表
|
|
90
|
+
"""
|
|
91
|
+
return list(self._commands.keys())
|
|
92
|
+
|
|
93
|
+
def list_external(self) -> List[str]:
|
|
94
|
+
"""
|
|
95
|
+
列出外部命令名称
|
|
96
|
+
|
|
97
|
+
:return: 外部命令名称列表
|
|
98
|
+
"""
|
|
99
|
+
return list(self._external_commands.keys())
|
|
100
|
+
|
|
101
|
+
def exists(self, name: str) -> bool:
|
|
102
|
+
"""
|
|
103
|
+
检查命令是否存在
|
|
104
|
+
|
|
105
|
+
:param name: 命令名称
|
|
106
|
+
:return: 命令是否存在
|
|
107
|
+
"""
|
|
108
|
+
return name in self._commands or name in self._external_commands
|
|
109
|
+
|
|
110
|
+
def clear_external(self):
|
|
111
|
+
"""清空外部命令"""
|
|
112
|
+
self._external_commands.clear()
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
#
|
|
3
|
+
# Auto-generated type stub for registry.py
|
|
4
|
+
# DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
CLI 命令注册器
|
|
9
|
+
|
|
10
|
+
负责命令的注册、查找和管理
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from typing import Optional, List, Dict
|
|
14
|
+
from .base import Command
|
|
15
|
+
|
|
16
|
+
class CommandRegistry:
|
|
17
|
+
"""
|
|
18
|
+
命令注册器
|
|
19
|
+
|
|
20
|
+
管理所有已注册的 CLI 命令
|
|
21
|
+
|
|
22
|
+
{!--< tips >!--}
|
|
23
|
+
1. 使用单例模式确保全局唯一
|
|
24
|
+
2. 支持命令的动态注册和查找
|
|
25
|
+
3. 支持第三方命令的兼容
|
|
26
|
+
{!--< /tips >!--}
|
|
27
|
+
|
|
28
|
+
:ivar _commands: 已注册的命令字典 {name: Command}
|
|
29
|
+
"""
|
|
30
|
+
def __new__(cls: object) -> ...:
|
|
31
|
+
"""
|
|
32
|
+
实现单例模式
|
|
33
|
+
"""
|
|
34
|
+
...
|
|
35
|
+
def register(self: object, command: Command) -> ...:
|
|
36
|
+
"""
|
|
37
|
+
注册命令
|
|
38
|
+
|
|
39
|
+
:param command: 要注册的命令实例
|
|
40
|
+
:raises ValueError: 命令名称已存在时抛出
|
|
41
|
+
"""
|
|
42
|
+
...
|
|
43
|
+
def register_external(self: object, name: str, command: Command) -> ...:
|
|
44
|
+
"""
|
|
45
|
+
注册第三方命令
|
|
46
|
+
|
|
47
|
+
:param name: 命令名称
|
|
48
|
+
:param command: 命令实例
|
|
49
|
+
"""
|
|
50
|
+
...
|
|
51
|
+
def get(self: object, name: str) -> Optional[Command]:
|
|
52
|
+
"""
|
|
53
|
+
获取命令
|
|
54
|
+
|
|
55
|
+
:param name: 命令名称
|
|
56
|
+
:return: 命令实例,未找到返回 None
|
|
57
|
+
"""
|
|
58
|
+
...
|
|
59
|
+
def get_all(self: object) -> List[Command]:
|
|
60
|
+
"""
|
|
61
|
+
获取所有命令(包括外部命令)
|
|
62
|
+
|
|
63
|
+
:return: 所有命令列表
|
|
64
|
+
"""
|
|
65
|
+
...
|
|
66
|
+
def list_all(self: object) -> List[str]:
|
|
67
|
+
"""
|
|
68
|
+
列出所有命令名称
|
|
69
|
+
|
|
70
|
+
:return: 命令名称列表
|
|
71
|
+
"""
|
|
72
|
+
...
|
|
73
|
+
def list_builtin(self: object) -> List[str]:
|
|
74
|
+
"""
|
|
75
|
+
列出内置命令名称
|
|
76
|
+
|
|
77
|
+
:return: 内置命令名称列表
|
|
78
|
+
"""
|
|
79
|
+
...
|
|
80
|
+
def list_external(self: object) -> List[str]:
|
|
81
|
+
"""
|
|
82
|
+
列出外部命令名称
|
|
83
|
+
|
|
84
|
+
:return: 外部命令名称列表
|
|
85
|
+
"""
|
|
86
|
+
...
|
|
87
|
+
def exists(self: object, name: str) -> bool:
|
|
88
|
+
"""
|
|
89
|
+
检查命令是否存在
|
|
90
|
+
|
|
91
|
+
:param name: 命令名称
|
|
92
|
+
:return: 命令是否存在
|
|
93
|
+
"""
|
|
94
|
+
...
|
|
95
|
+
def clear_external(self: object) -> ...:
|
|
96
|
+
"""
|
|
97
|
+
清空外部命令
|
|
98
|
+
"""
|
|
99
|
+
...
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
#
|
|
3
|
+
# Auto-generated type stub for console.py
|
|
4
|
+
# DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
import sys
|
|
8
|
+
from rich.console import Console
|
|
9
|
+
from rich.theme import Theme
|
|
10
|
+
from rich.highlighter import RegexHighlighter
|
|
11
|
+
|
|
12
|
+
class CommandHighlighter(RegexHighlighter):
|
|
13
|
+
"""
|
|
14
|
+
高亮CLI命令和参数
|
|
15
|
+
|
|
16
|
+
{!--< tips >!--}
|
|
17
|
+
使用正则表达式匹配命令行参数和选项
|
|
18
|
+
{!--< /tips >!--}
|
|
19
|
+
"""
|
|
20
|
+
...
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
#
|
|
3
|
+
# Auto-generated type stub for package_manager.py
|
|
4
|
+
# DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
ErisPulse SDK 包管理器
|
|
9
|
+
|
|
10
|
+
提供包安装、卸载、升级和查询功能
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import os
|
|
14
|
+
import asyncio
|
|
15
|
+
import importlib.metadata
|
|
16
|
+
import json
|
|
17
|
+
import subprocess
|
|
18
|
+
import sys
|
|
19
|
+
import time
|
|
20
|
+
from typing import List, Dict, Tuple, Optional, Any
|
|
21
|
+
from rich.panel import Panel
|
|
22
|
+
from rich.progress import Progress, BarColumn, TextColumn
|
|
23
|
+
from rich.prompt import Confirm
|
|
24
|
+
from .console import console
|
|
25
|
+
|
|
26
|
+
class PackageManager:
|
|
27
|
+
"""
|
|
28
|
+
ErisPulse包管理器
|
|
29
|
+
|
|
30
|
+
提供包安装、卸载、升级和查询功能
|
|
31
|
+
|
|
32
|
+
{!--< tips >!--}
|
|
33
|
+
1. 支持本地和远程包管理
|
|
34
|
+
2. 包含1小时缓存机制
|
|
35
|
+
{!--< /tips >!--}
|
|
36
|
+
"""
|
|
37
|
+
def __init__(self: None) -> ...:
|
|
38
|
+
"""
|
|
39
|
+
初始化包管理器
|
|
40
|
+
"""
|
|
41
|
+
...
|
|
42
|
+
async def _fetch_remote_packages(self: object, url: str) -> Optional[dict]:
|
|
43
|
+
"""
|
|
44
|
+
从指定URL获取远程包数据
|
|
45
|
+
|
|
46
|
+
:param url: 远程包数据URL
|
|
47
|
+
:return: 解析后的JSON数据,失败返回None
|
|
48
|
+
|
|
49
|
+
:raises ClientError: 网络请求失败时抛出
|
|
50
|
+
:raises JSONDecodeError: JSON解析失败时抛出
|
|
51
|
+
"""
|
|
52
|
+
...
|
|
53
|
+
async def get_remote_packages(self: object, force_refresh: bool = ...) -> dict:
|
|
54
|
+
"""
|
|
55
|
+
获取远程包列表,带缓存机制
|
|
56
|
+
|
|
57
|
+
:param force_refresh: 是否强制刷新缓存
|
|
58
|
+
:return: 包含模块和适配器的字典
|
|
59
|
+
|
|
60
|
+
:return:
|
|
61
|
+
dict: {
|
|
62
|
+
"modules": {模块名: 模块信息},
|
|
63
|
+
"adapters": {适配器名: 适配器信息},
|
|
64
|
+
"cli_extensions": {扩展名: 扩展信息}
|
|
65
|
+
}
|
|
66
|
+
"""
|
|
67
|
+
...
|
|
68
|
+
def get_installed_packages(self: object) -> Dict[(str, Dict[(str, Dict[(str, str)])])]:
|
|
69
|
+
"""
|
|
70
|
+
获取已安装的包信息
|
|
71
|
+
|
|
72
|
+
:return: 已安装包字典,包含模块、适配器和CLI扩展
|
|
73
|
+
|
|
74
|
+
:return:
|
|
75
|
+
dict: {
|
|
76
|
+
"modules": {模块名: 模块信息},
|
|
77
|
+
"adapters": {适配器名: 适配器信息},
|
|
78
|
+
"cli_extensions": {扩展名: 扩展信息}
|
|
79
|
+
}
|
|
80
|
+
"""
|
|
81
|
+
...
|
|
82
|
+
def _is_module_enabled(self: object, module_name: str) -> bool:
|
|
83
|
+
"""
|
|
84
|
+
检查模块是否启用
|
|
85
|
+
|
|
86
|
+
:param module_name: 模块名称
|
|
87
|
+
:return: 模块是否启用
|
|
88
|
+
|
|
89
|
+
:raises ImportError: 核心模块不可用时抛出
|
|
90
|
+
"""
|
|
91
|
+
...
|
|
92
|
+
def _normalize_name(self: object, name: str) -> str:
|
|
93
|
+
"""
|
|
94
|
+
标准化包名,统一转为小写以实现大小写不敏感比较
|
|
95
|
+
|
|
96
|
+
:param name: 原始名称
|
|
97
|
+
:return: 标准化后的名称
|
|
98
|
+
"""
|
|
99
|
+
...
|
|
100
|
+
async def _find_package_by_alias(self: object, alias: str) -> Optional[str]:
|
|
101
|
+
"""
|
|
102
|
+
通过别名查找实际包名(大小写不敏感)
|
|
103
|
+
|
|
104
|
+
:param alias: 包别名
|
|
105
|
+
:return: 实际包名,未找到返回None
|
|
106
|
+
"""
|
|
107
|
+
...
|
|
108
|
+
def _find_installed_package_by_name(self: object, name: str) -> Optional[str]:
|
|
109
|
+
"""
|
|
110
|
+
在已安装包中查找实际包名(大小写不敏感)
|
|
111
|
+
|
|
112
|
+
:param name: 包名或别名
|
|
113
|
+
:return: 实际包名,未找到返回None
|
|
114
|
+
"""
|
|
115
|
+
...
|
|
116
|
+
def _run_pip_command_with_output(self: object, args: List[str], description: str) -> Tuple[(bool, str, str)]:
|
|
117
|
+
"""
|
|
118
|
+
执行pip命令并捕获输出
|
|
119
|
+
|
|
120
|
+
:param args: pip命令参数列表
|
|
121
|
+
:param description: 进度条描述
|
|
122
|
+
:return: (是否成功, 标准输出, 标准错误)
|
|
123
|
+
"""
|
|
124
|
+
...
|
|
125
|
+
def _compare_versions(self: object, version1: str, version2: str) -> int:
|
|
126
|
+
"""
|
|
127
|
+
比较两个版本号
|
|
128
|
+
|
|
129
|
+
:param version1: 版本号1
|
|
130
|
+
:param version2: 版本号2
|
|
131
|
+
:return: 1 if version1 > version2, -1 if version1 < version2, 0 if equal
|
|
132
|
+
"""
|
|
133
|
+
...
|
|
134
|
+
def _check_sdk_compatibility(self: object, min_sdk_version: str) -> Tuple[(bool, str)]:
|
|
135
|
+
"""
|
|
136
|
+
检查SDK版本兼容性
|
|
137
|
+
|
|
138
|
+
:param min_sdk_version: 所需的最小SDK版本
|
|
139
|
+
:return: (是否兼容, 当前版本信息)
|
|
140
|
+
"""
|
|
141
|
+
...
|
|
142
|
+
async def _get_package_info(self: object, package_name: str) -> Optional[Dict[(str, Any)]]:
|
|
143
|
+
"""
|
|
144
|
+
获取包的详细信息(包括min_sdk_version等)
|
|
145
|
+
|
|
146
|
+
:param package_name: 包名或别名
|
|
147
|
+
:return: 包信息字典
|
|
148
|
+
"""
|
|
149
|
+
...
|
|
150
|
+
def install_package(self: object, package_names: List[str], upgrade: bool = ..., pre: bool = ...) -> bool:
|
|
151
|
+
"""
|
|
152
|
+
安装指定包(支持多个包)
|
|
153
|
+
|
|
154
|
+
:param package_names: 要安装的包名或别名列表
|
|
155
|
+
:param upgrade: 是否升级已安装的包
|
|
156
|
+
:param pre: 是否包含预发布版本
|
|
157
|
+
:return: 安装是否成功
|
|
158
|
+
"""
|
|
159
|
+
...
|
|
160
|
+
def uninstall_package(self: object, package_names: List[str]) -> bool:
|
|
161
|
+
"""
|
|
162
|
+
卸载指定包(支持多个包,支持别名)
|
|
163
|
+
|
|
164
|
+
:param package_names: 要卸载的包名或别名列表
|
|
165
|
+
:return: 卸载是否成功
|
|
166
|
+
"""
|
|
167
|
+
...
|
|
168
|
+
def upgrade_all(self: object) -> bool:
|
|
169
|
+
"""
|
|
170
|
+
升级所有已安装的ErisPulse包
|
|
171
|
+
|
|
172
|
+
:return: 升级是否成功
|
|
173
|
+
|
|
174
|
+
:raises KeyboardInterrupt: 用户取消操作时抛出
|
|
175
|
+
"""
|
|
176
|
+
...
|
|
177
|
+
def upgrade_package(self: object, package_names: List[str], pre: bool = ...) -> bool:
|
|
178
|
+
"""
|
|
179
|
+
升级指定包(支持多个包)
|
|
180
|
+
|
|
181
|
+
:param package_names: 要升级的包名或别名列表
|
|
182
|
+
:param pre: 是否包含预发布版本
|
|
183
|
+
:return: 升级是否成功
|
|
184
|
+
"""
|
|
185
|
+
...
|
|
186
|
+
def search_package(self: object, query: str) -> Dict[(str, List[Dict[(str, str)]])]:
|
|
187
|
+
"""
|
|
188
|
+
搜索包(本地和远程)
|
|
189
|
+
|
|
190
|
+
:param query: 搜索关键词
|
|
191
|
+
:return: 匹配的包信息
|
|
192
|
+
"""
|
|
193
|
+
...
|
|
194
|
+
def get_installed_version(self: object) -> str:
|
|
195
|
+
"""
|
|
196
|
+
获取当前安装的ErisPulse版本
|
|
197
|
+
|
|
198
|
+
:return: 当前版本号
|
|
199
|
+
"""
|
|
200
|
+
...
|
|
201
|
+
async def get_pypi_versions(self: object) -> List[Dict[(str, Any)]]:
|
|
202
|
+
"""
|
|
203
|
+
从PyPI获取ErisPulse的所有可用版本
|
|
204
|
+
|
|
205
|
+
:return: 版本信息列表
|
|
206
|
+
"""
|
|
207
|
+
...
|
|
208
|
+
def _is_pre_release(self: object, version: str) -> bool:
|
|
209
|
+
"""
|
|
210
|
+
判断版本是否为预发布版本
|
|
211
|
+
|
|
212
|
+
:param version: 版本号
|
|
213
|
+
:return: 是否为预发布版本
|
|
214
|
+
"""
|
|
215
|
+
...
|
|
216
|
+
def update_self(self: object, target_version: str = ..., force: bool = ...) -> bool:
|
|
217
|
+
"""
|
|
218
|
+
更新ErisPulse SDK本身
|
|
219
|
+
|
|
220
|
+
:param target_version: 目标版本号,None表示更新到最新版本
|
|
221
|
+
:param force: 是否强制更新
|
|
222
|
+
:return: 更新是否成功
|
|
223
|
+
"""
|
|
224
|
+
...
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# type: ignore
|
|
2
|
+
#
|
|
3
|
+
# Auto-generated type stub for reload_handler.py
|
|
4
|
+
# DO NOT EDIT MANUALLY - Generated by generate-type-stubs.py
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
ErisPulse SDK 热重载处理器
|
|
9
|
+
|
|
10
|
+
实现热重载功能,监控文件变化并重启进程
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import os
|
|
14
|
+
import subprocess
|
|
15
|
+
import sys
|
|
16
|
+
import time
|
|
17
|
+
from watchdog.events import FileSystemEventHandler
|
|
18
|
+
from .console import console
|
|
19
|
+
|
|
20
|
+
class ReloadHandler(FileSystemEventHandler):
|
|
21
|
+
"""
|
|
22
|
+
文件系统事件处理器
|
|
23
|
+
|
|
24
|
+
实现热重载功能,监控文件变化并重启进程
|
|
25
|
+
|
|
26
|
+
{!--< tips >!--}
|
|
27
|
+
1. 支持.py文件修改重载
|
|
28
|
+
2. 支持配置文件修改重载
|
|
29
|
+
{!--< /tips >!--}
|
|
30
|
+
"""
|
|
31
|
+
def __init__(self: None, script_path: str, reload_mode: bool = ...) -> ...:
|
|
32
|
+
"""
|
|
33
|
+
初始化处理器
|
|
34
|
+
|
|
35
|
+
:param script_path: 要监控的脚本路径
|
|
36
|
+
:param reload_mode: 是否启用重载模式
|
|
37
|
+
"""
|
|
38
|
+
...
|
|
39
|
+
def start_process(self: object) -> ...:
|
|
40
|
+
"""
|
|
41
|
+
启动监控进程
|
|
42
|
+
"""
|
|
43
|
+
...
|
|
44
|
+
def _terminate_process(self: object) -> ...:
|
|
45
|
+
"""
|
|
46
|
+
终止当前进程
|
|
47
|
+
|
|
48
|
+
:raises subprocess.TimeoutExpired: 进程终止超时时抛出
|
|
49
|
+
"""
|
|
50
|
+
...
|
|
51
|
+
def on_modified(self: object, event: ...) -> ...:
|
|
52
|
+
"""
|
|
53
|
+
文件修改事件处理
|
|
54
|
+
|
|
55
|
+
:param event: 文件系统事件
|
|
56
|
+
"""
|
|
57
|
+
...
|
|
58
|
+
def _handle_reload(self: object, event: ..., reason: str) -> ...:
|
|
59
|
+
"""
|
|
60
|
+
处理热重载逻辑
|
|
61
|
+
:param event: 文件系统事件
|
|
62
|
+
:param reason: 重载原因
|
|
63
|
+
"""
|
|
64
|
+
...
|