forked from Rockachopa/Timmy-time-dashboard
committed by
GitHub
parent
11ba21418a
commit
82fb2417e3
@@ -6,7 +6,8 @@ memory consolidation, and the advisory system.
|
||||
|
||||
Usage
|
||||
-----
|
||||
from spark.engine import spark_engine
|
||||
from spark.engine import get_spark_engine
|
||||
spark_engine = get_spark_engine()
|
||||
|
||||
# Capture a swarm event
|
||||
spark_engine.on_task_posted(task_id, description)
|
||||
@@ -346,14 +347,31 @@ class SparkEngine:
|
||||
return spark_eidos.get_predictions(limit=limit)
|
||||
|
||||
|
||||
# Module-level singleton — respects SPARK_ENABLED config
|
||||
def _create_engine() -> SparkEngine:
|
||||
try:
|
||||
from config import settings
|
||||
|
||||
return SparkEngine(enabled=settings.spark_enabled)
|
||||
except Exception:
|
||||
return SparkEngine(enabled=True)
|
||||
# ── Lazy singleton ────────────────────────────────────────────────────────────
|
||||
_spark_engine: SparkEngine | None = None
|
||||
|
||||
|
||||
spark_engine = _create_engine()
|
||||
def get_spark_engine() -> SparkEngine:
|
||||
"""Return the module-level SparkEngine, creating it on first access."""
|
||||
global _spark_engine
|
||||
if _spark_engine is None:
|
||||
try:
|
||||
from config import settings
|
||||
|
||||
_spark_engine = SparkEngine(enabled=settings.spark_enabled)
|
||||
except Exception:
|
||||
_spark_engine = SparkEngine(enabled=True)
|
||||
return _spark_engine
|
||||
|
||||
|
||||
def reset_spark_engine() -> None:
|
||||
"""Reset the singleton for test isolation."""
|
||||
global _spark_engine
|
||||
_spark_engine = None
|
||||
|
||||
|
||||
def __getattr__(name: str):
|
||||
"""Module-level __getattr__ for lazy backward-compatible access to spark_engine."""
|
||||
if name == "spark_engine":
|
||||
return get_spark_engine()
|
||||
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
||||
|
||||
Reference in New Issue
Block a user