1from __future__ import annotations
2
3from typing import TYPE_CHECKING
4from weakref import WeakKeyDictionary
5
6if TYPE_CHECKING:
7 from plain.http import Request
8
9 from .core import SessionStore
10
11_request_sessions: WeakKeyDictionary[Request, SessionStore] = WeakKeyDictionary()
12
13
14def set_request_session(request: Request, session: SessionStore) -> None:
15 """Store the session for this request."""
16 _request_sessions[request] = session
17
18
19def get_request_session(request: Request) -> SessionStore:
20 """Get the session for this request. Raises KeyError if no session is set."""
21 return _request_sessions[request]