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

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 - 按需导入以提高启动速度

24 from symphra_modules.abc import BaseModule, ModuleInterface

25 from symphra_modules.config import ModuleMetadata, ModuleState

26 from symphra_modules.exceptions import (

27 ModuleConfigError,

28 ModuleDependencyError,

29 ModuleError,

30 ModuleLoadError,

31 ModuleNotFoundException,

32 ModuleStateError,

33)

34 from 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# 提供懒加载支持 - 高级功能按需导入

58 def __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}")