ErisPulse 1.1.14.dev1__py3-none-any.whl → 1.1.15__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/raiserr.py CHANGED
@@ -1,36 +1,159 @@
1
1
  """
2
2
  # 错误管理系统
3
3
 
4
- 提供错误类型注册、抛出和管理功能,集成全局异常处理。
4
+ 提供错误类型注册、抛出和管理功能,集成全局异常处理。支持自定义错误类型、错误链追踪和全局异常捕获。
5
+
6
+ ## 核心功能
7
+ 1. 错误类型注册和管理
8
+ 2. 动态错误抛出
9
+ 3. 全局异常处理
10
+ 4. 错误信息追踪
11
+ 5. 异步错误处理
5
12
 
6
13
  ## API 文档
7
- ### 错误注册:
8
- - register(name, doc="", base=Exception): 注册新的错误类型
9
- - info(name: str = None): 获取错误类型信息
10
14
 
11
- ### 错误抛出:
12
- - __getattr__(name): 动态获取错误抛出函数
13
- - ErrorType(msg, exit=False): 抛出注册的错误类型
15
+ ### 错误注册
16
+ #### register(name: str, doc: str = "", base: type = Exception) -> type
17
+ 注册新的错误类型。
18
+ - 参数:
19
+ - name: 错误类型名称
20
+ - doc: 错误描述文档
21
+ - base: 基础异常类,默认为Exception
22
+ - 返回:
23
+ - type: 注册的错误类型类
24
+ - 示例:
25
+ ```python
26
+ # 注册一个简单错误
27
+ sdk.raiserr.register("SimpleError", "简单的错误类型")
28
+
29
+ # 注册带有自定义基类的错误
30
+ class CustomBase(Exception):
31
+ pass
32
+ sdk.raiserr.register("AdvancedError", "高级错误", CustomBase)
33
+ ```
14
34
 
15
- ### 全局处理:
16
- - global_exception_handler: 全局同步异常处理器
17
- - async_exception_handler: 全局异步异常处理器
35
+ #### info(name: str = None) -> dict | None
36
+ 获取错误类型信息。
37
+ - 参数:
38
+ - name: 错误类型名称,如果为None则返回所有错误类型信息
39
+ - 返回:
40
+ - dict: 包含错误类型信息的字典,包括类型名、文档和类引用
41
+ - None: 如果指定的错误类型不存在
42
+ - 示例:
43
+ ```python
44
+ # 获取特定错误信息
45
+ error_info = sdk.raiserr.info("SimpleError")
46
+ print(f"错误类型: {error_info['type']}")
47
+ print(f"错误描述: {error_info['doc']}")
48
+
49
+ # 获取所有注册的错误信息
50
+ all_errors = sdk.raiserr.info()
51
+ for name, info in all_errors.items():
52
+ print(f"{name}: {info['doc']}")
53
+ ```
18
54
 
19
- ### 示例用法:
55
+ ### 错误抛出
56
+ #### ErrorType(msg: str, exit: bool = False)
57
+ 动态生成的错误抛出函数。
58
+ - 参数:
59
+ - msg: 错误消息
60
+ - exit: 是否在抛出错误后退出程序
61
+ - 示例:
62
+ ```python
63
+ # 抛出不退出的错误
64
+ sdk.raiserr.SimpleError("操作失败")
65
+
66
+ # 抛出导致程序退出的错误
67
+ sdk.raiserr.CriticalError("致命错误", exit=True)
68
+
69
+ # 带有异常捕获的使用方式
70
+ try:
71
+ sdk.raiserr.ValidationError("数据验证失败")
72
+ except Exception as e:
73
+ print(f"捕获到错误: {e}")
74
+ ```
20
75
 
76
+ ### 全局异常处理
77
+ #### global_exception_handler(exc_type: type, exc_value: Exception, exc_traceback: traceback)
78
+ 全局同步异常处理器。
79
+ - 参数:
80
+ - exc_type: 异常类型
81
+ - exc_value: 异常值
82
+ - exc_traceback: 异常追踪信息
83
+ - 示例:
84
+ ```python
85
+ # 系统会自动捕获未处理的异常
86
+ def risky_operation():
87
+ raise Exception("未处理的异常")
88
+
89
+ # 异常会被global_exception_handler捕获并处理
90
+ risky_operation()
21
91
  ```
22
- from ErisPulse import sdk
23
92
 
24
- # 注册自定义错误
25
- sdk.raiserr.register("MyError", doc="自定义错误描述")
93
+ #### async_exception_handler(loop: asyncio.AbstractEventLoop, context: dict)
94
+ 全局异步异常处理器。
95
+ - 参数:
96
+ - loop: 事件循环实例
97
+ - context: 异常上下文信息
98
+ - 示例:
99
+ ```python
100
+ async def async_operation():
101
+ raise Exception("异步操作错误")
102
+
103
+ # 异常会被async_exception_handler捕获并处理
104
+ asyncio.create_task(async_operation())
105
+ ```
26
106
 
27
- # 抛出错误
28
- sdk.raiserr.MyError("发生了错误", exit=False)
107
+ ## 最佳实践
108
+ 1. 错误类型注册
109
+ ```python
110
+ # 为特定功能模块注册错误类型
111
+ sdk.raiserr.register("DatabaseError", "数据库操作错误")
112
+ sdk.raiserr.register("NetworkError", "网络连接错误")
113
+ sdk.raiserr.register("ValidationError", "数据验证错误")
114
+
115
+ # 使用继承关系组织错误类型
116
+ class ModuleError(Exception):
117
+ pass
118
+ sdk.raiserr.register("ConfigError", "配置错误", ModuleError)
119
+ sdk.raiserr.register("PluginError", "插件错误", ModuleError)
120
+ ```
121
+
122
+ 2. 错误处理流程
123
+ ```python
124
+ def process_data(data):
125
+ try:
126
+ if not data:
127
+ sdk.raiserr.ValidationError("数据不能为空")
128
+ if not isinstance(data, dict):
129
+ sdk.raiserr.ValidationError("数据必须是字典类型")
130
+
131
+ # 处理数据...
132
+
133
+ except Exception as e:
134
+ # 错误会被自动记录并处理
135
+ sdk.raiserr.ProcessingError(f"数据处理失败: {str(e)}")
136
+ ```
29
137
 
30
- # 获取错误信息
31
- error_info = sdk.raiserr.info("MyError")
138
+ 3. 异步环境使用
139
+ ```python
140
+ async def async_task():
141
+ try:
142
+ result = await some_async_operation()
143
+ if not result.success:
144
+ sdk.raiserr.AsyncOperationError("异步操作失败")
145
+ except Exception as e:
146
+ # 异步错误会被async_exception_handler捕获
147
+ raise
32
148
  ```
33
149
 
150
+ ## 注意事项
151
+ 1. 错误类型命名应具有描述性,便于理解错误来源
152
+ 2. 错误消息应包含足够的上下文信息,便于调试
153
+ 3. 适当使用exit参数,只在致命错误时设置为True
154
+ 4. 避免在全局异常处理器中执行耗时操作
155
+ 5. 确保异步代码中的错误能够被正确捕获和处理
156
+
34
157
  """
