Coverage for src/symphra_modules/__init__.py: 100.00%

6 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-10-26 18:16 +0800

1"""Symphra Modules - 高性能 Python 模块管理库. 

2 

3这是一个轻量级、高性能的 Python 模块管理库,提供动态加载、 

4生命周期管理、依赖解析和异步支持。 

5 

6基本用法:: 

7 

8 from symphra_modules import ModuleManager, BaseModule, ModuleMetadata 

9 

10 class MyModule(BaseModule): 

11 @property 

12 def metadata(self) -> ModuleMetadata: 

13 return ModuleMetadata(name="my_module") 

14 

15 def start(self) -> None: 

16 print("模块启动!") 

17 

18 manager = ModuleManager() 

19 manager.load_module("my_module") 

20 manager.start_module("my_module") 

21""" 

22 

23# 核心公共 API - 按需导入以提高启动速度 

24from symphra_modules.abc import BaseModule, ModuleInterface 

25from symphra_modules.config import ModuleMetadata, ModuleState 

26from symphra_modules.exceptions import ( 

27 ModuleConfigError, 

28 ModuleDependencyError, 

29 ModuleError, 

30 ModuleLoadError, 

31 ModuleNotFoundException, 

32 ModuleStateError, 

33) 

34from symphra_modules.manager import ModuleManager 

35 

36__version__ = "0.1.0" 

37 

38# 简化的公共 API - 只导出最常用的类 

39__all__ = [ 

40 # 核心类 

41 "ModuleManager", # 主要入口点 

42 "BaseModule", # 模块基类 

43 "ModuleInterface", # 模块接口 

44 # 配置 

45 "ModuleMetadata", # 模块元数据 

46 "ModuleState", # 模块状态 

47 # 核心异常 

48 "ModuleError", # 基础异常 

49 "ModuleNotFoundException", # 模块未找到 

50 "ModuleLoadError", # 加载错误 

51 "ModuleConfigError", # 配置错误 

52 "ModuleStateError", # 状态错误 

53 "ModuleDependencyError", # 依赖错误 

54] 

55 

56 

57# 提供懒加载支持 - 高级功能按需导入 

58def __getattr__(name: str): 

59 """懒加载高级功能.""" 

60 # 加载器 

61 if name == "DirectoryLoader": 

62 from symphra_modules.loader import DirectoryLoader 

63 

64 return DirectoryLoader 

65 if name == "PackageLoader": 

66 from symphra_modules.loader import PackageLoader 

67 

68 return PackageLoader 

69 if name == "ModuleLoader": 

70 from symphra_modules.loader import ModuleLoader 

71 

72 return ModuleLoader 

73 

74 # 注册表和解析器 

75 if name == "ModuleRegistry": 

76 from symphra_modules.registry import ModuleRegistry 

77 

78 return ModuleRegistry 

79 if name == "DependencyResolver": 

80 from symphra_modules.resolver import DependencyResolver 

81 

82 return DependencyResolver 

83 if name == "DependencyGraph": 

84 from symphra_modules.resolver import DependencyGraph 

85 

86 return DependencyGraph 

87 

88 # 事件系统 

89 if name == "EventBus": 

90 from symphra_modules.events import EventBus 

91 

92 return EventBus 

93 if name in ("Event", "ModuleLoadedEvent", "ModuleStartedEvent", "ModuleStoppedEvent"): 

94 from symphra_modules import events 

95 

96 return getattr(events, name) 

97 

98 # 工具函数 

99 if name in ("is_async_module", "call_module_method"): 

100 from symphra_modules import abc 

101 

102 return getattr(abc, name) 

103 

104 raise AttributeError(f"module {__name__!r} has no attribute {name!r}")