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