35
158
 
36
159
  import sys
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ErisPulse
3
- Version: 1.1.14.dev1
3
+ Version: 1.1.15
4
4
  Summary: ErisPulse 是一个模块化、可扩展的异步 Python SDK 框架,主要用于构建高效、可维护的机器人应用程序。
5
5
  Author-email: "艾莉丝·格雷拉特(WSu2059)" <wsu2059@qq.com>, runoneall <runoobsteve@gmail.com>
6
6
  License: MIT License
@@ -0,0 +1,13 @@
1
+ ErisPulse/__init__.py,sha256=k-X8WV9sIrYeYDNb8qZyBZ8s8yNL2bKWhZdkPbzRWII,8936
2
+ ErisPulse/__main__.py,sha256=KHBHedKC2bYWeqOi2rENgv_l5Pz-d2y7Bf4ST3R0TY4,52862
3
+ ErisPulse/adapter.py,sha256=3DayPbvWit2D8DTLIvhbP3862arv2UZuAkFnE9QWGro,17479
4
+ ErisPulse/db.py,sha256=a_5uTQk8w2TDp6J6AIQ4rF8Z2IvswuSg8q-Tx0SHfGA,24900
5
+ ErisPulse/logger.py,sha256=np6H4-x3xNpmoOGou5znsfv-iVlX56cVrsX8446cY-M,14764
6
+ ErisPulse/mods.py,sha256=oDVgEh56IUTLZDIxxWTQe5QvQSyWVAb8vhgd1fzFlYo,12253
7
+ ErisPulse/raiserr.py,sha256=Un8VGcVYDOSi7ptRVmyBzUTW7mQzDatqIza6919dQ1w,7034
8
+ ErisPulse/util.py,sha256=tmmZA4Ef5ElB01KZg2fTZLrkZOJbORjnkAd8sXj7xqw,4335
9
+ erispulse-1.1.15.dist-info/METADATA,sha256=4gCjt0C4F_qGRW3rKd0Rn9n2Tr9liDB0eCslFwex7zY,5877
10
+ erispulse-1.1.15.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
11
+ erispulse-1.1.15.dist-info/entry_points.txt,sha256=y8ppdsQhk-azC7_ikQgRr4rITSZ4VC4crVKtzHh4TBY,146
12
+ erispulse-1.1.15.dist-info/licenses/LICENSE,sha256=plj4EYVfKAzc0ZWoC5T2vsQ86u0yLpu17NdAPeIcgVo,1066
13
+ erispulse-1.1.15.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  [console_scripts]
2
- ErisPulse = ErisPulse.__main__:main
3
- ErisPulse-CLI = ErisPulse.__main__:main
4
2
  ep = ErisPulse.__main__:main
