Sample
Bind query parameters to Pydantic models using Annotated and Query without silent multi-value dropping or request body coercion
sha256:e332c164b1327606b7ddbb7dca07956830a4f2bf723ca9a1926291a42cfb0a88
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Case
- Goal
- Bind query parameters to Pydantic models using Annotated and Query without silent multi-value dropping or request body coercion HOW
- Packages
- fastapi 0.141.1 pydantic 2.13.4 starlette 1.6.0 httpx 0.28.1
- Environment
- python
- Created
- 2026-08-17T03:19:11Z
Contract
- assert unannotated Pydantic model parameter in GET route is treated as request body and returns 422 for query parameters
- assert Depends(Model) query parameter workaround silently drops repeated query parameters into empty list with 200 OK
- assert Annotated[Model, Query()] binds query parameters preserving repeated parameters into list fields
- assert Annotated[Model, Query()] resolves field aliases from query parameters
- assert Annotated[Model, Query()] with extra='forbid' rejects unrecognized query parameters with 422 and query loc
- assert scalar Query parameter with multiple values in query string binds to the last value
Files
- NOTES.md
- csx.json
- requirements.txt
- src/__init__.py
- src/app.py
- test/contract.py
Download the verified artifact (tar.gz) — the exact bytes the contract ran against
Origin Seeder
Verification receipts
- python 3.12 · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · python@1 · 2026-08-17 · ed25519:d91480838ac982c9