Spaces:
Sleeping
Sleeping
Download backend/visual_notebook/session.py from Sid-WC121/visual-notebook: direct link, hf CLI and curl.
- Browser
- Download file 1.42 kB
-
https://huggingface.co/spaces/Sid-WC121/visual-notebook/resolve/main/backend/visual_notebook/session.py
- Command line
-
hf download hf://spaces/Sid-WC121/visual-notebook/backend/visual_notebook/session.py
-
curl -L -o session.py https://huggingface.co/spaces/Sid-WC121/visual-notebook/resolve/main/backend/visual_notebook/session.py
1.42 kB
| """Session management: maps browser cookies to Session objects.""" | |
| from __future__ import annotations | |
| import uuid | |
| from dataclasses import dataclass, field | |
| from typing import Any | |
| import duckdb | |
| class Session: | |
| id: str | |
| duckdb_con: duckdb.DuckDBPyConnection | |
| current_table: str | None = None | |
| current_ref: Any = None # DataFrameRef | |
| history: Any = None # History | |
| metadata: dict = field(default_factory=dict) | |
| class SessionStore: | |
| """In-memory session store. In production, use Redis or DB-backed store.""" | |
| def __init__(self) -> None: | |
| self._sessions: dict[str, Session] = {} | |
| def create(self, duckdb_con: duckdb.DuckDBPyConnection) -> Session: | |
| from visual_notebook.domain.history import History | |
| session_id = uuid.uuid4().hex[:12] | |
| session = Session( | |
| id=session_id, | |
| duckdb_con=duckdb_con, | |
| history=History(), | |
| ) | |
| self._sessions[session_id] = session | |
| return session | |
| def get(self, session_id: str) -> Session | None: | |
| return self._sessions.get(session_id) | |
| def get_or_create(self, session_id: str | None, duckdb_con: duckdb.DuckDBPyConnection) -> Session: | |
| if session_id and (session := self.get(session_id)): | |
| return session | |
| return self.create(duckdb_con) | |
| def remove(self, session_id: str) -> None: | |
| self._sessions.pop(session_id, None) | |