Coverage for archdocs/integrations/litestar.py: 100%
14 statements
« prev ^ index » next coverage.py v7.17.2, created at 2026-11-09 14:41 +0000
« prev ^ index » next coverage.py v7.17.2, created at 2026-11-09 14:41 +0000
1import dataclasses
2import typing
4from litestar import Litestar, get
5from litestar.response import Response
7from archdocs import page, settings
8from archdocs.integrations.common import _create_architecture_engine
9from archdocs.main import ArchitectureParserAndRenderer, SettingsForArchdocs
12@typing.final
13@dataclasses.dataclass(slots=True, frozen=True, kw_only=True)
14class _LitestarArchDocRoute:
15 arch_engine: ArchitectureParserAndRenderer
17 async def __call__(self) -> Response[str]:
18 return Response(
19 page.render_architecture_page(self.arch_engine),
20 media_type="text/html",
21 )
24def add_architecture_doc_routes(
25 litestar_app: Litestar,
26 *,
27 route_path: str = settings.DEFAULT_PATH,
28 arch_settings: SettingsForArchdocs | None = None,
29) -> None:
30 litestar_app.register(
31 get(route_path)(
32 _LitestarArchDocRoute(arch_engine=_create_architecture_engine(arch_settings)),
33 ),
34 )