Spaces:
Runtime error
Runtime error
charSLee013
feat: complete Hugging Face Spaces deployment with production-ready CognitiveKernel-Launchpad
1ea26af | """ | |
| Search Engine Factory for CognitiveKernel-Pro | |
| Strict factory pattern - Let it crash, no fallbacks | |
| """ | |
| from typing import Dict, Type | |
| from .base import BaseSearchEngine, SearchEngine, SearchEngineError | |
| from .google_search import GoogleSearchEngine | |
| from .duckduckgo_search import DuckDuckGoSearchEngine | |
| class SearchEngineFactory: | |
| """Factory for creating search engines - STRICT, NO FALLBACKS""" | |
| # Registry of available search engines - ONLY TWO | |
| _engines: Dict[SearchEngine, Type[BaseSearchEngine]] = { | |
| SearchEngine.GOOGLE: GoogleSearchEngine, | |
| SearchEngine.DUCKDUCKGO: DuckDuckGoSearchEngine, | |
| } | |
| # Global default backend | |
| _default_backend: SearchEngine = SearchEngine.GOOGLE | |
| def create(cls, engine_type: SearchEngine, max_results: int = 7) -> BaseSearchEngine: | |
| """ | |
| Create a search engine instance - STRICT, NO FALLBACKS | |
| Args: | |
| engine_type: SearchEngine enum value | |
| max_results: Maximum number of results | |
| Returns: | |
| BaseSearchEngine instance | |
| Raises: | |
| SearchEngineError: If engine creation fails - LET IT CRASH! | |
| """ | |
| if not isinstance(engine_type, SearchEngine): | |
| raise SearchEngineError(f"Invalid engine type: {engine_type}. Must be SearchEngine enum.") | |
| engine_class = cls._engines.get(engine_type) | |
| if not engine_class: | |
| raise SearchEngineError(f"No implementation for engine: {engine_type}") | |
| try: | |
| return engine_class(max_results=max_results) | |
| except Exception as e: | |
| raise SearchEngineError(f"Failed to create {engine_type.value} search engine: {str(e)}") from e | |
| def create_default(cls, max_results: int = 7) -> BaseSearchEngine: | |
| """Create a search engine using the default backend""" | |
| return cls.create(cls._default_backend, max_results) | |
| def set_default_backend(cls, engine_type: SearchEngine) -> None: | |
| """Set the global default search backend""" | |
| if not isinstance(engine_type, SearchEngine): | |
| raise SearchEngineError(f"Invalid engine type: {engine_type}. Must be SearchEngine enum.") | |
| cls._default_backend = engine_type | |
| def get_default_backend(cls) -> SearchEngine: | |
| """Get the current default search backend""" | |
| return cls._default_backend | |
| def list_supported_engines(cls) -> list[SearchEngine]: | |
| """List all supported search engines""" | |
| return list(cls._engines.keys()) | |