Files
agent-aide/aide-program/aide/env/registry.py

51 lines
1.3 KiB
Python

"""模块注册表。"""
from __future__ import annotations
from aide.env.modules.base import BaseModule, ModuleInfo
class ModuleRegistry:
"""模块注册表,管理所有可用的环境检测模块。"""
_modules: dict[str, BaseModule] = {}
@classmethod
def register(cls, module: BaseModule) -> None:
"""注册模块。"""
cls._modules[module.info.name] = module
@classmethod
def get(cls, name: str) -> BaseModule | None:
"""获取指定模块。"""
return cls._modules.get(name)
@classmethod
def all(cls) -> dict[str, BaseModule]:
"""获取所有已注册模块。"""
return cls._modules.copy()
@classmethod
def names(cls) -> list[str]:
"""获取所有模块名称。"""
return list(cls._modules.keys())
@classmethod
def list_info(cls) -> list[ModuleInfo]:
"""获取所有模块的元信息。"""
return [m.info for m in cls._modules.values()]
@classmethod
def clear(cls) -> None:
"""清空注册表(用于测试)。"""
cls._modules.clear()
def register_builtin_modules() -> None:
"""注册内置模块。"""
from aide.env.modules import python, uv, venv, requirements
for mod in [python, uv, venv, requirements]:
if hasattr(mod, "module"):
ModuleRegistry.register(mod.module)