Coverage for archdocs/integrations/litestar.py: 100%
14 statements
« prev ^ index » next coverage.py v7.15.3, created at 2026-08-03 00:00 +0000
« prev ^ index » next coverage.py v7.15.3, created at 2026-08-03 00:00 +0000
1import dataclasses
2import typing
4from litestar import Litestar, get
5from litestar.response import Response
7from archdocs import settings
8from archdocs.integrations.common import _create_architecture_engine, _generate_architecture_html
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 _generate_architecture_html(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 )