avfranco's picture
HF Space deploy snapshot (minimal allow-list)
557ee65
# src/tools/stores.py
from typing import List, Dict, Any, Optional
from .interfaces import IFeatureStore, IPlanStore
class InMemoryFeatureStore(IFeatureStore):
def __init__(self):
self._features: Dict[str, Dict[str, Any]] = {}
self._weekly_summaries: Dict[str, Dict[str, Any]] = {}
self._all_features_list: List[Dict[str, Any]] = []
def put_features(self, run_id: str, features: Dict[str, Any]):
self._features[run_id] = features
# For simplicity in this PoC, we also maintain an ordered list
self._all_features_list.append(features)
def get_features(self, run_id: str) -> Optional[Dict[str, Any]]:
return self._features.get(run_id)
def put_weekly_summary(self, week_key: str, summary: Dict[str, Any]):
self._weekly_summaries[week_key] = summary
def get_weekly_summary(self, week_key: str) -> Optional[Dict[str, Any]]:
return self._weekly_summaries.get(week_key)
def get_all_features(self) -> List[Dict[str, Any]]:
return self._all_features_list
def clear(self):
self._features.clear()
self._weekly_summaries.clear()
self._all_features_list.clear()
class InMemoryPlanStore(IPlanStore):
def __init__(self):
self._plans: Dict[str, str] = {}
self._latest_plan_id: Optional[str] = None
def save_plan(self, plan_id: str, plan_obj: str):
self._plans[plan_id] = plan_obj
self._latest_plan_id = plan_id
def get_plan(self, plan_id: str) -> Optional[str]:
return self._plans.get(plan_id)
def get_latest_plan(self) -> Optional[str]:
if self._latest_plan_id:
return self._plans.get(self._latest_plan_id)
return None
def clear(self):
self._plans.clear()
self._latest_plan_id = None