Coverage for tests/test_validate_response_recursive/app_pv2.py: 100%

22 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2025-05-05 00:03 +0000

1from typing import List 1abcdef

2 

3from fastapi import FastAPI 1abcdef

4from pydantic import BaseModel 1abcdef

5 

6app = FastAPI() 1abcdef

7 

8 

9class RecursiveItem(BaseModel): 1abcdef

10 sub_items: List["RecursiveItem"] = [] 1abcdef

11 name: str 1abcdef

12 

13 

14RecursiveItem.model_rebuild() 1abcdef

15 

16 

17class RecursiveSubitemInSubmodel(BaseModel): 1abcdef

18 sub_items2: List["RecursiveItemViaSubmodel"] = [] 1abcdef

19 name: str 1abcdef

20 

21 

22class RecursiveItemViaSubmodel(BaseModel): 1abcdef

23 sub_items1: List[RecursiveSubitemInSubmodel] = [] 1abcdef

24 name: str 1abcdef

25 

26 

27RecursiveSubitemInSubmodel.model_rebuild() 1abcdef

28RecursiveItemViaSubmodel.model_rebuild() 1abcdef

29 

30 

31@app.get("/items/recursive", response_model=RecursiveItem) 1abcdef

32def get_recursive(): 1abcdef

33 return {"name": "item", "sub_items": [{"name": "subitem", "sub_items": []}]} 1abcdef

34 

35 

36@app.get("/items/recursive-submodel", response_model=RecursiveItemViaSubmodel) 1abcdef

37def get_recursive_submodel(): 1abcdef

38 return { 1abcdef

39 "name": "item", 

40 "sub_items1": [ 

41 { 

42 "name": "subitem", 

43 "sub_items2": [ 

44 { 

45 "name": "subsubitem", 

46 "sub_items1": [{"name": "subsubsubitem", "sub_items2": []}], 

47 } 

48 ], 

49 } 

50 ], 

51 }