SmokeScan / models /loader.py
KinetoLabs's picture
Initial commit: FDAM AI Pipeline v4.0.1
88bdcff
raw
history blame
944 Bytes
"""Model loading with mock/real switching based on environment."""
from typing import Union
from config.settings import settings
# Type alias for model stack
ModelStack = Union["MockModelStack", "RealModelStack"] # noqa: F821
# Lazy singleton
_model_stack: ModelStack | None = None
def get_model_stack() -> ModelStack:
"""Get model stack based on environment configuration."""
if settings.mock_models:
from models.mock import MockModelStack
return MockModelStack().load_all()
else:
from models.real import RealModelStack
return RealModelStack().load_all()
def get_models() -> ModelStack:
"""Get or create the singleton model stack."""
global _model_stack
if _model_stack is None:
_model_stack = get_model_stack()
return _model_stack
def reset_models() -> None:
"""Reset the model stack (useful for testing)."""
global _model_stack
_model_stack = None