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