from app_settings import AppSettings from typing import Optional from context import Context from models.interface_types import InterfaceType class _AppState: _instance: Optional["_AppState"] = None settings: Optional[AppSettings] = None context: Optional[Context] = 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