Commit Graph

471 Commits

Author SHA1 Message Date
lif cc01fad8e6
Merge b89a15d575 into 5420847d9f 2026-02-13 15:28:46 +00:00
Sebastián Ramírez c9e2277d8b
📝 Update source examples and docs from Python 3.9 to 3.10 (#14900) 2026-02-12 14:19:43 +01:00
Sebastián Ramírez ad4e8e0060
Drop support for Python 3.9 (#14897)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-11 19:32:12 +01:00
Sebastián Ramírez 6ce5e3e961
Tweak comment in test to reference PR (#14885) 2026-02-10 12:14:38 +00:00
Valentyn 38f965985e
Test order for the submitted byte Files (#14828)
Co-authored-by: Valentyn Druzhynin <v.druzhynin@zakaz.global>
Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com>
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2026-02-10 11:46:48 +00:00
Javier Sánchez Castro df950111fe
Show a clear error on attempt to include router into itself (#14258)
Co-authored-by: Javier Sánchez <javier.sanchez.castro@bookline.ai>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com>
2026-02-10 11:58:40 +01:00
Motov Yurii ed2512a5ec
🐛 Fix `on_startup` and `on_shutdown` parameters of `APIRouter` (#14873)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-09 17:31:57 +01:00
Motov Yurii 227cb85a03
Fix parameterized tests with snapshots (#14875) 2026-02-09 16:35:43 +01:00
Sebastián Ramírez 9f4ecf562c
Add inline snapshot tests for OpenAPI before changes from Pydantic v2 (#14864) 2026-02-08 10:18:38 +00:00
Sebastián Ramírez f9f7992604
♻️ Re-implement `on_event` in FastAPI for compatibility with the next Starlette, while keeping backwards compatibility (#14851) 2026-02-06 16:18:30 +01:00
Kanetsuna Masaya c5fd75a321
🐛 Fix using `Json[list[str]]` type (issue #10997) (#14616)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com>
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2026-02-05 18:41:43 +00:00
Albin Skott 97145588f5
Add support for PEP695 `TypeAliasType` (#13920)
Co-authored-by: lokidev <torsten.zielke@protonmail.com>
Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Yurii Motov <yurii.motov.monte@gmail.com>
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2026-02-05 18:34:34 +00:00
Jonathan Fulton b49435becd
Allow `Response` type hint as dependency annotation (#14794)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com>
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2026-02-05 18:23:16 +00:00
Jonathan Fulton 75c47187f3
🐛 Update `ValidationError` schema to include `input` and `ctx` (#14791)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-02-04 15:34:02 +01:00
Mickaël Guérin 09f5941f0e
🐛 Fix TYPE_CHECKING annotations for Python 3.14 (PEP 649) (#14789) 2026-02-04 14:49:44 +01:00
Cecilia Madrid 1d96b3e3f1
🐛 Strip whitespaces from `Authorization` header credentials (#14786) 2026-02-04 14:46:46 +01:00
johnson-earls 3ee652dd0c
📝 Fix example of license identifier in documentation (#14492)
Co-authored-by: svlandeg <svlandeg@github.com>
2026-02-04 14:29:02 +01:00
Anton 41352de24c
🚸 Improve error message for invalid query parameter type annotations (#14479)
Co-authored-by: Anton.D <anton.dehtiarenko@chdp-tech.net>
Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com>
2026-02-04 14:24:59 +01:00
DJ Melisso 08dad5c69f
🐛 Fix OpenAPI duplication of `anyOf` refs for app-level responses with specified `content` and `model` as `Union` (#14463)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com>
2026-02-04 14:23:08 +01:00
Sebastián Ramírez 1b42639296
🔥 Remove test variants for Pydantic v1 in test_request_params (#14612) 2025-12-27 19:31:34 +01:00
Sebastián Ramírez 44c849c4fc
🔥 Remove Pydantic v1 specific test variants (#14611) 2025-12-27 19:19:10 +01:00
Sebastián Ramírez e300630551
Drop support for `pydantic.v1` (#14609) 2025-12-27 13:54:56 +01:00
Sebastián Ramírez 34e884156f
Run performance tests only on Pydantic v2 (#14608) 2025-12-26 20:40:26 +00:00
Sebastián Ramírez 535b5daa31
🔊 Add a custom `FastAPIDeprecationWarning` (#14605) 2025-12-26 12:45:20 +00:00
Motov Yurii 3063ada72f
Add missing tests for code examples (#14569)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Nils-Hero Lindemann <nilsherolindemann@proton.me>
2025-12-26 11:43:02 +01:00
lif b89a15d575 fix: use params.Depends instead of Depends for isinstance check
The Depends function returns a params.Depends instance, so we need to
check isinstance against params.Depends, not the Depends function itself.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 23:46:11 +08:00
pre-commit-ci-lite[bot] b8ab033080
🎨 Auto format 2025-12-25 15:41:17 +00:00
lif f7e2c39524 test: add comprehensive tests for _try_resolve_annotated_string
Add unit tests for:
- Invalid annotation formats (missing prefix/suffix)
- Non-Depends metadata (Query, etc.)
- Eval failures for undefined functions
- Nested brackets in type annotations
- ForwardRef type resolution failures
- Exception handling with partial resolution fallback
- Resolved Annotated types
- get_typed_signature edge cases

These tests improve coverage for the forward reference handling code.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-25 23:40:35 +08:00
Sebastián Ramírez 6e42bcd8ce
🔊 Add deprecation warnings when using `pydantic.v1` (#14583) 2025-12-21 17:44:10 +01:00
lif 70bd7a592e Exclude manual test runner from coverage 2025-12-21 17:48:45 +08:00
Sebastián Ramírez e2cd8a4201
Drop support for Pydantic v1, keeping short temporary support for Pydantic v2's `pydantic.v1` (#14575)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-20 16:55:38 +01:00
lif 831fd18892 fix: resolve ruff lint errors (Dict -> dict, remove outdated version block) 2025-12-18 22:13:08 +08:00
lif b175737867
Merge branch 'master' into fix/annotated-forward-ref-13056 2025-12-18 21:25:44 +08:00
Sebastián Ramírez caee1d3123
👷 Add performance tests with CodSpeed (#14558)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-18 14:24:09 +01:00
pre-commit-ci-lite[bot] dc6c5b8917
🎨 Auto format 2025-12-18 13:22:49 +00:00
lif c171f468d8 Fix CI failures: Python 3.8 compatibility and Pydantic v1 tests
- Fix Python 3.8 compatibility by importing Annotated from typing_extensions
  when running on Python < 3.9
- Simplify get_typed_signature to not use get_type_hints which was causing
  issues with Pydantic v1 parameter detection (Header, Cookie, Query, etc.)
- Instead, expand globalns with module namespace to help resolve forward
  references while keeping the original annotation resolution logic intact

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 21:21:13 +08:00
Sebastián Ramírez 1c4fc96c91
♻️ Upgrade internal syntax to Python 3.9+ 🎉 (#14564) 2025-12-17 21:25:59 +00:00
Sebastián Ramírez ed97d9dc0c
⚰️ Remove Python 3.8 from CI and remove Python 3.8 examples from source docs (#14559)
Co-authored-by: Yurii Motov <yurii.motov.monte@gmail.com>
Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com>
2025-12-17 21:41:43 +01:00
pre-commit-ci-lite[bot] a975a1704e
🎨 Auto format 2025-12-17 16:28:11 +00:00
lif 9e7ca4d454 Fix Annotated with ForwardRef when using future annotations
When using `from __future__ import annotations` with `Annotated[SomeClass, Depends()]`
where SomeClass is defined after the function, FastAPI was unable to properly
resolve the forward reference and treated the parameter as a query parameter
instead of a dependency.

This fix adds special handling to partially resolve Annotated string annotations,
extracting metadata (like Depends) even when the inner type cannot be fully resolved.

Fixes #13056
2025-12-18 00:27:08 +08:00
Motov Yurii d86c47477e
🐛 Fix parameter aliases (#14371)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2025-12-12 15:56:57 +01:00
Sebastián Ramírez c0556ac3a5
🐛 Fix support for tagged union with discriminator inside of `Annotated` with `Body()` (#14512) 2025-12-12 15:31:21 +01:00
Motov Yurii 6c54bcefd3
Add set of tests for request parameters and alias (#14358)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2025-12-11 17:15:36 +01:00
Sebastián Ramírez cd9d093f60
📝 Update docs about re-raising validation errors, do not include string as is to not leak information (#14487) 2025-12-10 12:56:50 +00:00
Sebastián Ramírez 7ba042e069
🐛 Fix support for `if TYPE_CHECKING`, non-evaluated stringified annotations (#14485) 2025-12-10 13:06:05 +01:00
Sebastián Ramírez 42b250d14d
🐛 Fix handling arbitrary types when using `arbitrary_types_allowed=True` (#14482) 2025-12-10 11:36:29 +01:00
Motov Yurii 9475024640
📝 Add variants for code examples in "Advanced User Guide" (#14413) 2025-12-10 09:55:32 +01:00
Sebastián Ramírez 8cedb742cb
Add test for Pydantic v2, dataclasses, UUID, and `__annotations__` (#14477) 2025-12-09 12:12:24 +01:00
Savannah Ostrowski e1117f7550
🚸 Improve tracebacks by adding endpoint metadata (#14306)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2025-12-06 12:21:57 +00:00
Motov Yurii da0ffab0b2
🐛 Fix using class (not instance) dependency that has `__call__` method (#14458)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2025-12-05 21:21:05 +00:00