Spaces:
Sleeping
Sleeping
Download backend/app/deps.py from shield137/shockmap-api: direct link, hf CLI and curl.
- Browser
- Download file 4.2 kB
-
https://huggingface.co/spaces/shield137/shockmap-api/resolve/main/backend/app/deps.py
- Command line
-
hf download hf://spaces/shield137/shockmap-api/backend/app/deps.py
-
curl -L -o deps.py https://huggingface.co/spaces/shield137/shockmap-api/resolve/main/backend/app/deps.py
4.2 kB
| """ | |
| Dependency injection providers for the PharmaShield backend. | |
| Uses cached singletons with lazy imports to prevent circular dependencies. | |
| """ | |
| from functools import lru_cache | |
| import warnings | |
| from .config import settings | |
| def get_gemini(): | |
| """Configures and returns the Google Generative AI module.""" | |
| if not settings.GEMINI_API_KEY: | |
| return None | |
| with warnings.catch_warnings(): | |
| warnings.simplefilter("ignore", FutureWarning) | |
| import google.generativeai as genai | |
| genai.configure(api_key=settings.GEMINI_API_KEY) | |
| return genai | |
| def get_gemini_flash_client(): | |
| """Returns a shared Flash-only Gemini client wrapper.""" | |
| from .services.gemini_flash_client import GeminiFlashClient | |
| if not settings.GEMINI_API_KEY: | |
| return GeminiFlashClient(genai=None, model_name=settings.GEMINI_FLASH_MODEL) | |
| return GeminiFlashClient( | |
| genai=get_gemini(), | |
| model_name=settings.GEMINI_FLASH_MODEL, | |
| ) | |
| def get_qdrant(): | |
| """Returns a singleton instance of the QdrantClient.""" | |
| from qdrant_client import QdrantClient | |
| if not settings.QDRANT_URL: | |
| return QdrantClient(":memory:") | |
| return QdrantClient( | |
| url=settings.QDRANT_URL, | |
| api_key=settings.QDRANT_API_KEY, | |
| ) | |
| def get_data_loader(): | |
| """Returns a singleton instance of the DataLoader.""" | |
| from .data_loader import DataLoader | |
| return DataLoader(seed_dir=settings.SEED_DATA_DIR) | |
| def get_graph_service(): | |
| """Returns a singleton instance of the GraphService.""" | |
| from .services.graph_service import GraphService | |
| data_loader = get_data_loader() | |
| if not data_loader.get_drugs(): | |
| data_loader.load_all() | |
| return GraphService(data_loader=data_loader) | |
| def get_demo_mode_service(): | |
| """Returns a singleton instance of the curated demo-mode service.""" | |
| from .services.demo_mode import DemoModeService | |
| data_loader = get_data_loader() | |
| if not data_loader.get_drugs(): | |
| data_loader.load_all() | |
| return DemoModeService( | |
| data_loader=data_loader, | |
| graph_service=get_graph_service(), | |
| ) | |
| def get_war_room_service(): | |
| """Returns a singleton instance of the war-room orchestration service.""" | |
| from .services.war_room import WarRoomService | |
| return WarRoomService( | |
| graph_service=get_graph_service(), | |
| data_loader=get_data_loader(), | |
| demo_mode_service=get_demo_mode_service(), | |
| ) | |
| def get_retriever(): | |
| """Returns a singleton instance of the Retriever.""" | |
| from .services.retriever import Retriever | |
| return Retriever( | |
| qdrant_client=get_qdrant(), | |
| genai=get_gemini(), | |
| collection_name=settings.QDRANT_COLLECTION, | |
| data_loader=get_data_loader() | |
| ) | |
| def get_gnn(): | |
| """Returns a singleton instance of the ShockPropagator (GNN).""" | |
| from .services.shock_propagation import ShockPropagator | |
| return ShockPropagator( | |
| weights_path=settings.GNN_WEIGHTS_PATH, | |
| graph_service=get_graph_service(), | |
| enable_gnn=settings.ENABLE_GNN, | |
| ) | |
| def get_gemini_analyst(): | |
| """Returns a singleton instance of the GeminiAnalyst.""" | |
| from .services.gemini_analyst import GeminiAnalyst | |
| return GeminiAnalyst( | |
| genai=get_gemini(), | |
| gemini_client=get_gemini_flash_client(), | |
| demo_mode_service=get_demo_mode_service(), | |
| retriever=get_retriever(), | |
| graph_service=get_graph_service(), | |
| data_loader=get_data_loader() | |
| ) | |
| # Alias used by simulate.py | |
| def get_shock_propagator(): | |
| """Alias for get_gnn — returns the ShockPropagator singleton.""" | |
| return get_gnn() | |
| def get_signal_intelligence(): | |
| """Returns a singleton instance of the SignalIntelligence (Engine 1).""" | |
| from .services.signal_intelligence import SignalIntelligence | |
| if settings.GEMINI_API_KEY: | |
| return SignalIntelligence( | |
| genai=get_gemini(), | |
| gemini_client=get_gemini_flash_client(), | |
| ) | |
| return SignalIntelligence( | |
| genai=None, | |
| gemini_client=get_gemini_flash_client(), | |
| ) | |