register_starlette_extensions()
Register jinja_partials with Starlette templates.
Usage
register_starlette_extensions(
templates,
app=None,
max_workers=4,
)If an app is provided, creates a dedicated ThreadPoolExecutor when the app’s lifespan starts and shuts it down when the lifespan exits - even if startup or shutdown raises - so the app can be started and stopped repeatedly; outside lifespan cycles, async renders use a per-registration fallback executor with the same max_workers. Without an app, partials render directly for sync environments, or via a shared module-level executor for async (enable_async=True) environments.
Parameters
templates: Jinja2Templates-
The Jinja2Templates instance used for rendering.
app: Optional[Starlette] = None-
Optional Starlette application instance for lifecycle management.
max_workers: int = 4- Maximum number of worker threads for rendering partials. Only used when app is provided. Defaults to 4.
Raises
PartialsException- If Starlette is not installed.
Example
With lifecycle management:
from starlette.applications import Starlette
from starlette.templating import Jinja2Templates
import jinja_partials
templates = Jinja2Templates(directory="templates")
app = Starlette(...)
jinja_partials.register_starlette_extensions(templates, app=app)
Without lifecycle management (backwards compatible):
jinja_partials.register_starlette_extensions(templates)