3
+ ep-cli = ErisPulse.__main__:main
4
+ ep-init = ErisPulse.__init__:init
5
5
  epsdk = ErisPulse.__main__:main
@@ -1,13 +0,0 @@
1
- ErisPulse/__init__.py,sha256=k-X8WV9sIrYeYDNb8qZyBZ8s8yNL2bKWhZdkPbzRWII,8936
2
- ErisPulse/__main__.py,sha256=aZK7FdvFTgsKgHPYpaeKpA_l2JFhEy9TNy3vndkONFk,50001
3
- ErisPulse/adapter.py,sha256=g5npw-RAmGKXY3gTO8oNA63DRJ3Z9xVrl9BWuus-EQs,9837
4
- ErisPulse/db.py,sha256=rXxpTug5NMZQTJ_07lJTe-PWdoePNPAkYoQDfazFapY,14411
5
- ErisPulse/logger.py,sha256=832gGOiRUfXhYjz9JZ3DfVzB6ttqIimyLU0xk5k7lZ0,7319
6
- ErisPulse/mods.py,sha256=lBCWM0VfsCJehnMgpswKYuHitg30JERg0H4WN6kqgbA,4509
7
- ErisPulse/raiserr.py,sha256=2dJA3g6aje4yxhr1JPeZsrxudblKAOq6T_LMHeRjQ24,3438
8
- ErisPulse/util.py,sha256=tmmZA4Ef5ElB01KZg2fTZLrkZOJbORjnkAd8sXj7xqw,4335
9
- erispulse-1.1.14.dev1.dist-info/METADATA,sha256=I03H-qlpVtNAxuX_H60HgnTaMqLrKGpPfe5zIq9EhfE,5882
10
- erispulse-1.1.14.dev1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
11
- erispulse-1.1.14.dev1.dist-info/entry_points.txt,sha256=AjKvOdYR7QGXVpEJhjUYUwV2JluE4lm9vNbknC3hjOM,155
12
- erispulse-1.1.14.dev1.dist-info/licenses/LICENSE,sha256=plj4EYVfKAzc0ZWoC5T2vsQ86u0yLpu17NdAPeIcgVo,1066
13
- erispulse-1.1.14.dev1.dist-info/RECORD,,