178 Commits

Author SHA1 Message Date
Sebastián Ramírez 7fe315c21a 🐛 Refactor router route building to make it thread-safe, mainly relevant for tests running in parallel threads (uncommon) (#16013) 2026-07-16 16:57:38 +02:00
Sebastián Ramírez eb75fd078e 🐛 Fix frontend fallback support for doted paths like /users/john.doe (#16011) 2026-07-16 10:59:23 +02:00
Sebastián Ramírez 319be508ce Support dependencies in app.frontend(), e.g. for automatic cookie authentication for the frontend (#15908) 2026-07-01 18:12:33 +02:00
Sebastián Ramírez b790e14cb6 ♻️ Make app.frontend() return 404 for methods other than GET or HEAD with no static file matches (#15863) 2026-06-29 13:57:59 +02:00
Sebastián Ramírez 2260afaf43 🐛 Fix failing test, update format for raised errors (#15804) 2026-06-20 00:51:31 +00:00
Sebastián Ramírez 4d3dc78b26 Add support for app.frontend("/", directory="dist") and router.frontend("/", directory="dist") (#15800) 2026-06-20 00:20:49 +00:00
Sebastián Ramírez 6ac122071d Add iter_route_contexts() for advanced use cases that used to use router.routes (e.g. Jupyverse) (#15785) 2026-06-18 08:49:38 +02:00
Sebastián Ramírez b78c82262f 🚨 Fix typing checks for APIRoute (#15765) 2026-06-15 13:19:51 +02:00
Sebastián Ramírez d8aad201eb 🐛 Fix bug, allow empty path in path operation in prefixless router (#15763) 2026-06-15 12:55:06 +02:00
Sebastián Ramírez 8e1d774cef ♻️ Refactor internals to preserve APIRouter and APIRoute instances (#15745) 2026-06-14 14:35:48 +02:00
dependabot[bot] 5d5666bec5 ⬆ Bump ty from 0.0.21 to 0.0.34 (#15443)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: svlandeg <sofie.vanlandeghem@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-11 16:59:50 +02:00
Sofie Van Landeghem 98b269b51e 👷 Add ty to precommit (#15091)
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-03-15 12:44:39 +01:00
Sebastián Ramírez 8a9258b169 🐛 Fix, avoid yield from a TaskGroup, only as an async context manager, closed in the request async exit stack (#15038) 2026-03-01 19:16:03 +01:00
Sebastián Ramírez 2238155844 Add support for Server Sent Events (#15030) 2026-03-01 10:21:52 +01:00
Sebastián Ramírez 749cefdeb1 Add support for streaming JSON Lines and binary data with yield (#15022) 2026-02-27 19:56:47 +01:00
Sebastián Ramírez 22354a2530 🔒️ Add strict_content_type checking for JSON requests (#14978) 2026-02-23 18:45:20 +01:00
Sebastián Ramírez 590a5e5355 Serialize JSON response with Pydantic (in Rust), when there's a Pydantic return type or response model (#14962) 2026-02-22 17:07:19 +01:00
Sebastián Ramírez 3da206c06d 🎨 Update internal types for Python 3.10 (#14898) 2026-02-11 18:41:21 +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
Sebastián Ramírez d59fbc3494 ♻️ Refactor internals, simplify Pydantic v2/v1 utils, create_model_field, better types for lenient_issubclass (#14860) 2026-02-07 08:08:07 +00:00
Sebastián Ramírez cf55bade7e ♻️ Simplify internals, remove Pydantic v1 only logic, no longer needed (#14857) 2026-02-06 19:04:24 +00:00
Sebastián Ramírez 3c49346238 ♻️ Refactor internals, cleanup unneeded Pydantic v1 specific logic (#14856) 2026-02-06 19:01:05 +01: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
Sebastián Ramírez e300630551 Drop support for pydantic.v1 (#14609) 2025-12-27 13:54:56 +01:00
Sebastián Ramírez 535b5daa31 🔊 Add a custom FastAPIDeprecationWarning (#14605) 2025-12-26 12:45:20 +00:00
Sebastián Ramírez 6e42bcd8ce 🔊 Add deprecation warnings when using pydantic.v1 (#14583) 2025-12-21 17:44:10 +01: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
Sebastián Ramírez 1c4fc96c91 ♻️ Upgrade internal syntax to Python 3.9+ 🎉 (#14564) 2025-12-17 21:25:59 +00: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
Sebastián Ramírez a79ae3d66f 🔥 Remove dangling extra condiitonal no longer needed (#14435) 2025-12-02 16:48:46 +00:00
Sebastián Ramírez 247ef32e79 ♻️ Refactor internals, update is_coroutine check to reuse internal supported variants (unwrap, check class) (#14434) 2025-12-02 13:43:31 +00:00
Sebastián Ramírez ac438b9934 Add support for dependencies with scopes, support scope="request" for dependencies with yield that exit before the response is sent (#14262)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-11-03 11:12:49 +01:00
Sebastián Ramírez d390f2e41f Migrate internal reference documentation from typing_extensions.Doc to annotated_doc.Doc (#14222) 2025-10-23 22:31:35 +02:00
Sebastián Ramírez d34918abf0 Add support for from pydantic.v1 import BaseModel, mixed Pydantic v1 and v2 models in the same app (#14168)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-10-11 18:45:54 +02:00
Sebastián Ramírez e329d78f86 🐛 Fix support for StreamingResponses with dependencies with yield or UploadFiles, close after the response is done (#14099)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-29 05:29:38 +02:00
secrett2633 c831cdbde2 🐛 Fix inspect.getcoroutinefunction() can break testing with unittest.mock.patch() (#14022) 2025-09-20 18:30:34 +02:00
Tamir Duberstein a95e91e46e ⬆️ Update mypy to 1.14.1 (#12970)
Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com>
Co-authored-by: Sofie Van Landeghem <svlandeg@users.noreply.github.com>
Co-authored-by: svlandeg <svlandeg@github.com>
Co-authored-by: svlandeg <sofie.vanlandeghem@gmail.com>
2025-09-20 14:05:51 +02:00
Sebastián Ramírez cad6880fd9 ⬆️ Upgrade Starlette supported version range to >=0.40.0,<0.48.0 (#13884) 2025-07-11 18:15:27 +02:00
Timon 97fdbdd0d8 📝 Update exclude-parameters-from-openapi documentation links (#13600) 2025-06-17 10:05:34 +02:00
dependabot[bot] 8c94e97c89 ⬆ Bump ruff to 0.9.4 (#13299)
* ⬆ Bump ruff from 0.6.4 to 0.9.4

Bumps [ruff](https://github.com/astral-sh/ruff) from 0.6.4 to 0.9.4.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.6.4...0.9.4)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* update pre-commit accordingly and make formatting changes

* 🎨 [pre-commit.ci] Auto format from pre-commit.com hooks

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alejandra <90076947+alejsdev@users.noreply.github.com>
Co-authored-by: svlandeg <sofie.vanlandeghem@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-03-06 13:18:57 +01:00
Felix Fanghaenel e049fc4ea1 🐛 Fix openapi generation with responses kwarg (#10895)
Co-authored-by: flxdot <felix.fanghaenel@nitrex.com>
Co-authored-by: Sofie Van Landeghem <svlandeg@users.noreply.github.com>
Co-authored-by: Sławek Ehlert <slawomir.ehlert@gmail.com>
2024-10-12 11:44:57 +02:00
Sebastián Ramírez aa21814a89 ♻️ Refactor deciding if embed body fields, do not overwrite fields, compute once per router, refactor internals in preparation for Pydantic models in Form, Query and others (#12117) 2024-09-05 13:24:36 +02:00
Sebastián Ramírez d08b95ea57 ♻️ Rename internal create_response_field() to create_model_field() as it's used for more than response models (#12103) 2024-09-01 01:46:03 +02:00
Sebastián Ramírez 5b7fa3900e ♻️ Refactor and simplify internal data from solve_dependencies() using dataclasses (#12100) 2024-08-31 22:52:06 +02:00
Pastukhov Nikita 3a4ac24675 🐛 Ensure that app.include_router merges nested lifespans (#9630)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2024-08-24 14:09:52 -05:00
Sebastián Ramírez 3a3ad5d66d ⬆️ Upgrade version of Ruff and reformat (#12032)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-08-16 23:13:50 -05:00
Aleksei Kotenko 9c80842cea ♻️ Update mypy (#11049)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2024-04-01 21:48:51 -05:00
Sebastián Ramírez bf771bd781 🐛 Fix unhandled growing memory for internal server errors, refactor dependencies with yield and except to require raising again as in regular Python (#11191)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-02-25 00:06:37 +01:00
Sepehr Shirkhanlu 60e1259ca4 ✏️ Fix typo in fastapi/routing.py (#10520)
Fix: https://github.com/tiangolo/fastapi/discussions/10493
2024-01-09 17:10:37 +01:00