Coverage for src/symphra_modules/events/types.py: 100.00%

1"""事件类型定义."""

2

3 from dataclasses import dataclass

4 from datetime import datetime

5 from typing import Any

6

7 from symphra_modules.utils import now

8

9

10@dataclass

11 class Event:

12 """事件基类."""

13

14 event_type: str # 事件类型

15 module_name: str # 模块名称

16 timestamp: datetime # 时间戳

17 data: dict[str, Any] | None = None # 附加数据

18

19

20@dataclass

21 class ModuleLoadedEvent(Event):

22 """模块加载事件."""

23

24 def __init__(self, module_name: str, data: dict[str, Any] | None = None) -> None:

25 """初始化加载事件.

26

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 )

37

38

39@dataclass

40 class ModuleInstalledEvent(Event):

41 """模块安装事件."""

42

43 def __init__(self, module_name: str, data: dict[str, Any] | None = None) -> None:

44 """初始化安装事件.

45

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 )

56

57

58@dataclass

59 class ModuleStartedEvent(Event):

60 """模块启动事件."""

61

62 def __init__(self, module_name: str, data: dict[str, Any] | None = None) -> None:

63 """初始化启动事件.

64

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 )

75

76

77@dataclass

78 class ModuleStoppedEvent(Event):

79 """模块停止事件."""

80

81 def __init__(self, module_name: str, data: dict[str, Any] | None = None) -> None:

82 """初始化停止事件.

83

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 )

94

95

96@dataclass

97 class ModuleUninstalledEvent(Event):

98 """模块卸载事件."""

99

100 def __init__(self, module_name: str, data: dict[str, Any] | None = None) -> None:

101 """初始化卸载事件.

102

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 )

113

114

115@dataclass

116 class ModuleUnregisteredEvent(Event):

117 """模块注销事件."""

118

119 def __init__(self, module_name: str, data: dict[str, Any] | None = None) -> None:

120 """初始化注销事件.

121

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 )

132

133

134@dataclass

135 class ModuleErrorEvent(Event):

136 """模块错误事件."""

137

138 def __init__(

139 self,

140 module_name: str,

141 error: Exception,

142 data: dict[str, Any] | None = None,

143 ) -> None:

144 """初始化错误事件.

145

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__

154

155 super().__init__(

156 event_type="module.error",

157 module_name=module_name,

158 timestamp=now(),

159 data=error_data,

160 )