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

1import dataclasses 

2import typing 

3 

4from litestar import Litestar, get 

5from litestar.response import Response 

6 

7from archdocs import settings 

8from archdocs.integrations.common import _create_architecture_engine, _generate_architecture_html 

9from archdocs.main import ArchitectureParserAndRenderer, SettingsForArchdocs 

10 

11 

12@typing.final 

13@dataclasses.dataclass(slots=True, frozen=True, kw_only=True) 

14class _LitestarArchDocRoute: 

15 arch_engine: ArchitectureParserAndRenderer 

16 

17 async def __call__(self) -> Response[str]: 

18 return Response( 

19 _generate_architecture_html(self.arch_engine), 

20 media_type="text/html", 

21 ) 

22 

23 

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 )