mirror of
https://github.com/kennethreitz/responder.git
synced 2026-07-21 18:39:29 +00:00
3fb3dfb2f9
- File() and Form() markers: File() injects a Starlette UploadFile (streamed,
spooled to disk); Form() injects a coerced/validated form field like Query().
list[UploadFile]/list[str] collect repeated fields; Annotated[] form works.
- responder.UploadFile exported.
- _resolve_markers is now async and parses the form once via Starlette's
request.form() (replaying an already-buffered body when needed); file markers
skip the scalar adapter.
- Multipart/urlencoded OpenAPI requestBody for form/file routes (files as
{type: string, format: binary}) so docs show a file picker.
- Existing req.media('files') bytes-dict contract untouched.
Backwards-compatible. 531 tests pass; ruff + mypy clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>