Plain is headed towards 1.0! Subscribe for development updates →

 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]