Coverage for tests/test_filter_pydantic_sub_model/app_pv1.py: 100%
22 statements
« prev ^ index » next coverage.py v7.6.1, created at 2025-05-05 00:03 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2025-05-05 00:03 +0000
1from typing import Optional 1abcdef
3from fastapi import Depends, FastAPI 1abcdef
4from pydantic import BaseModel, validator 1abcdef
6app = FastAPI() 1abcdef
9class ModelB(BaseModel): 1abcdef
10 username: str 1abcdef
13class ModelC(ModelB): 1abcdef
14 password: str 1abcdef
17class ModelA(BaseModel): 1abcdef
18 name: str 1abcdef
19 description: Optional[str] = None 1abcdef
20 model_b: ModelB 1abcdef
22 @validator("name") 1abcdef
23 def lower_username(cls, name: str, values): 1abcdef
24 if not name.endswith("A"): 1ghijklmnopqr
25 raise ValueError("name must end in A") 1hjlnpr
26 return name 1gikmoq
29async def get_model_c() -> ModelC: 1abcdef
30 return ModelC(username="test-user", password="test-password") 1ghijklmnopqr
33@app.get("/model/{name}", response_model=ModelA) 1abcdef
34async def get_model_a(name: str, model_c=Depends(get_model_c)): 1abcdef
35 return {"name": name, "description": "model-a-desc", "model_b": model_c} 1ghijklmnopqr