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'
]