Spaces:
Running
Running
File size: 987 Bytes
399b80c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | # 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'
] |