1from __future__ import annotations
 2
 3from typing import Any
 4
 5from jinja2 import pass_context
 6
 7from plain.templates import register_template_global
 8
 9from .core import SessionStore
10from .exceptions import SessionNotAvailable
11from .requests import get_request_session
12
13
14@register_template_global
15@pass_context
16def get_current_session(context: dict[str, Any]) -> SessionStore | None:
17    """Get the session for the current request."""
18    request = context.get("request")
19    assert request is not None, "No request in template context"
20    try:
21        return get_request_session(request)
22    except SessionNotAvailable:
23        # Session not available (e.g., during error page rendering before middleware runs)
24        return None