init
This commit is contained in:
28
backend/engines/__init__.py
Normal file
28
backend/engines/__init__.py
Normal file
@@ -0,0 +1,28 @@
|
||||
"""backend.engines package
|
||||
|
||||
엔진 레지스트리.
|
||||
서브패키지를 순회해 각 엔진 모듈이 노출한
|
||||
`TOOL_ID` 와 `TOOL_INFO` 를 자동 수집하여 `TOOLS` dict 로 제공한다.
|
||||
외부(backend.app 등)에서는 from engines import TOOLS 로 공통 접근.
|
||||
"""
|
||||
|
||||
from importlib import import_module
|
||||
import pkgutil
|
||||
|
||||
# Dictionary mapping tool_id to its info
|
||||
TOOLS = {}
|
||||
|
||||
# Discover and import all subpackages to collect TOOL_INFO
|
||||
package_name = __name__
|
||||
for _, module_name, is_pkg in pkgutil.iter_modules(__path__):
|
||||
if not is_pkg:
|
||||
# Skip if it's not a package (we expect dirs)
|
||||
continue
|
||||
try:
|
||||
module = import_module(f"{package_name}.{module_name}")
|
||||
# Each engine package must expose TOOL_ID and TOOL_INFO
|
||||
if hasattr(module, "TOOL_ID") and hasattr(module, "TOOL_INFO"):
|
||||
TOOLS[module.TOOL_ID] = module.TOOL_INFO
|
||||
except ModuleNotFoundError:
|
||||
# If submodule import fails, skip silently
|
||||
continue
|
||||
Reference in New Issue
Block a user