Coverage for src/symphra_modules/events/types.py: 100.00%
41 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-26 18:16 +0800
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-26 18:16 +0800
1"""事件类型定义."""
3from dataclasses import dataclass
4from datetime import datetime
5from typing import Any
7from symphra_modules.utils import now
10@dataclass
11class Event:
12 """事件基类."""
14 event_type: str # 事件类型
15 module_name: str # 模块名称
16 timestamp: datetime # 时间戳
17 data: dict[str, Any] | None = None # 附加数据
20@dataclass
21class ModuleLoadedEvent(Event):
22 """模块加载事件."""
24 def __init__(self, module_name: str, data: dict[str, Any] | None = None) -> None:
25 """初始化加载事件.
27 Args:
28 module_name: 模块名称
29 data: 附加数据(可选)
30 """
31 super().__init__(
32 event_type="module.loaded",
33 module_name=module_name,
34 timestamp=now(),
35 data=data,
36 )
39@dataclass
40class ModuleInstalledEvent(Event):
41 """模块安装事件."""
43 def __init__(self, module_name: str, data: dict[str, Any] | None = None) -> None:
44 """初始化安装事件.
46 Args:
47 module_name: 模块名称
48 data: 附加数据(可选)
49 """
50 super().__init__(
51 event_type="module.installed",
52 module_name=module_name,
53 timestamp=now(),
54 data=data,
55 )
58@dataclass
59class ModuleStartedEvent(Event):
60 """模块启动事件."""
62 def __init__(self, module_name: str, data: dict[str, Any] | None = None) -> None:
63 """初始化启动事件.
65 Args:
66 module_name: 模块名称
67 data: 附加数据(可选)
68 """
69 super().__init__(
70 event_type="module.started",
71 module_name=module_name,
72 timestamp=now(),
73 data=data,
74 )
77@dataclass
78class ModuleStoppedEvent(Event):
79 """模块停止事件."""
81 def __init__(self, module_name: str, data: dict[str, Any] | None = None) -> None:
82 """初始化停止事件.
84 Args:
85 module_name: 模块名称
86 data: 附加数据(可选)
87 """
88 super().__init__(
89 event_type="module.stopped",
90 module_name=module_name,
91 timestamp=now(),
92 data=data,
93 )
96@dataclass
97class ModuleUninstalledEvent(Event):
98 """模块卸载事件."""
100 def __init__(self, module_name: str, data: dict[str, Any] | None = None) -> None:
101 """初始化卸载事件.
103 Args:
104 module_name: 模块名称
105 data: 附加数据(可选)
106 """
107 super().__init__(
108 event_type="module.uninstalled",
109 module_name=module_name,
110 timestamp=now(),
111 data=data,
112 )
115@dataclass
116class ModuleUnregisteredEvent(Event):
117 """模块注销事件."""
119 def __init__(self, module_name: str, data: dict[str, Any] | None = None) -> None:
120 """初始化注销事件.
122 Args:
123 module_name: 模块名称
124 data: 附加数据(可选)
125 """
126 super().__init__(
127 event_type="module.unregistered",
128 module_name=module_name,
129 timestamp=now(),
130 data=data,
131 )
134@dataclass
135class ModuleErrorEvent(Event):
136 """模块错误事件."""
138 def __init__(
139 self,
140 module_name: str,
141 error: Exception,
142 data: dict[str, Any] | None = None,
143 ) -> None:
144 """初始化错误事件.
146 Args:
147 module_name: 模块名称
148 error: 异常对象
149 data: 附加数据(可选)
150 """
151 error_data = data or {}
152 error_data["error"] = str(error)
153 error_data["error_type"] = type(error).__name__
155 super().__init__(
156 event_type="module.error",
157 module_name=module_name,
158 timestamp=now(),
159 data=error_data,
160 )