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

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

2 

3from dataclasses import dataclass 

4from datetime import datetime 

5from typing import Any 

6 

7from symphra_modules.utils import now 

8 

9 

10@dataclass 

11class 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 

21class 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 

40class 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 

59class 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 

78class 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 

97class 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 

116class 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 

135class 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 )