from app_settings import AppSettings from typing import Optional from context import Context from models.interface_types import InterfaceType from backend.safety_checker import SafetyChecker class _AppState: _instance: Optional["_AppState"] = None settings: Optional[AppSettings] = None context: Optional[Context] = None safety_checker: Optional[SafetyChecker] = None def get_state() -> _AppState: if _AppState._instance is None: _AppState._instance = _AppState() return _AppState._instance def get_settings(skip_file: bool = False) -> AppSettings: state = get_state() if state.settings is None: state.settings = AppSettings() state.settings.load(skip_file) return state.settings def get_context(interface_type: InterfaceType) -> Context: state = get_state() if state.context is None: state.context = Context(interface_type) return state.context def get_safety_checker() -> SafetyChecker: state = get_state() if state.safety_checker is None: print("Initializing safety checker") state.safety_checker = SafetyChecker() return state.safety_checker