| | |
| |
|
| | |
| | """MedGenesis – lightweight per‑user workspace helper |
| | |
| | Persists the user’s most recent queries/results in **Streamlit `session_state`**. |
| | Keeps only the last *N* (default = 10) items to avoid bloat. |
| | Provides three public helpers: |
| | • `get_workspace()` → returns the list (for sidebar rendering) |
| | • `save_query(q,res)` → prepends new item & trims to max_len |
| | • `clear_workspace()` → wipe slate (user button use‑case) |
| | """ |
| |
|
| | from __future__ import annotations |
| |
|
| | import streamlit as st |
| | from typing import List, Dict |
| |
|
| | _KEY = "saved_queries" |
| | _MAX = 10 |
| |
|
| |
|
| | def get_workspace() -> List[Dict]: |
| | """Return the current saved‑query list (initialises if absent).""" |
| | if _KEY not in st.session_state: |
| | st.session_state[_KEY] = [] |
| | return st.session_state[_KEY] |
| |
|
| |
|
| | def save_query(query: str, result: Dict, *, max_len: int = _MAX) -> None: |
| | """Prepend a (query, result) record, trim list to *max_len*.""" |
| | ws = get_workspace() |
| |
|
| | |
| | ws[:] = [item for item in ws if item["query"] != query] |
| |
|
| | ws.insert(0, {"query": query, "result": result}) |
| | del ws[max_len:] |
| |
|
| |
|
| | def clear_workspace() -> None: |
| | """Remove all saved queries for current user session.""" |
| | st.session_state[_KEY] = [] |
| |
|
| |
|
| | |
| | |
| | |
| | if __name__ == "__main__": |
| | print("Before:", get_workspace()) |
| | save_query("demo", {"answer": 42}) |
| | print("After :", get_workspace()) |
| | clear_workspace() |
| | print("Cleared:", get_workspace()) |
| |
|
| |
|