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
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-26 18:16 +0800
1"""Symphra Modules - 高性能 Python 模块管理库.
3这是一个轻量级、高性能的 Python 模块管理库,提供动态加载、
4生命周期管理、依赖解析和异步支持。
6基本用法::
8 from symphra_modules import ModuleManager, BaseModule, ModuleMetadata
10 class MyModule(BaseModule):
11 @property
12 def metadata(self) -> ModuleMetadata:
13 return ModuleMetadata(name="my_module")
15 def start(self) -> None:
16 print("模块启动!")
18 manager = ModuleManager()
19 manager.load_module("my_module")
20 manager.start_module("my_module")
21"""
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
36__version__ = "0.1.0"
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]
57# 提供懒加载支持 - 高级功能按需导入
58def __getattr__(name: str):
59 """懒加载高级功能."""
60 # 加载器
61 if name == "DirectoryLoader":
62 from symphra_modules.loader import DirectoryLoader
64 return DirectoryLoader
65 if name == "PackageLoader":
66 from symphra_modules.loader import PackageLoader
68 return PackageLoader
69 if name == "ModuleLoader":
70 from symphra_modules.loader import ModuleLoader
72 return ModuleLoader
74 # 注册表和解析器
75 if name == "ModuleRegistry":
76 from symphra_modules.registry import ModuleRegistry
78 return ModuleRegistry
79 if name == "DependencyResolver":
80 from symphra_modules.resolver import DependencyResolver
82 return DependencyResolver
83 if name == "DependencyGraph":
84 from symphra_modules.resolver import DependencyGraph
86 return DependencyGraph
88 # 事件系统
89 if name == "EventBus":
90 from symphra_modules.events import EventBus
92 return EventBus
93 if name in ("Event", "ModuleLoadedEvent", "ModuleStartedEvent", "ModuleStoppedEvent"):
94 from symphra_modules import events
96 return getattr(events, name)
98 # 工具函数
99 if name in ("is_async_module", "call_module_method"):
100 from symphra_modules import abc
102 return getattr(abc, name)
104 raise AttributeError(f"module {__name__!r} has no attribute {name!r}")