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

11 statements  

« prev     ^ index     » next       coverage.py v7.17.2, created at 2026-11-09 14:41 +0000

1import functools 

2 

3import fastapi 

4from starlette.requests import Request as StarletteRequest 

5from starlette.responses import HTMLResponse as StarletteHtmlResponse 

6 

7from archdocs import page, settings 

8from archdocs.integrations.common import _create_architecture_engine 

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(page.render_architecture_page(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 )