mirror of
https://github.com/HKUDS/OpenSpace.git
synced 2026-08-28 05:15:00 +00:00
34 lines
No EOL
987 B
Python
34 lines
No EOL
987 B
Python
# Use lazy imports to avoid loading all backends unconditionally
|
|
|
|
def _lazy_import_provider(provider_name: str):
|
|
"""Lazy import provider class"""
|
|
if provider_name == 'mcp':
|
|
from .mcp.provider import MCPProvider
|
|
return MCPProvider
|
|
elif provider_name == 'shell':
|
|
from .shell.provider import ShellProvider
|
|
return ShellProvider
|
|
elif provider_name == 'web':
|
|
from .web.provider import WebProvider
|
|
return WebProvider
|
|
elif provider_name == 'gui':
|
|
from .gui.provider import GUIProvider
|
|
return GUIProvider
|
|
else:
|
|
raise ImportError(f"Unknown provider: {provider_name}")
|
|
|
|
|
|
class _ProviderRegistry:
|
|
"""Lazy provider registry"""
|
|
def __getitem__(self, key):
|
|
return _lazy_import_provider(key)
|
|
|
|
def __contains__(self, key):
|
|
return key in ['mcp', 'shell', 'web', 'gui']
|
|
|
|
BACKEND_PROVIDERS = _ProviderRegistry()
|
|
|
|
__all__ = [
|
|
'BACKEND_PROVIDERS',
|
|
'_lazy_import_provider'
|
|
] |