Coverage for archdocs/integrations/fastapi.py: 100%

11 statements  

« prev     ^ index     » next       coverage.py v7.15.3, created at 2026-08-03 00:00 +0000

1import functools 

2 

3import fastapi 

4from starlette.requests import Request as StarletteRequest 

5from starlette.responses import HTMLResponse as StarletteHtmlResponse 

6 

7from archdocs import settings 

8from archdocs.integrations.common import _create_architecture_engine, _generate_architecture_html 

9from archdocs.main import ArchitectureParserAndRenderer, SettingsForArchdocs 

10 

11 

12async def _handle_fastapi_arch_doc_route( 

13 _incoming_request: StarletteRequest, 

14 arch_engine: ArchitectureParserAndRenderer, 

15) -> StarletteHtmlResponse: 

16 return StarletteHtmlResponse(_generate_architecture_html(arch_engine)) 

17 

18 

19def add_architecture_doc_routes( 

20 fastapi_app: fastapi.FastAPI, 

21 *, 

22 route_path: str = settings.DEFAULT_PATH, 

23 arch_settings: SettingsForArchdocs | None = None, 

24) -> None: 

25 fastapi_app.add_api_route( 

26 route_path, 

27 functools.partial( 

28 _handle_fastapi_arch_doc_route, 

29 arch_engine=_create_architecture_engine(arch_settings), 

30 ), 

31 )