|
10 | 10 | from ellar.common.interfaces import IAPIVersioning, IEllarMiddleware, IExceptionHandler |
11 | 11 | from ellar.common.responses import JSONResponse, PlainTextResponse |
12 | 12 | from ellar.common.serializer import Serializer, SerializerFilter |
13 | | -from ellar.common.templating import JinjaLoaderType |
14 | 13 | from ellar.common.types import ASGIApp, TReceive, TScope, TSend |
15 | 14 | from ellar.core.conf.mixins import ConfigDefaultTypesMixin |
16 | 15 | from ellar.di import ProviderConfig |
17 | 16 | from ellar.di.injector.tree_manager import ModuleTreeManager |
18 | 17 | from ellar.pydantic import ENCODERS_BY_TYPE as encoders_by_type |
19 | 18 | from ellar.pydantic import AllowTypeOfSource, field_validator |
| 19 | +from jinja2 import BaseLoader |
20 | 20 | from starlette.exceptions import HTTPException as StarletteHTTPException |
21 | 21 | from starlette.middleware import Middleware |
22 | 22 | from starlette.requests import HTTPConnection, Request |
|
81 | 81 | ) |
82 | 82 | InterceptorType = Annotated[EllarInterceptor, _InterceptorValidator] |
83 | 83 |
|
| 84 | +_JinjaLoaderValidator = AllowTypeOfSource( |
| 85 | + error_message=lambda source, |
| 86 | + value: f"Expected {BaseLoader} object, received: {type(value)}", |
| 87 | +) |
| 88 | +JinjaLoaderType = Annotated[BaseLoader, _JinjaLoaderValidator] |
| 89 | + |
84 | 90 |
|
85 | 91 | async def _not_found( |
86 | 92 | scope: TScope, receive: TReceive, send: TSend |
|
0 commit comments