♻️ Add support for pip install "fastapi[standard]" with standard dependencies and python -m fastapi. PR #11935 by @tiangolo.
Summary
Install with:
pip install "fastapi[standard]"
Other Changes
This adds support for calling the CLI as:
python -m fastapi
And it upgrades fastapi-cli[standard] >=0.0.5.
Technical Details
Before this, fastapi would include the standard dependencies, with Uvicorn and the fastapi-cli, etc.
And fastapi-slim would not include those standard dependencies.
Now fastapi doesn't include those standard dependencies unless you install with pip install "fastapi[standard]".
Before, you would install pip install fastapi, now you should include the standard optional dependencies (unless you want to exclude one of those): pip install "fastapi[standard]".
This change is because having the standard optional dependencies installed by default was being inconvenient to several users, and having to install instead fastapi-slim was not being a feasible solution.
$ pip install --upgrade fastapi
$ fastapi dev main.py
╭────────── FastAPI CLI - Development mode ───────────╮
│ │
│ Serving at: http://127.0.0.1:8000 │
│ │
│ API docs: http://127.0.0.1:8000/docs │
│ │
│ Running in development mode, for production use: │
│ │
│ fastapi run │
│ │
╰─────────────────────────────────────────────────────╯
INFO: Will watch for changes in these directories: ['/home/user/code/awesomeapp']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [2248755] using WatchFiles
INFO: Started server process [2248757]
INFO: Waiting for application startup.
INFO: Application startup complete.
Refactors
🔧 Add configs and setup for fastapi-slim including optional extras fastapi-slim[standard], and fastapi including by default the same standard extras. PR #11503 by @tiangolo.
🛠️ Improve Node.js script in docs to generate TypeScript clients. PR #11293 by @alejsdev.
📝 Update examples for tests to replace "inexistent" for "nonexistent". PR #11220 by @Homesteady.
📝 Update python-multipart GitHub link in all docs from https://andrew-d.github.io/python-multipart/ to https://github.com/Kludex/python-multipart. PR #11239 by @joshjhans.
Translations
🌐 Add German translation for docs/de/docs/tutorial/response-status-code.md. PR #10357 by @nilslindemann.
🌐 Update Chinese translation for docs/zh/docs/tutorial/query-params.md. PR #3480 by @jaystone776.
🌐 Update Chinese translation for docs/zh/docs/tutorial/body.md. PR #3481 by @jaystone776.
🌐 Update Chinese translation for docs/zh/docs/tutorial/path-params.md. PR #3479 by @jaystone776.
🌐 Update Chinese translation for docs/tutorial/body-fields.md. PR #3496 by @jaystone776.
🌐 Update Chinese translation for docs/tutorial/extra-models.md. PR #3497 by @jaystone776.
🌐 Add Japanese translation for docs/ja/docs/tutorial/metadata.md. PR #2667 by @tokusumi.
🌐 Add German translation for docs/de/docs/contributing.md. PR #10487 by @nilslindemann.
🌐 Update Japanese translation of docs/ja/docs/tutorial/query-params.md. PR #10808 by @urushio.
🌐 Update Chinese translation for docs/zh/docs/tutorial/security/get-current-user.md. PR #3842 by @jaystone776.
🌐 Add Chinese translation for docs/zh/docs/advanced/openapi-callbacks.md. PR #3825 by @jaystone776.
🌐 Add Chinese translation for docs/zh/docs/advanced/extending-openapi.md. PR #3823 by @jaystone776.
🌐 Add Chinese translation for docs/zh/docs/advanced/testing-dependencies.md. PR #3819 by @jaystone776.
🌐 Add Chinese translation for docs/zh/docs/advanced/custom-request-and-route.md. PR #3816 by @jaystone776.
🌐 Add Chinese translation for docs/zh/docs/external-links.md. PR #3833 by @jaystone776.
🌐 Add Chinese translation for docs/zh/docs/advanced/templates.md. PR #3812 by @jaystone776.
🌐 Add Chinese translation for docs/zh/docs/advanced/sub-applications.md. PR #3811 by @jaystone776.
🌐 Add Chinese translation for docs/zh/docs/advanced/async-sql-databases.md. PR #3805 by @jaystone776.
🌐 Add Chinese translation for docs/zh/docs/advanced/middleware.md. PR #3804 by @jaystone776.
🌐 Add Chinese translation for docs/zh/docs/advanced/dataclasses.md. PR #3803 by @jaystone776.
🌐 Add Chinese translation for docs/zh/docs/advanced/using-request-directly.md. PR #3802 by @jaystone776.
🌐 Add Chinese translation for docs/zh/docs/advanced/security/http-basic-auth.md. PR #3801 by @jaystone776.
🌐 Add Chinese translation for docs/zh/docs/advanced/security/oauth2-scopes.md. PR #3800 by @jaystone776.
🌐 Update Chinese translation for docs/zh/docs/tutorial/cookie-params.md. PR #3486 by @jaystone776.
🌐 Update Chinese translation for docs/zh/docs/tutorial/header-params.md. PR #3487 by @jaystone776.
🌐 Update Chinese translation for docs/tutorial/response-status-code.md. PR #3498 by @jaystone776.
🌐 Add German translation for docs/de/docs/tutorial/security/first-steps.md. PR #10432 by @nilslindemann.
🌐 Add German translation for docs/de/docs/advanced/events.md. PR #10693 by @nilslindemann.
🌐 Add German translation for docs/de/docs/deployment/cloud.md. PR #10746 by @nilslindemann.
🌐 Add German translation for docs/de/docs/advanced/behind-a-proxy.md. PR #10675 by @nilslindemann.
🌐 Add German translation for docs/de/docs/help-fastapi.md. PR #10455 by @nilslindemann.
🌐 Update German translation for docs/de/docs/python-types.md. PR #10287 by @nilslindemann.
🌐 Add German translation for docs/de/docs/tutorial/path-params.md. PR #10290 by @nilslindemann.
🌐 Add German translation for docs/de/docs/tutorial/handling-errors.md. PR #10379 by @nilslindemann.
🐛 Fix unhandled growing memory for internal server errors, refactor dependencies with yield and except to require raising again as in regular Python. PR #11191 by @tiangolo.
This is a breaking change (and only slightly) if you used dependencies with yield, used except in those dependencies, and didn't raise again.
This was reported internally by @rushilsrivastava as a memory leak when the server had unhandled exceptions that would produce internal server errors, the memory allocated before that point would not be released.
⬆️ Upgrade minimum version of python-multipart to >=0.0.7 to fix a vulnerability when using form data with a ReDos attack. You can also simply upgrade python-multipart.
✨ Include HTTP 205 in status codes with no body. PR #10969 by @tiangolo.
Refactors
✅ Refactor tests for duplicate operation ID generation for compatibility with other tools running the FastAPI test suite. PR #10876 by @emmettbutler.
♻️ Simplify string format with f-strings in fastapi/utils.py. PR #10576 by @eukub.
🔧 Fix Ruff configuration unintentionally enabling and re-disabling mccabe complexity check. PR #10893 by @jiridanek.
✅ Re-enable test in tests/test_tutorial/test_header_params/test_tutorial003.py after fix in Starlette. PR #10904 by @ooknimm.
✏️ Update highlighted line in docs/en/docs/tutorial/bigger-applications.md. PR #5490 by @papb.
📝 Add External Link: Explore How to Effectively Use JWT With FastAPI. PR #10212 by @aanchlia.
📝 Add hyperlink to docs/en/docs/tutorial/static-files.md. PR #10243 by @hungtsetse.
📝 Add External Link: Instrument a FastAPI service adding tracing with OpenTelemetry and send/show traces in Grafana Tempo. PR #9440 by @softwarebloat.
✏️ Fix Pydantic method name in docs/en/docs/advanced/path-operation-advanced-configuration.md. PR #10826 by @ahmedabdou14.
Translations
🌐 Add Spanish translation for docs/es/docs/external-links.md. PR #10933 by @pablocm83.
🌐 Update Korean translation for docs/ko/docs/tutorial/first-steps.md, docs/ko/docs/tutorial/index.md, docs/ko/docs/tutorial/path-params.md, and docs/ko/docs/tutorial/query-params.md. PR #4218 by @SnowSuno.
🌐 Add Chinese translation for docs/zh/docs/tutorial/dependencies/dependencies-with-yield.md. PR #10870 by @zhiquanchi.
🌐 Add Chinese translation for docs/zh/docs/deployment/concepts.md. PR #10282 by @xzmeng.
🌐 Add Azerbaijani translation for docs/az/docs/index.md. PR #11047 by @aykhans.
🌐 Add Korean translation for docs/ko/docs/tutorial/middleware.md. PR #2829 by @JeongHyeongKim.
🌐 Add German translation for docs/de/docs/tutorial/body-nested-models.md. PR #10313 by @nilslindemann.
🌐 Add Persian translation for docs/fa/docs/tutorial/middleware.md. PR #9695 by @mojtabapaso.
🌐 Add Turkish translation for docs/tr/docs/project-generation.md. PR #5192 by @BilalAlpaslan.
🌐 Add Korean translation for docs/ko/docs/deployment/docker.md. PR #5657 by @nearnear.
🌐 Add Korean translation for docs/ko/docs/deployment/server-workers.md. PR #4935 by @jujumilk3.
🌐 Add Korean translation for docs/ko/docs/deployment/index.md. PR #4561 by @jujumilk3.
🌐 Add Korean translation for docs/ko/docs/tutorial/path-operation-configuration.md. PR #3639 by @jungsu-kwon.
🌐 Modify the description of zh - Traditional Chinese. PR #10889 by @cherinyy.
🌐 Add Korean translation for docs/ko/docs/tutorial/static-files.md. PR #2957 by @jeesang7.
🌐 Add Korean translation for docs/ko/docs/tutorial/response-model.md. PR #2766 by @hard-coders.
🌐 Add Korean translation for docs/ko/docs/tutorial/body-multiple-params.md. PR #2461 by @PandaHun.
🌐 Add Korean translation for docs/ko/docs/tutorial/query-params-str-validations.md. PR #2415 by @hard-coders.
🌐 Add Korean translation for docs/ko/docs/python-types.md. PR #2267 by @jrim.
🌐 Add Korean translation for docs/ko/docs/tutorial/body-nested-models.md. PR #2506 by @hard-coders.
🌐 Add Korean translation for docs/ko/docs/learn/index.md. PR #10977 by @KaniKim.
🌐 Initialize translations for Traditional Chinese. PR #10505 by @hsuanchi.
✏️ Tweak the german translation of docs/de/docs/tutorial/index.md. PR #10962 by @nilslindemann.
✏️ Fix typo error in docs/ko/docs/tutorial/path-params.md. PR #10758 by @2chanhaeng.
🌐 Add Japanese translation for docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md. PR #1961 by @SwftAlpc.
🌐 Add Japanese translation for docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md. PR #1960 by @SwftAlpc.
🌐 Add Japanese translation for docs/ja/docs/tutorial/dependencies/sub-dependencies.md. PR #1959 by @SwftAlpc.
🌐 Add Japanese translation for docs/ja/docs/tutorial/background-tasks.md. PR #2668 by @tokusumi.
🌐 Add Japanese translation for docs/ja/docs/tutorial/dependencies/index.md and docs/ja/docs/tutorial/dependencies/classes-as-dependencies.md. PR #1958 by @SwftAlpc.
🌐 Add Japanese translation for docs/ja/docs/tutorial/response-model.md. PR #1938 by @SwftAlpc.
🌐 Add Japanese translation for docs/ja/docs/tutorial/body-multiple-params.md. PR #1903 by @SwftAlpc.
🌐 Add Japanese translation for docs/ja/docs/tutorial/path-params-numeric-validations.md. PR #1902 by @SwftAlpc.
🌐 Add Japanese translation for docs/ja/docs/python-types.md. PR #1899 by @SwftAlpc.
🌐 Add Japanese translation for docs/ja/docs/tutorial/handling-errors.md. PR #1953 by @SwftAlpc.
🌐 Add Japanese translation for docs/ja/docs/tutorial/response-status-code.md. PR #1942 by @SwftAlpc.
🌐 Add Japanese translation for docs/ja/docs/tutorial/extra-models.md. PR #1941 by @SwftAlpc.
🌐 Add Japanese tranlsation for docs/ja/docs/tutorial/schema-extra-example.md. PR #1931 by @SwftAlpc.
🌐 Add Japanese translation for docs/ja/docs/tutorial/body-nested-models.md. PR #1930 by @SwftAlpc.
🌐 Add Japanese translation for docs/ja/docs/tutorial/body-fields.md. PR #1923 by @SwftAlpc.
🌐 Add German translation for docs/de/docs/tutorial/index.md. PR #9502 by @fhabers21.
🌐 Add German translation for docs/de/docs/tutorial/background-tasks.md. PR #10566 by @nilslindemann.
⬆️ Upgrade Starlette to >=0.29.0,<0.33.0, update docs and usage of templates with new Starlette arguments. Remove pin of AnyIO >=3.7.1,<4.0.0, add support for AnyIO 4.x.x. PR #10846 by @tiangolo.
Docs
✏️ Fix typo in docs/en/docs/alternatives.md. PR #10931 by @s111d.
📝 Replace email with username in docs_src/security/tutorial007 code examples. PR #10649 by @nilslindemann.
✏️ Update Python version in index.md in several languages. PR #10711 by @tamago3keran.
🌐 Add Russian translation for docs/ru/docs/tutorial/request-forms-and-files.md. PR #10347 by @AlertRED.
🌐 Add Ukrainian translation for docs/uk/docs/index.md. PR #10362 by @rostik1410.
✏️ Update Python version in docs/ko/docs/index.md. PR #10680 by @Eeap.
🌐 Add Persian translation for docs/fa/docs/features.md. PR #5887 by @amirilf.
🌐 Add Chinese translation for docs/zh/docs/advanced/additional-responses.md. PR #10325 by @ShuibeiC.
🌐 Fix typos in Russian translations for docs/ru/docs/tutorial/background-tasks.md, docs/ru/docs/tutorial/body-nested-models.md, docs/ru/docs/tutorial/debugging.md, docs/ru/docs/tutorial/testing.md. PR #10311 by @AlertRED.
🌐 Add Russian translation for docs/ru/docs/tutorial/request-files.md. PR #10332 by @AlertRED.
🌐 Add Chinese translation for docs/zh/docs/deployment/server-workers.md. PR #10292 by @xzmeng.
🌐 Add Chinese translation for docs/zh/docs/deployment/cloud.md. PR #10291 by @xzmeng.
🌐 Add Chinese translation for docs/zh/docs/deployment/manually.md. PR #10279 by @xzmeng.
🌐 Add Chinese translation for docs/zh/docs/deployment/https.md. PR #10277 by @xzmeng.
🌐 Add Chinese translation for docs/zh/docs/deployment/index.md. PR #10275 by @xzmeng.
🌐 Add German translation for docs/de/docs/tutorial/first-steps.md. PR #9530 by @fhabers21.
fromfastapiimportDepends,FastAPI,HTTPExceptionfromtyping_extensionsimportAnnotatedapp=FastAPI()data={"plumbus":{"description":"Freshly pickled plumbus","owner":"Morty"},"portal-gun":{"description":"Gun to create portals","owner":"Rick"},}classOwnerError(Exception):passdefget_username():try:yield"Rick"exceptOwnerErrorase:raiseHTTPException(status_code=400,detail=f"Onwer error: {e}")@​app.get("/items/{item_id}")defget_item(item_id:str,username:Annotated[str,Depends(get_username)]):ifitem_idnotindata:raiseHTTPException(status_code=404,detail="Item not found")item=data[item_id]ifitem["owner"]!=username:raiseOwnerError(username)returnitem
Before FastAPI 0.106.0, raising exceptions after yield was not possible, the exit code in dependencies with yield was executed after the response was sent, so Exception Handlers would have already run.
This was designed this way mainly to allow using the same objects "yielded" by dependencies inside of background tasks, because the exit code would be executed after the background tasks were finished.
Nevertheless, as this would mean waiting for the response to travel through the network while unnecessarily holding a resource in a dependency with yield (for example a database connection), this was changed in FastAPI 0.106.0.
Additionally, a background task is normally an independent set of logic that should be handled separately, with its own resources (e.g. its own database connection).
If you used to rely on this behavior, now you should create the resources for background tasks inside the background task itself, and use internally only data that doesn't depend on the resources of dependencies with yield.
For example, instead of using the same database session, you would create a new database session inside of the background task, and you would obtain the objects from the database using this new session. And then instead of passing the object from the database as a parameter to the background task function, you would pass the ID of that object and then obtain the object again inside the background task function.
📌 Pin Swagger UI version to 5.9.0 temporarily to handle a bug crashing it in 5.9.1. PR #10529 by @alejandraklachquin.
This is not really a bug in FastAPI but in Swagger UI, nevertheless pinning the version will work while a solution is found on the Swagger UI side.
Docs
📝 Update data structure and render for external-links. PR #10495 by @tiangolo.
✏️ Fix link to SPDX license identifier in docs/en/docs/tutorial/metadata.md. PR #10433 by @worldworm.
📝 Update example validation error from Pydantic v1 to match Pydantic v2 in docs/en/docs/tutorial/path-params.md. PR #10043 by @giuliowaitforitdavide.
✏️ Fix typos in emoji docs and in some source examples. PR #10438 by @afuetterer.
✏️ Fix typo in docs/en/docs/reference/dependencies.md. PR #10465 by @suravshresth.
✏️ Fix typos and rewordings in docs/en/docs/tutorial/body-nested-models.md. PR #10468 by @yogabonito.
📝 Update docs, remove references to removed pydantic.Required in docs/en/docs/tutorial/query-params-str-validations.md. PR #10469 by @yogabonito.
✏️ Fix typo in docs/en/docs/reference/index.md. PR #10467 by @tarsil.
🔥 Remove unnecessary duplicated docstrings. PR #10484 by @tiangolo.
✨ Add reference (code API) docs with PEP 727, add subclass with custom docstrings for BackgroundTasks, refactor docs structure. PR #10392 by @tiangolo. New docs at FastAPI Reference - Code API.
Upgrades
⬆️ Drop support for Python 3.7, require Python 3.8 or above. PR #10442 by @tiangolo.
✨ Add support for disabling the separation of input and output JSON Schemas in OpenAPI with Pydantic v2 with separate_input_output_schemas=False. PR #10145 by @tiangolo.
Pydantic version 2 has the core re-written in Rust and includes a lot of improvements and features, for example:
Improved correctness in corner cases.
Safer types.
Better performance and less energy consumption.
Better extensibility.
etc.
...all this while keeping the same Python API. In most of the cases, for simple models, you can simply upgrade the Pydantic version and get all the benefits. 🚀
In some cases, for pure data validation and processing, you can get performance improvements of 20x or more. This means 2,000% or more. 🤯
When you use FastAPI, there's a lot more going on, processing the request and response, handling dependencies, executing your own code, and particularly, waiting for the network. But you will probably still get some nice performance improvements just from the upgrade.
The focus of this release is compatibility with Pydantic v1 and v2, to make sure your current apps keep working. Later there will be more focus on refactors, correctness, code improvements, and then performance improvements. Some third-party early beta testers that ran benchmarks on the beta releases of FastAPI reported improvements of 2x - 3x. Which is not bad for just doing pip install --upgrade fastapi pydantic. This was not an official benchmark and I didn't check it myself, but it's a good sign.
For the things that need changes in your Pydantic models, the Pydantic team built bump-pydantic.
A command line tool that will process your code and update most of the things automatically for you. Make sure you have your code in git first, and review each of the changes to make sure everything is correct before committing the changes.
Pydantic v1
This version of FastAPI still supports Pydantic v1. And although Pydantic v1 will be deprecated at some point, ti will still be supported for a while.
This means that you can install the new Pydantic v2, and if something fails, you can install Pydantic v1 while you fix any problems you might have, but having the latest FastAPI.
There are tests for both Pydantic v1 and v2, and test coverage is kept at 100%.
Changes
There are new parameter fields supported by Pydantic Field() for:
Path()
Query()
Header()
Cookie()
Body()
Form()
File()
The new parameter fields are:
default_factory
alias_priority
validation_alias
serialization_alias
discriminator
strict
multiple_of
allow_inf_nan
max_digits
decimal_places
json_schema_extra
...you can read about them in the Pydantic docs.
The parameter regex has been deprecated and replaced by pattern.
New Pydantic models use an improved and simplified attribute model_config that takes a simple dict instead of an internal class Config for their configuration.
Now Pydantic Settings is an additional optional package (included in "fastapi[all]"). To use settings you should now import from pydantic_settings import BaseSettings instead of importing from pydantic directly.
Note: this is the last release before supporting Pydantic v2. You can try out the beta with support for Pydantic v2 now, a new beta supporting Pydantic v2 with these same changes from this release will be available in the next hours/days. And the final version (0.100.0) with support for Pydantic v2 will be released in the next days (next week).
Now, back to this release (this one doesn't include the beta support for Pydantic v2).
Upgrade OpenAPI 3.1.0, this uses JSON Schema 2020-12.
Upgrade Swagger UI to version 5.x.x, that supports OpenAPI 3.1.0.
Updated examples field in Query(), Cookie(), Body(), etc. based on the latest JSON Schema and OpenAPI. Now it takes a list of examples and they are included directly in the JSON Schema, not outside. Read more about it (including the historical technical details) in the updated docs: Tutorial: Declare Request Example Data.
✨ Add support for deque objects and children in jsonable_encoder. PR #9433 by @cranium.
Docs
📝 Fix form for the FastAPI and friends newsletter. PR #9749 by @tiangolo.
Translations
🌐 Add Persian translation for docs/fa/docs/advanced/sub-applications.md. PR #9692 by @mojtabapaso.
🌐 Add Russian translation for docs/ru/docs/tutorial/response-model.md. PR #9675 by @glsglsgls.
Internal
🔨 Enable linenums in MkDocs Material during local live development to simplify highlighting code. PR #9769 by @tiangolo.
⬆ Update httpx requirement from <0.24.0,>=0.23.0 to >=0.23.0,<0.25.0. PR #9724 by @dependabot[bot].
🐛 Fix HTTPException header type annotations. PR #9648 by @tiangolo.
🐛 Fix OpenAPI model fields int validations, gte to ge. PR #9635 by @tiangolo.
Upgrades
📌 Update minimum version of Pydantic to >=1.7.4. This fixes an issue when trying to use an old version of Pydantic. PR #9567 by @Kludex.
Refactors
♻ Remove media_type from ORJSONResponse as it's inherited from the parent class. PR #5805 by @Kludex.
♻ Instantiate HTTPException only when needed, optimization refactor. PR #5356 by @pawamoy.
Docs
🔥 Remove link to Pydantic's benchmark, as it was removed there. PR #5811 by @Kludex.
Translations
🌐 Fix spelling in Indonesian translation of docs/id/docs/tutorial/index.md. PR #5635 by @purwowd.
🌐 Add Russian translation for docs/ru/docs/tutorial/index.md. PR #5896 by @Wilidon.
🌐 Add Chinese translations for docs/zh/docs/advanced/response-change-status-code.md and docs/zh/docs/advanced/response-headers.md. PR #9544 by @ChoyeonChern.
🌐 Add Russian translation for docs/ru/docs/tutorial/schema-extra-example.md. PR #9621 by @Alexandrhub.
This release adds support for dependencies and parameters using Annotated and recommends its usage. ✨
This has several benefits, one of the main ones is that now the parameters of your functions with Annotated would not be affected at all.
If you call those functions in other places in your code, the actual default values will be kept, your editor will help you notice missing required arguments, Python will require you to pass required arguments at runtime, you will be able to use the same functions for different things and with different libraries (e.g. Typer will soon support Annotated too, then you could use the same function for an API and a CLI), etc.
Because Annotated is standard Python, you still get all the benefits from editors and tools, like autocompletion, inline errors, etc.
One of the biggest benefits is that now you can create Annotated dependencies that are then shared by multiple path operation functions, this will allow you to reduce a lot of code duplication in your codebase, while keeping all the support from editors and tools.
...and CurrentUser has all the typing information as User, so your editor will work as expected (autocompletion and everything), and FastAPI will be able to understand the dependency defined in Annotated. 😎
Roughly all the docs have been rewritten to use Annotated as the main way to declare parameters and dependencies. All the examples in the docs now include a version with Annotated and a version without it, for each of the specific Python versions (when there are small differences/improvements in more recent versions). There were around 23K new lines added between docs, examples, and tests. 🚀
✨ Add support for lifespan async context managers (superseding startup and shutdown events). Initial PR #2944 by @uSpike.
Now, instead of using independent startup and shutdown events, you can define that logic in a single function with yield decorated with @asynccontextmanager (an async context manager).
For example:
fromcontextlibimportasynccontextmanagerfromfastapiimportFastAPIdeffake_answer_to_everything_ml_model(x:float):returnx*42ml_models={}@​asynccontextmanagerasyncdeflifespan(app:FastAPI):### Load the ML modelml_models["answer_to_everything"]=fake_answer_to_everything_ml_modelyield### Clean up the ML models and release the resourcesml_models.clear()app=FastAPI(lifespan=lifespan)@​app.get("/predict")asyncdefpredict(x:float):result=ml_models["answer_to_everything"](x)return{"result":result}
Note: This is the recommended way going forward, instead of using startup and shutdown events.
This solves a vulnerability that could allow denial of service attacks by using many small multipart fields/files (parts), consuming high CPU and memory.
Only applications using forms (e.g. file uploads) could be affected.
For most cases, upgrading won't have any breaking changes.
⬆️ Upgrade Starlette version to 0.24.0 and refactor internals for compatibility. PR #5985 by @tiangolo.
This can solve nuanced errors when using middlewares. Before Starlette 0.24.0, a new instance of each middleware class would be created when a new middleware was added. That normally was not a problem, unless the middleware class expected to be created only once, with only one instance, that happened in some cases. This upgrade would solve those cases (thanks @adriangb! Starlette PR #2017). Now the middleware class instances are created once, right before the first request (the first time the app is called).
If you depended on that previous behavior, you might need to update your code. As always, make sure your tests pass before merging the upgrade.
Now the TestClient is based on HTTPX instead of Requests. 🚀
There are some possible breaking changes in the TestClient usage, but @Kludex built bump-testclient to help you automatize migrating your tests. Make sure you are using Git and that you can undo any unnecessary changes (false positive changes, etc) before using bump-testclient.
Note: this release doesn't affect final users, it's mainly internal. It unlocks Pydanitc work with the integration that runs FastAPI's tests in Pydantic's CI.
Docs
✏ Fix grammar and add helpful links to dependencies in docs/en/docs/async.md. PR #5432 by @pamelafox.
This version of FastAPI drops support for Python 3.6. 🔥 Please upgrade to a supported version of Python (3.7 or above), Python 3.6 reached the end-of-life a long time ago. 😅☠
🔧 Update package metadata, drop support for Python 3.6, move build internals from Flit to Hatch. PR #5240 by @ofek.
You hopefully updated to a supported version of Python a while ago. If you haven't, you really should.
Features
✨ Export WebSocketState in fastapi.websockets. PR #4376 by @matiuszka.
✨ Support Python internal description on Pydantic model's docstring. PR #3032 by @Kludex.
✨ Update ORJSONResponse to support non str keys and serializing Numpy arrays. PR #3892 by @baby5.
Fixes
🐛 Allow exit code for dependencies with yield to always execute, by removing capacity limiter for them, to e.g. allow closing DB connections without deadlocks. PR #5122 by @adriangb.
🐛 Fix FastAPI People GitHub Action: set HTTPX timeout for GraphQL query request. PR #5222 by @iudeen.
🐛 Make sure a parameter defined as required is kept required in OpenAPI even if defined as optional in another dependency. PR #4319 by @cd17822.
✨ Add ReDoc <noscript> warning when JS is disabled. PR #5074 by @evroon.
✨ Add support for FrozenSet in parameters (e.g. query). PR #2938 by @juntatalor.
✨ Allow custom middlewares to raise HTTPExceptions and propagate them. PR #2036 by @ghandic.
✨ Preserve json.JSONDecodeError information when handling invalid JSON in request body, to support custom exception handlers that use its information. PR #4057 by @UKnowWhoIm.
Fixes
🐛 Fix jsonable_encoder for dataclasses with pydantic-compatible fields. PR #3607 by @himbeles.
🐛 Fix support for extending openapi_extras with parameter lists. PR #4267 by @orilevari.
🐛 Fix response_model not invalidating None. PR #2725 by @hukkin.
If you are using response_model with some type that doesn't include None but the function is returning None, it will now raise an internal server error, because you are returning invalid data that violates the contract in response_model. Before this release it would allow breaking that contract returning None.
...calling the path /items/invalidnone will raise an error, because None is not a valid type for the response_model declared with Item.
You could also be implicitly returning None without realizing, for example:
fromfastapiimportFastAPIfrompydanticimportBaseModelclassItem(BaseModel):name:strprice:Optional[float]=Noneowner_ids:Optional[List[int]]=Noneapp=FastAPI()@​app.get("/items/invalidnone", response_model=Item)defget_invalid_none():ifflag:return{"name":"foo"}### if flag is False, at this point the function will implicitly return None
If you have path operations using response_model that need to be allowed to return None, make it explicit in response_model using Union[Something, None]:
This way the data will be correctly validated, you won't have an internal server error, and the documentation will also reflect that this path operation could return None (or null in JSON).
Fixes
⬆ Upgrade Swagger UI copy of oauth2-redirect.html to include fixes for flavors of authorization code flows in Swagger UI. PR #3439 initial PR by @koonpeng.
♻ Strip empty whitespace from description extracted from docstrings. PR #2821 by @and-semakin.
🐛 Fix cached dependencies when using a dependency in Security() and other places (e.g. Depends()) with different OAuth2 scopes. PR #2945 by @laggardkernel.
🎨 Update type annotations for response_model, allow things like Union[str, None]. PR #5294 by @tiangolo.
Translations
🌐 Fix typos in German translation for docs/de/docs/features.md. PR #4533 by @0xflotus.
🌐 Add missing navigator for encoder.md in Korean translation. PR #5238 by @joonas-yoon.
This release includes upgrades to third-party packages that handle security issues. Although there's a chance these issues don't affect you in particular, please upgrade as soon as possible.
Fixes
✅ Fix new/recent tests with new fixed ValidationError JSON Schema. PR #4806 by @tiangolo.
🐛 Fix JSON Schema for ValidationError at field loc. PR #3810 by @dconathan.
🐛 Fix support for prefix on APIRouter WebSockets. PR #2640 by @Kludex.
Upgrades
⬆️ Update ujson ranges for CVE-2021-45958. PR #4804 by @tiangolo.
⬆️ Upgrade dependencies upper range for extras "all". PR #4803 by @tiangolo.
⬆ Upgrade Swagger UI - swagger-ui-dist@4. This handles a security issue in Swagger UI itself where it could be possible to inject HTML into Swagger UI. Please upgrade as soon as you can, in particular if you expose your Swagger UI (/docs) publicly to non-expert users. PR #4347 by @RAlanWright.
Internal
🔧 Update sponsors, add: ExoFlare, Ines Course; remove: Dropbase, Vim.so, Calmcode; update: Striveworks, TalkPython and TestDriven.io. PR #4805 by @tiangolo.
After the dependency with yield handles the exception (or not) the exception is raised again. So that any exception handlers can catch it, or ultimately the default internal ServerErrorMiddleware.
If you depended on exceptions not being received by dependencies with yield, and receiving an exception breaks the code after yield, you can use a block with try and finally:
...that way the finally block is run regardless of any exception that might happen.
Features
The same PR #4575 from above also fixes the contextvars context for the code before and after yield. This was the main objective of that PR.
This means that now, if you set a value in a context variable before yield, the value would still be available after yield (as you would intuitively expect). And it also means that you can reset the context variable with a token afterwards.
...before this change it would raise an error when resetting the context variable, because the contextvars context was different, because of the way it was implemented.
Note: You probably don't need contextvars, and you should probably avoid using them. But they are powerful and useful in some advanced scenarios, for example, migrating from code that used Flask's g semi-global variable.
Technical Details: If you want to know more of the technical details you can check out the PR description #4575.
✨ Add docs and tests for Python 3.9 and Python 3.10. PR #3712 by @tiangolo.
You can start with Python Types Intro, it explains what changes between different Python versions, in Python 3.9 and in Python 3.10.
All the FastAPI docs are updated. Each code example in the docs that could use different syntax in Python 3.9 or Python 3.10 now has all the alternatives in tabs.
There's nothing interesting in this particular FastAPI release. It is mainly to enable/unblock the release of the next version of Pydantic that comes packed with features and improvements. 🤩
Fixes
🐛 Fix JSON Schema for dataclasses, supporting the fixes in Pydantic 1.9. PR #4272 by @PrettyWood.
Translations
🌐 Add Korean translation for docs/tutorial/request-forms-and-files.md. PR #3744 by @NinaHwang.
🌐 Add Korean translation for docs/tutorial/request-files.md. PR #3743 by @NinaHwang.
🌐 Add portuguese translation for docs/tutorial/query-params-str-validations.md. PR #3965 by @leandrodesouzadev.
🌐 Add Korean translation for docs/tutorial/response-status-code.md. PR #3742 by @NinaHwang.
🌐 Add Korean translation for Tutorial - JSON Compatible Encoder. PR #3152 by @NEONKID.
🌐 Add Korean translation for Tutorial - Path Parameters and Numeric Validations. PR #2432 by @hard-coders.
🌐 Add Korean translation for docs/ko/docs/deployment/versions.md. PR #4121 by @DevDae.
🌐 Fix Korean translation for docs/ko/docs/tutorial/index.md. PR #4193 by @kimjaeyoonn.
📝 Update docs/tutorial/dependencies/classes-as-dependencies: Add type of query parameters in a description of Classes as dependencies. PR #4015 by @0417taehyun.
🌐 Add French translation for Tutorial - First steps. PR #3455 by @Smlep.
🌐 Add French translation for docs/tutorial/path-params.md. PR #3548 by @Smlep.
🌐 Add French translation for docs/tutorial/query-params.md. PR #3556 by @Smlep.
It upgrades the version of Starlette to 0.15.0, now based on AnyIO, and the internal async components in FastAPI are now based on AnyIO as well, making it compatible with both asyncio and Trio.
This release also removes graphene as an optional dependency for GraphQL. If you need to work with GraphQL, the recommended library now is Strawberry. You can read the new FastAPI with GraphQL docs.
Features
✨ Add support for Trio via AnyIO, upgrading Starlette to 0.15.0. PR #3372 by @graingert.
➖ Remove graphene as an optional dependency. PR #4007 by @tiangolo.
Docs
📝 Add docs for using Trio with Hypercorn. PR #4014 by @tiangolo.
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [fastapi](https://github.com/fastapi/fastapi) ([changelog](https://fastapi.tiangolo.com/release-notes/)) | minor | `==0.68.2` -> `==0.112.1` |
---
### Release Notes
<details>
<summary>fastapi/fastapi (fastapi)</summary>
### [`v0.112.1`](https://github.com/fastapi/fastapi/releases/tag/0.112.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.112.0...0.112.1)
##### Upgrades
- ⬆️ Allow Starlette 0.38.x, update the pin to `>=0.37.2,<0.39.0`. PR [#​11876](https://github.com/fastapi/fastapi/pull/11876) by [@​musicinmybrain](https://github.com/musicinmybrain).
##### Docs
- 📝 Update docs section about "Don't Translate these Pages". PR [#​12022](https://github.com/fastapi/fastapi/pull/12022) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Add documentation for non-translated pages and scripts to verify them. PR [#​12020](https://github.com/fastapi/fastapi/pull/12020) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Update docs about discussions questions. PR [#​11985](https://github.com/fastapi/fastapi/pull/11985) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/bigger-applications.md`. PR [#​11971](https://github.com/fastapi/fastapi/pull/11971) by [@​marcelomarkus](https://github.com/marcelomarkus).
- 🌐 Add Portuguese translation for `docs/pt/docs/advanced/testing-websockets.md`. PR [#​11994](https://github.com/fastapi/fastapi/pull/11994) by [@​ceb10n](https://github.com/ceb10n).
- 🌐 Add Portuguese translation for `docs/pt/docs/advanced/testing-dependencies.md`. PR [#​11995](https://github.com/fastapi/fastapi/pull/11995) by [@​ceb10n](https://github.com/ceb10n).
- 🌐 Add Portuguese translation for `docs/pt/docs/advanced/using-request-directly.md`. PR [#​11956](https://github.com/fastapi/fastapi/pull/11956) by [@​ceb10n](https://github.com/ceb10n).
- 🌐 Add French translation for `docs/fr/docs/tutorial/body-multiple-params.md`. PR [#​11796](https://github.com/fastapi/fastapi/pull/11796) by [@​pe-brian](https://github.com/pe-brian).
- 🌐 Update Chinese translation for `docs/zh/docs/tutorial/query-params.md`. PR [#​11557](https://github.com/fastapi/fastapi/pull/11557) by [@​caomingpei](https://github.com/caomingpei).
- 🌐 Update typo in Chinese translation for `docs/zh/docs/advanced/testing-dependencies.md`. PR [#​11944](https://github.com/fastapi/fastapi/pull/11944) by [@​bestony](https://github.com/bestony).
- 🌐 Add Portuguese translation for `docs/pt/docs/advanced/sub-applications.md` and `docs/pt/docs/advanced/behind-a-proxy.md`. PR [#​11856](https://github.com/fastapi/fastapi/pull/11856) by [@​marcelomarkus](https://github.com/marcelomarkus).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/cors.md` and `docs/pt/docs/tutorial/middleware.md`. PR [#​11916](https://github.com/fastapi/fastapi/pull/11916) by [@​wesinalves](https://github.com/wesinalves).
- 🌐 Add French translation for `docs/fr/docs/tutorial/path-params-numeric-validations.md`. PR [#​11788](https://github.com/fastapi/fastapi/pull/11788) by [@​pe-brian](https://github.com/pe-brian).
##### Internal
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.14 to 1.9.0. PR [#​11727](https://github.com/fastapi/fastapi/pull/11727) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 🔧 Add changelog URL to `pyproject.toml`, shows in PyPI. PR [#​11152](https://github.com/fastapi/fastapi/pull/11152) by [@​Pierre-VF](https://github.com/Pierre-VF).
- 👷 Do not sync labels as it overrides manually added labels. PR [#​12024](https://github.com/fastapi/fastapi/pull/12024) by [@​tiangolo](https://github.com/tiangolo).
- 👷🏻 Update Labeler GitHub Actions. PR [#​12019](https://github.com/fastapi/fastapi/pull/12019) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update configs for MkDocs for languages and social cards. PR [#​12016](https://github.com/fastapi/fastapi/pull/12016) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update permissions and config for labeler GitHub Action. PR [#​12008](https://github.com/fastapi/fastapi/pull/12008) by [@​tiangolo](https://github.com/tiangolo).
- 👷🏻 Add GitHub Action label-checker. PR [#​12005](https://github.com/fastapi/fastapi/pull/12005) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Add label checker GitHub Action. PR [#​12004](https://github.com/fastapi/fastapi/pull/12004) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update GitHub Action add-to-project. PR [#​12002](https://github.com/fastapi/fastapi/pull/12002) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update labeler GitHub Action. PR [#​12001](https://github.com/fastapi/fastapi/pull/12001) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Add GitHub Action labeler. PR [#​12000](https://github.com/fastapi/fastapi/pull/12000) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Add GitHub Action add-to-project. PR [#​11999](https://github.com/fastapi/fastapi/pull/11999) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Update admonitions in docs missing. PR [#​11998](https://github.com/fastapi/fastapi/pull/11998) by [@​tiangolo](https://github.com/tiangolo).
- 🔨 Update docs.py script to enable dirty reload conditionally. PR [#​11986](https://github.com/fastapi/fastapi/pull/11986) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update MkDocs instant previews. PR [#​11982](https://github.com/fastapi/fastapi/pull/11982) by [@​tiangolo](https://github.com/tiangolo).
- 🐛 Fix deploy docs previews script to handle mkdocs.yml files. PR [#​11984](https://github.com/fastapi/fastapi/pull/11984) by [@​tiangolo](https://github.com/tiangolo).
- 💡 Add comment about custom Termynal line-height. PR [#​11976](https://github.com/fastapi/fastapi/pull/11976) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Add alls-green for test-redistribute. PR [#​11974](https://github.com/fastapi/fastapi/pull/11974) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update docs-previews to handle no docs changes. PR [#​11975](https://github.com/fastapi/fastapi/pull/11975) by [@​tiangolo](https://github.com/tiangolo).
- 🔨 Refactor script `deploy_docs_status.py` to account for deploy URLs with or without trailing slash. PR [#​11965](https://github.com/fastapi/fastapi/pull/11965) by [@​tiangolo](https://github.com/tiangolo).
- 🔒️ Update permissions for deploy-docs action. PR [#​11964](https://github.com/fastapi/fastapi/pull/11964) by [@​tiangolo](https://github.com/tiangolo).
- 👷🏻 Add deploy docs status and preview links to PRs. PR [#​11961](https://github.com/fastapi/fastapi/pull/11961) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update docs setup with latest configs and plugins. PR [#​11953](https://github.com/fastapi/fastapi/pull/11953) by [@​tiangolo](https://github.com/tiangolo).
- 🔇 Ignore warning from attrs in Trio. PR [#​11949](https://github.com/fastapi/fastapi/pull/11949) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.112.0`](https://github.com/fastapi/fastapi/releases/tag/0.112.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.111.1...0.112.0)
##### Breaking Changes
- ♻️ Add support for `pip install "fastapi[standard]"` with standard dependencies and `python -m fastapi`. PR [#​11935](https://github.com/fastapi/fastapi/pull/11935) by [@​tiangolo](https://github.com/tiangolo).
##### Summary
Install with:
```bash
pip install "fastapi[standard]"
```
##### Other Changes
- This adds support for calling the CLI as:
```bash
python -m fastapi
```
- And it upgrades `fastapi-cli[standard] >=0.0.5`.
##### Technical Details
Before this, `fastapi` would include the standard dependencies, with Uvicorn and the `fastapi-cli`, etc.
And `fastapi-slim` would not include those standard dependencies.
Now `fastapi` doesn't include those standard dependencies unless you install with `pip install "fastapi[standard]"`.
Before, you would install `pip install fastapi`, now you should include the `standard` optional dependencies (unless you want to exclude one of those): `pip install "fastapi[standard]"`.
This change is because having the standard optional dependencies installed by default was being inconvenient to several users, and having to install instead `fastapi-slim` was not being a feasible solution.
Discussed here: [#​11522](https://github.com/fastapi/fastapi/pull/11522) and here: [#​11525](https://github.com/fastapi/fastapi/discussions/11525)
##### Docs
- ✏️ Fix typos in docs. PR [#​11926](https://github.com/fastapi/fastapi/pull/11926) by [@​jianghuyiyuan](https://github.com/jianghuyiyuan).
- 📝 Tweak management docs. PR [#​11918](https://github.com/fastapi/fastapi/pull/11918) by [@​tiangolo](https://github.com/tiangolo).
- 🚚 Rename GitHub links from tiangolo/fastapi to fastapi/fastapi. PR [#​11913](https://github.com/fastapi/fastapi/pull/11913) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Add docs about FastAPI team and project management. PR [#​11908](https://github.com/tiangolo/fastapi/pull/11908) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Re-structure docs main menu. PR [#​11904](https://github.com/tiangolo/fastapi/pull/11904) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Update Speakeasy URL. PR [#​11871](https://github.com/tiangolo/fastapi/pull/11871) by [@​ndimares](https://github.com/ndimares).
##### Translations
- 🌐 Update Portuguese translation for `docs/pt/docs/alternatives.md`. PR [#​11931](https://github.com/fastapi/fastapi/pull/11931) by [@​ceb10n](https://github.com/ceb10n).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/dependencies/sub-dependencies.md`. PR [#​10515](https://github.com/tiangolo/fastapi/pull/10515) by [@​AlertRED](https://github.com/AlertRED).
- 🌐 Add Portuguese translation for `docs/pt/docs/advanced/response-change-status-code.md`. PR [#​11863](https://github.com/tiangolo/fastapi/pull/11863) by [@​ceb10n](https://github.com/ceb10n).
- 🌐 Add Portuguese translation for `docs/pt/docs/reference/background.md`. PR [#​11849](https://github.com/tiangolo/fastapi/pull/11849) by [@​lucasbalieiro](https://github.com/lucasbalieiro).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/dependencies/dependencies-with-yield.md`. PR [#​11848](https://github.com/tiangolo/fastapi/pull/11848) by [@​Joao-Pedro-P-Holanda](https://github.com/Joao-Pedro-P-Holanda).
- 🌐 Add Portuguese translation for `docs/pt/docs/reference/apirouter.md`. PR [#​11843](https://github.com/tiangolo/fastapi/pull/11843) by [@​lucasbalieiro](https://github.com/lucasbalieiro).
##### Internal
- 🔧 Update sponsors: add liblab. PR [#​11934](https://github.com/fastapi/fastapi/pull/11934) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update GitHub Action label-approved permissions. PR [#​11933](https://github.com/fastapi/fastapi/pull/11933) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Refactor GitHub Action to comment docs deployment URLs and update token. PR [#​11925](https://github.com/fastapi/fastapi/pull/11925) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update tokens for GitHub Actions. PR [#​11924](https://github.com/fastapi/fastapi/pull/11924) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update token permissions to comment deployment URL in docs. PR [#​11917](https://github.com/fastapi/fastapi/pull/11917) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update token permissions for GitHub Actions. PR [#​11915](https://github.com/fastapi/fastapi/pull/11915) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update GitHub Actions token usage. PR [#​11914](https://github.com/fastapi/fastapi/pull/11914) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update GitHub Action to notify translations with label `approved-1`. PR [#​11907](https://github.com/tiangolo/fastapi/pull/11907) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, remove Reflex. PR [#​11875](https://github.com/tiangolo/fastapi/pull/11875) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors: remove TalkPython. PR [#​11861](https://github.com/tiangolo/fastapi/pull/11861) by [@​tiangolo](https://github.com/tiangolo).
- 🔨 Update docs Termynal scripts to not include line nums for local dev. PR [#​11854](https://github.com/tiangolo/fastapi/pull/11854) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.111.1`](https://github.com/fastapi/fastapi/releases/tag/0.111.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.111.0...0.111.1)
##### Upgrades
- ➖ Remove `orjson` and `ujson` from default dependencies. PR [#​11842](https://github.com/tiangolo/fastapi/pull/11842) by [@​tiangolo](https://github.com/tiangolo).
- These dependencies are still installed when you install with `pip install "fastapi[all]"`. But they not included in `pip install fastapi`.
- 📝 Restored Swagger-UI links to use the latest version possible. PR [#​11459](https://github.com/tiangolo/fastapi/pull/11459) by [@​UltimateLobster](https://github.com/UltimateLobster).
##### Docs
- ✏️ Rewording in `docs/en/docs/fastapi-cli.md`. PR [#​11716](https://github.com/tiangolo/fastapi/pull/11716) by [@​alejsdev](https://github.com/alejsdev).
- 📝 Update Hypercorn links in all the docs. PR [#​11744](https://github.com/tiangolo/fastapi/pull/11744) by [@​kittydoor](https://github.com/kittydoor).
- 📝 Update docs with Ariadne reference from Starlette to FastAPI. PR [#​11797](https://github.com/tiangolo/fastapi/pull/11797) by [@​DamianCzajkowski](https://github.com/DamianCzajkowski).
- 📝 Update fastapi instrumentation external link. PR [#​11317](https://github.com/tiangolo/fastapi/pull/11317) by [@​softwarebloat](https://github.com/softwarebloat).
- ✏️ Fix links to alembic example repo in docs. PR [#​11628](https://github.com/tiangolo/fastapi/pull/11628) by [@​augiwan](https://github.com/augiwan).
- ✏️ Update `docs/en/docs/fastapi-cli.md`. PR [#​11715](https://github.com/tiangolo/fastapi/pull/11715) by [@​alejsdev](https://github.com/alejsdev).
- 📝 Update External Links . PR [#​11500](https://github.com/tiangolo/fastapi/pull/11500) by [@​devon2018](https://github.com/devon2018).
- 📝 Add External Link: Tutorial de FastAPI, ¿el mejor framework de Python?. PR [#​11618](https://github.com/tiangolo/fastapi/pull/11618) by [@​EduardoZepeda](https://github.com/EduardoZepeda).
- 📝 Fix typo in `docs/en/docs/tutorial/body-multiple-params.md`. PR [#​11698](https://github.com/tiangolo/fastapi/pull/11698) by [@​mwb-u](https://github.com/mwb-u).
- 📝 Add External Link: Deploy a Serverless FastAPI App with Neon Postgres and AWS App Runner at any scale. PR [#​11633](https://github.com/tiangolo/fastapi/pull/11633) by [@​ananis25](https://github.com/ananis25).
- 📝 Update `security/first-steps.md`. PR [#​11674](https://github.com/tiangolo/fastapi/pull/11674) by [@​alejsdev](https://github.com/alejsdev).
- 📝 Update `security/first-steps.md`. PR [#​11673](https://github.com/tiangolo/fastapi/pull/11673) by [@​alejsdev](https://github.com/alejsdev).
- 📝 Update note in `path-params-numeric-validations.md`. PR [#​11672](https://github.com/tiangolo/fastapi/pull/11672) by [@​alejsdev](https://github.com/alejsdev).
- 📝 Tweak intro docs about `Annotated` and `Query()` params. PR [#​11664](https://github.com/tiangolo/fastapi/pull/11664) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Update JWT auth documentation to use PyJWT instead of pyhon-jose. PR [#​11589](https://github.com/tiangolo/fastapi/pull/11589) by [@​estebanx64](https://github.com/estebanx64).
- 📝 Update docs. PR [#​11603](https://github.com/tiangolo/fastapi/pull/11603) by [@​alejsdev](https://github.com/alejsdev).
- ✏️ Fix typo: convert every 're-use' to 'reuse'.. PR [#​11598](https://github.com/tiangolo/fastapi/pull/11598) by [@​hasansezertasan](https://github.com/hasansezertasan).
- ✏️ Fix typo in `fastapi/applications.py`. PR [#​11593](https://github.com/tiangolo/fastapi/pull/11593) by [@​petarmaric](https://github.com/petarmaric).
- ✏️ Fix link in `fastapi-cli.md`. PR [#​11524](https://github.com/tiangolo/fastapi/pull/11524) by [@​svlandeg](https://github.com/svlandeg).
##### Translations
- 🌐 Add Spanish translation for `docs/es/docs/how-to/graphql.md`. PR [#​11697](https://github.com/tiangolo/fastapi/pull/11697) by [@​camigomezdev](https://github.com/camigomezdev).
- 🌐 Add Portuguese translation for `docs/pt/docs/reference/index.md`. PR [#​11840](https://github.com/tiangolo/fastapi/pull/11840) by [@​lucasbalieiro](https://github.com/lucasbalieiro).
- 🌐 Fix link in German translation. PR [#​11836](https://github.com/tiangolo/fastapi/pull/11836) by [@​anitahammer](https://github.com/anitahammer).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/dependencies/sub-dependencies.md`. PR [#​11792](https://github.com/tiangolo/fastapi/pull/11792) by [@​Joao-Pedro-P-Holanda](https://github.com/Joao-Pedro-P-Holanda).
- 🌐 Add Turkish translation for `docs/tr/docs/tutorial/request-forms.md`. PR [#​11553](https://github.com/tiangolo/fastapi/pull/11553) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Portuguese translation for `docs/pt/docs/reference/exceptions.md`. PR [#​11834](https://github.com/tiangolo/fastapi/pull/11834) by [@​lucasbalieiro](https://github.com/lucasbalieiro).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/dependencies/global-dependencies.md`. PR [#​11826](https://github.com/tiangolo/fastapi/pull/11826) by [@​Joao-Pedro-P-Holanda](https://github.com/Joao-Pedro-P-Holanda).
- 🌐 Add Portuguese translation for `docs/pt/docs/how-to/general.md`. PR [#​11825](https://github.com/tiangolo/fastapi/pull/11825) by [@​lucasbalieiro](https://github.com/lucasbalieiro).
- 🌐 Add Portuguese translation for `docs/pt/docs/advanced/async-tests.md`. PR [#​11808](https://github.com/tiangolo/fastapi/pull/11808) by [@​ceb10n](https://github.com/ceb10n).
- 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/first-steps.md`. PR [#​11809](https://github.com/tiangolo/fastapi/pull/11809) by [@​vkhoroshchak](https://github.com/vkhoroshchak).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/dependencies/dependencies-in-path-operation-operators.md`. PR [#​11804](https://github.com/tiangolo/fastapi/pull/11804) by [@​Joao-Pedro-P-Holanda](https://github.com/Joao-Pedro-P-Holanda).
- 🌐 Add Chinese translation for `docs/zh/docs/fastapi-cli.md`. PR [#​11786](https://github.com/tiangolo/fastapi/pull/11786) by [@​logan2d5](https://github.com/logan2d5).
- 🌐 Add Portuguese translation for `docs/pt/docs/advanced/openapi-webhooks.md`. PR [#​11791](https://github.com/tiangolo/fastapi/pull/11791) by [@​ceb10n](https://github.com/ceb10n).
- 🌐 Update Chinese translation for `docs/tutorial/security/oauth2-jwt.md`. PR [#​11781](https://github.com/tiangolo/fastapi/pull/11781) by [@​logan2d5](https://github.com/logan2d5).
- 📝 Fix image missing in French translation for `docs/fr/docs/async.md` . PR [#​11787](https://github.com/tiangolo/fastapi/pull/11787) by [@​pe-brian](https://github.com/pe-brian).
- 🌐 Add Portuguese translation for `docs/pt/docs/advanced/advanced-dependencies.md`. PR [#​11775](https://github.com/tiangolo/fastapi/pull/11775) by [@​ceb10n](https://github.com/ceb10n).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/dependencies/classes-as-dependencies.md`. PR [#​11768](https://github.com/tiangolo/fastapi/pull/11768) by [@​Joao-Pedro-P-Holanda](https://github.com/Joao-Pedro-P-Holanda).
- 🌐 Add Portuguese translation for `docs/pt/docs/advanced/additional-status-codes.md`. PR [#​11753](https://github.com/tiangolo/fastapi/pull/11753) by [@​ceb10n](https://github.com/ceb10n).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/dependencies/index.md`. PR [#​11757](https://github.com/tiangolo/fastapi/pull/11757) by [@​Joao-Pedro-P-Holanda](https://github.com/Joao-Pedro-P-Holanda).
- 🌐 Add Portuguese translation for `docs/pt/docs/advanced/settings.md`. PR [#​11739](https://github.com/tiangolo/fastapi/pull/11739) by [@​Joao-Pedro-P-Holanda](https://github.com/Joao-Pedro-P-Holanda).
- 🌐 Add French translation for `docs/fr/docs/learn/index.md`. PR [#​11712](https://github.com/tiangolo/fastapi/pull/11712) by [@​benjaminvandammeholberton](https://github.com/benjaminvandammeholberton).
- 🌐 Add Portuguese translation for `docs/pt/docs/how-to/index.md`. PR [#​11731](https://github.com/tiangolo/fastapi/pull/11731) by [@​vhsenna](https://github.com/vhsenna).
- 🌐 Add Portuguese translation for `docs/pt/docs/advanced/additional-responses.md`. PR [#​11736](https://github.com/tiangolo/fastapi/pull/11736) by [@​ceb10n](https://github.com/ceb10n).
- 🌐 Add Portuguese translation for `docs/pt/docs/advanced/benchmarks.md`. PR [#​11713](https://github.com/tiangolo/fastapi/pull/11713) by [@​ceb10n](https://github.com/ceb10n).
- 🌐 Fix Korean translation for `docs/ko/docs/tutorial/response-status-code.md`. PR [#​11718](https://github.com/tiangolo/fastapi/pull/11718) by [@​nayeonkinn](https://github.com/nayeonkinn).
- 🌐 Add Korean translation for `docs/ko/docs/tutorial/extra-data-types.md`. PR [#​11711](https://github.com/tiangolo/fastapi/pull/11711) by [@​nayeonkinn](https://github.com/nayeonkinn).
- 🌐 Fix Korean translation for `docs/ko/docs/tutorial/body-nested-models.md`. PR [#​11710](https://github.com/tiangolo/fastapi/pull/11710) by [@​nayeonkinn](https://github.com/nayeonkinn).
- 🌐 Add Portuguese translation for `docs/pt/docs/advanced/fastapi-cli.md`. PR [#​11641](https://github.com/tiangolo/fastapi/pull/11641) by [@​ayr-ton](https://github.com/ayr-ton).
- 🌐 Add Traditional Chinese translation for `docs/zh-hant/docs/fastapi-people.md`. PR [#​11639](https://github.com/tiangolo/fastapi/pull/11639) by [@​hsuanchi](https://github.com/hsuanchi).
- 🌐 Add Turkish translation for `docs/tr/docs/advanced/index.md`. PR [#​11606](https://github.com/tiangolo/fastapi/pull/11606) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Turkish translation for `docs/tr/docs/deployment/cloud.md`. PR [#​11610](https://github.com/tiangolo/fastapi/pull/11610) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Turkish translation for `docs/tr/docs/advanced/security/index.md`. PR [#​11609](https://github.com/tiangolo/fastapi/pull/11609) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Turkish translation for `docs/tr/docs/advanced/testing-websockets.md`. PR [#​11608](https://github.com/tiangolo/fastapi/pull/11608) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Turkish translation for `docs/tr/docs/how-to/general.md`. PR [#​11607](https://github.com/tiangolo/fastapi/pull/11607) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Update Chinese translation for `docs/zh/docs/advanced/templates.md`. PR [#​11620](https://github.com/tiangolo/fastapi/pull/11620) by [@​chaoless](https://github.com/chaoless).
- 🌐 Add Turkish translation for `docs/tr/docs/deployment/index.md`. PR [#​11605](https://github.com/tiangolo/fastapi/pull/11605) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Turkish translation for `docs/tr/docs/tutorial/static-files.md`. PR [#​11599](https://github.com/tiangolo/fastapi/pull/11599) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Polish translation for `docs/pl/docs/fastapi-people.md`. PR [#​10196](https://github.com/tiangolo/fastapi/pull/10196) by [@​isulim](https://github.com/isulim).
- 🌐 Add Turkish translation for `docs/tr/docs/advanced/wsgi.md`. PR [#​11575](https://github.com/tiangolo/fastapi/pull/11575) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Turkish translation for `docs/tr/docs/tutorial/cookie-params.md`. PR [#​11561](https://github.com/tiangolo/fastapi/pull/11561) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Russian translation for `docs/ru/docs/about/index.md`. PR [#​10961](https://github.com/tiangolo/fastapi/pull/10961) by [@​s111d](https://github.com/s111d).
- 🌐 Update Chinese translation for `docs/zh/docs/tutorial/sql-databases.md`. PR [#​11539](https://github.com/tiangolo/fastapi/pull/11539) by [@​chaoless](https://github.com/chaoless).
- 🌐 Add Chinese translation for `docs/zh/docs/how-to/configure-swagger-ui.md`. PR [#​11501](https://github.com/tiangolo/fastapi/pull/11501) by [@​Lucas-lyh](https://github.com/Lucas-lyh).
- 🌐 Update Chinese translation for `/docs/advanced/security/http-basic-auth.md`. PR [#​11512](https://github.com/tiangolo/fastapi/pull/11512) by [@​nick-cjyx9](https://github.com/nick-cjyx9).
##### Internal
- ♻️ Simplify internal docs script. PR [#​11777](https://github.com/tiangolo/fastapi/pull/11777) by [@​gitworkflows](https://github.com/gitworkflows).
- 🔧 Update sponsors: add Fine. PR [#​11784](https://github.com/tiangolo/fastapi/pull/11784) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Tweak sponsors: Kong URL. PR [#​11765](https://github.com/tiangolo/fastapi/pull/11765) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Tweak sponsors: Kong URL. PR [#​11764](https://github.com/tiangolo/fastapi/pull/11764) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, add Stainless. PR [#​11763](https://github.com/tiangolo/fastapi/pull/11763) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, add Zuplo. PR [#​11729](https://github.com/tiangolo/fastapi/pull/11729) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update Sponsor link: Coherence. PR [#​11730](https://github.com/tiangolo/fastapi/pull/11730) by [@​tiangolo](https://github.com/tiangolo).
- 👥 Update FastAPI People. PR [#​11669](https://github.com/tiangolo/fastapi/pull/11669) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Add sponsor Kong. PR [#​11662](https://github.com/tiangolo/fastapi/pull/11662) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update Smokeshow, fix sync download artifact and smokeshow configs. PR [#​11563](https://github.com/tiangolo/fastapi/pull/11563) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update Smokeshow download artifact GitHub Action. PR [#​11562](https://github.com/tiangolo/fastapi/pull/11562) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update GitHub actions to download and upload artifacts to v4, for docs and coverage. PR [#​11550](https://github.com/tiangolo/fastapi/pull/11550) by [@​tamird](https://github.com/tamird).
- 👷 Tweak CI for test-redistribute, add needed env vars for slim. PR [#​11549](https://github.com/tiangolo/fastapi/pull/11549) by [@​tiangolo](https://github.com/tiangolo).
- 👥 Update FastAPI People. PR [#​11511](https://github.com/tiangolo/fastapi/pull/11511) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.111.0`](https://github.com/fastapi/fastapi/releases/tag/0.111.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.110.3...0.111.0)
##### Features
- ✨ Add FastAPI CLI, the new `fastapi` command. PR [#​11522](https://github.com/tiangolo/fastapi/pull/11522) by [@​tiangolo](https://github.com/tiangolo).
- New docs: [FastAPI CLI](https://fastapi.tiangolo.com/fastapi-cli/).
Try it out with:
```console
$ pip install --upgrade fastapi
$ fastapi dev main.py
╭────────── FastAPI CLI - Development mode ───────────╮
│ │
│ Serving at: http://127.0.0.1:8000 │
│ │
│ API docs: http://127.0.0.1:8000/docs │
│ │
│ Running in development mode, for production use: │
│ │
│ fastapi run │
│ │
╰─────────────────────────────────────────────────────╯
INFO: Will watch for changes in these directories: ['/home/user/code/awesomeapp']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [2248755] using WatchFiles
INFO: Started server process [2248757]
INFO: Waiting for application startup.
INFO: Application startup complete.
```
##### Refactors
- 🔧 Add configs and setup for `fastapi-slim` including optional extras `fastapi-slim[standard]`, and `fastapi` including by default the same `standard` extras. PR [#​11503](https://github.com/tiangolo/fastapi/pull/11503) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.110.3`](https://github.com/fastapi/fastapi/releases/tag/0.110.3)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.110.2...0.110.3)
#### Latest Changes
##### Docs
- 📝 Update references to Python version, FastAPI supports all the current versions, no need to make the version explicit. PR [#​11496](https://github.com/tiangolo/fastapi/pull/11496) by [@​tiangolo](https://github.com/tiangolo).
- ✏️ Fix typo in `fastapi/security/api_key.py`. PR [#​11481](https://github.com/tiangolo/fastapi/pull/11481) by [@​ch33zer](https://github.com/ch33zer).
- ✏️ Fix typo in `security/http.py`. PR [#​11455](https://github.com/tiangolo/fastapi/pull/11455) by [@​omarmoo5](https://github.com/omarmoo5).
##### Translations
- 🌐 Add Traditional Chinese translation for `docs/zh-hant/benchmarks.md`. PR [#​11484](https://github.com/tiangolo/fastapi/pull/11484) by [@​KNChiu](https://github.com/KNChiu).
- 🌐 Update Chinese translation for `docs/zh/docs/fastapi-people.md`. PR [#​11476](https://github.com/tiangolo/fastapi/pull/11476) by [@​billzhong](https://github.com/billzhong).
- 🌐 Add Chinese translation for `docs/zh/docs/how-to/index.md` and `docs/zh/docs/how-to/general.md`. PR [#​11443](https://github.com/tiangolo/fastapi/pull/11443) by [@​billzhong](https://github.com/billzhong).
- 🌐 Add Spanish translation for cookie-params `docs/es/docs/tutorial/cookie-params.md`. PR [#​11410](https://github.com/tiangolo/fastapi/pull/11410) by [@​fabianfalon](https://github.com/fabianfalon).
##### Internal
- ⬆ Bump mkdocstrings\[python] from 0.23.0 to 0.24.3. PR [#​11469](https://github.com/tiangolo/fastapi/pull/11469) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 🔨 Update internal scripts and remove unused ones. PR [#​11499](https://github.com/tiangolo/fastapi/pull/11499) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Migrate from Hatch to PDM for the internal build. PR [#​11498](https://github.com/tiangolo/fastapi/pull/11498) by [@​tiangolo](https://github.com/tiangolo).
- ⬆️ Upgrade MkDocs Material and re-enable cards. PR [#​11466](https://github.com/tiangolo/fastapi/pull/11466) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Bump pillow from 10.2.0 to 10.3.0. PR [#​11403](https://github.com/tiangolo/fastapi/pull/11403) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 🔧 Ungroup dependabot updates. PR [#​11465](https://github.com/tiangolo/fastapi/pull/11465) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.110.2`](https://github.com/fastapi/fastapi/releases/tag/0.110.2)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.110.1...0.110.2)
##### Fixes
- 🐛 Fix support for query parameters with list types, handle JSON encoding Pydantic `UndefinedType`. PR [#​9929](https://github.com/tiangolo/fastapi/pull/9929) by [@​arjwilliams](https://github.com/arjwilliams).
##### Refactors
- ♻️ Simplify Pydantic configs in OpenAPI models in `fastapi/openapi/models.py`. PR [#​10886](https://github.com/tiangolo/fastapi/pull/10886) by [@​JoeTanto2](https://github.com/JoeTanto2).
- ✨ Add support for Pydantic's 2.7 new deprecated Field parameter, remove URL from validation errors response. PR [#​11461](https://github.com/tiangolo/fastapi/pull/11461) by [@​tiangolo](https://github.com/tiangolo).
##### Docs
- 📝 Fix types in examples under `docs_src/extra_data_types`. PR [#​10535](https://github.com/tiangolo/fastapi/pull/10535) by [@​nilslindemann](https://github.com/nilslindemann).
- 📝 Update references to UJSON. PR [#​11464](https://github.com/tiangolo/fastapi/pull/11464) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Tweak docs and translations links, typos, format. PR [#​11389](https://github.com/tiangolo/fastapi/pull/11389) by [@​nilslindemann](https://github.com/nilslindemann).
- 📝 Fix typo in `docs/es/docs/async.md`. PR [#​11400](https://github.com/tiangolo/fastapi/pull/11400) by [@​fabianfalon](https://github.com/fabianfalon).
- 📝 Update OpenAPI client generation docs to use `@hey-api/openapi-ts`. PR [#​11339](https://github.com/tiangolo/fastapi/pull/11339) by [@​jordanshatford](https://github.com/jordanshatford).
##### Translations
- 🌐 Update Chinese translation for `docs/zh/docs/index.html`. PR [#​11430](https://github.com/tiangolo/fastapi/pull/11430) by [@​waketzheng](https://github.com/waketzheng).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md`. PR [#​11411](https://github.com/tiangolo/fastapi/pull/11411) by [@​anton2yakovlev](https://github.com/anton2yakovlev).
- 🌐 Add Portuguese translations for `learn/index.md` `resources/index.md` `help/index.md` `about/index.md`. PR [#​10807](https://github.com/tiangolo/fastapi/pull/10807) by [@​nazarepiedady](https://github.com/nazarepiedady).
- 🌐 Update Russian translations for deployments docs. PR [#​11271](https://github.com/tiangolo/fastapi/pull/11271) by [@​Lufa1u](https://github.com/Lufa1u).
- 🌐 Add Bengali translations for `docs/bn/docs/python-types.md`. PR [#​11376](https://github.com/tiangolo/fastapi/pull/11376) by [@​imtiaz101325](https://github.com/imtiaz101325).
- 🌐 Add Korean translation for `docs/ko/docs/tutorial/security/simple-oauth2.md`. PR [#​5744](https://github.com/tiangolo/fastapi/pull/5744) by [@​KdHyeon0661](https://github.com/KdHyeon0661).
- 🌐 Add Korean translation for `docs/ko/docs/help-fastapi.md`. PR [#​4139](https://github.com/tiangolo/fastapi/pull/4139) by [@​kty4119](https://github.com/kty4119).
- 🌐 Add Korean translation for `docs/ko/docs/advanced/events.md`. PR [#​5087](https://github.com/tiangolo/fastapi/pull/5087) by [@​pers0n4](https://github.com/pers0n4).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/path-operation-configuration.md`. PR [#​1954](https://github.com/tiangolo/fastapi/pull/1954) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/request-forms-and-files.md`. PR [#​1946](https://github.com/tiangolo/fastapi/pull/1946) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/dependencies/dependencies-with-yield.md`. PR [#​10532](https://github.com/tiangolo/fastapi/pull/10532) by [@​AlertRED](https://github.com/AlertRED).
- 🌐 Add Korean translation for `docs/ko/docs/tutorial/debugging.md`. PR [#​5695](https://github.com/tiangolo/fastapi/pull/5695) by [@​JungWooGeon](https://github.com/JungWooGeon).
##### Internal
- ⬆️ Upgrade version of typer for docs. PR [#​11393](https://github.com/tiangolo/fastapi/pull/11393) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.110.1`](https://github.com/fastapi/fastapi/releases/tag/0.110.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.110.0...0.110.1)
##### Fixes
- 🐛 Fix parameterless `Depends()` with generics. PR [#​9479](https://github.com/tiangolo/fastapi/pull/9479) by [@​nzig](https://github.com/nzig).
##### Refactors
- ♻️ Update mypy. PR [#​11049](https://github.com/tiangolo/fastapi/pull/11049) by [@​k0t3n](https://github.com/k0t3n).
- ♻️ Simplify string format with f-strings in `fastapi/applications.py`. PR [#​11335](https://github.com/tiangolo/fastapi/pull/11335) by [@​igeni](https://github.com/igeni).
##### Upgrades
- ⬆️ Upgrade Starlette to >=0.37.2,<0.38.0, remove Starlette filterwarning for internal tests. PR [#​11266](https://github.com/tiangolo/fastapi/pull/11266) by [@​nothielf](https://github.com/nothielf).
##### Docs
- 📝 Tweak docs and translations links and remove old docs translations. PR [#​11381](https://github.com/tiangolo/fastapi/pull/11381) by [@​tiangolo](https://github.com/tiangolo).
- ✏️ Fix typo in `fastapi/security/oauth2.py`. PR [#​11368](https://github.com/tiangolo/fastapi/pull/11368) by [@​shandongbinzhou](https://github.com/shandongbinzhou).
- 📝 Update links to Pydantic docs to point to new website. PR [#​11328](https://github.com/tiangolo/fastapi/pull/11328) by [@​alejsdev](https://github.com/alejsdev).
- ✏️ Fix typo in `docs/en/docs/tutorial/extra-models.md`. PR [#​11329](https://github.com/tiangolo/fastapi/pull/11329) by [@​alejsdev](https://github.com/alejsdev).
- 📝 Update `project-generation.md`. PR [#​11326](https://github.com/tiangolo/fastapi/pull/11326) by [@​alejsdev](https://github.com/alejsdev).
- 📝 Update External Links. PR [#​11327](https://github.com/tiangolo/fastapi/pull/11327) by [@​alejsdev](https://github.com/alejsdev).
- 🔥 Remove link to Pydantic's benchmark, on other i18n pages.. PR [#​11224](https://github.com/tiangolo/fastapi/pull/11224) by [@​hirotoKirimaru](https://github.com/hirotoKirimaru).
- ✏️ Fix typos in docstrings. PR [#​11295](https://github.com/tiangolo/fastapi/pull/11295) by [@​davidhuser](https://github.com/davidhuser).
- 🛠️ Improve Node.js script in docs to generate TypeScript clients. PR [#​11293](https://github.com/tiangolo/fastapi/pull/11293) by [@​alejsdev](https://github.com/alejsdev).
- 📝 Update examples for tests to replace "inexistent" for "nonexistent". PR [#​11220](https://github.com/tiangolo/fastapi/pull/11220) by [@​Homesteady](https://github.com/Homesteady).
- 📝 Update `python-multipart` GitHub link in all docs from `https://andrew-d.github.io/python-multipart/` to `https://github.com/Kludex/python-multipart`. PR [#​11239](https://github.com/tiangolo/fastapi/pull/11239) by [@​joshjhans](https://github.com/joshjhans).
##### Translations
- 🌐 Add German translation for `docs/de/docs/tutorial/response-status-code.md`. PR [#​10357](https://github.com/tiangolo/fastapi/pull/10357) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Update Chinese translation for `docs/zh/docs/tutorial/query-params.md`. PR [#​3480](https://github.com/tiangolo/fastapi/pull/3480) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Update Chinese translation for `docs/zh/docs/tutorial/body.md`. PR [#​3481](https://github.com/tiangolo/fastapi/pull/3481) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Update Chinese translation for `docs/zh/docs/tutorial/path-params.md`. PR [#​3479](https://github.com/tiangolo/fastapi/pull/3479) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Update Chinese translation for `docs/tutorial/body-fields.md`. PR [#​3496](https://github.com/tiangolo/fastapi/pull/3496) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Update Chinese translation for `docs/tutorial/extra-models.md`. PR [#​3497](https://github.com/tiangolo/fastapi/pull/3497) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/metadata.md`. PR [#​2667](https://github.com/tiangolo/fastapi/pull/2667) by [@​tokusumi](https://github.com/tokusumi).
- 🌐 Add German translation for `docs/de/docs/contributing.md`. PR [#​10487](https://github.com/tiangolo/fastapi/pull/10487) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Update Japanese translation of `docs/ja/docs/tutorial/query-params.md`. PR [#​10808](https://github.com/tiangolo/fastapi/pull/10808) by [@​urushio](https://github.com/urushio).
- 🌐 Update Chinese translation for `docs/zh/docs/tutorial/security/get-current-user.md`. PR [#​3842](https://github.com/tiangolo/fastapi/pull/3842) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/openapi-callbacks.md`. PR [#​3825](https://github.com/tiangolo/fastapi/pull/3825) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/extending-openapi.md`. PR [#​3823](https://github.com/tiangolo/fastapi/pull/3823) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/testing-dependencies.md`. PR [#​3819](https://github.com/tiangolo/fastapi/pull/3819) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/custom-request-and-route.md`. PR [#​3816](https://github.com/tiangolo/fastapi/pull/3816) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/external-links.md`. PR [#​3833](https://github.com/tiangolo/fastapi/pull/3833) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/templates.md`. PR [#​3812](https://github.com/tiangolo/fastapi/pull/3812) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/sub-applications.md`. PR [#​3811](https://github.com/tiangolo/fastapi/pull/3811) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/async-sql-databases.md`. PR [#​3805](https://github.com/tiangolo/fastapi/pull/3805) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/middleware.md`. PR [#​3804](https://github.com/tiangolo/fastapi/pull/3804) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/dataclasses.md`. PR [#​3803](https://github.com/tiangolo/fastapi/pull/3803) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/using-request-directly.md`. PR [#​3802](https://github.com/tiangolo/fastapi/pull/3802) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/security/http-basic-auth.md`. PR [#​3801](https://github.com/tiangolo/fastapi/pull/3801) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/security/oauth2-scopes.md`. PR [#​3800](https://github.com/tiangolo/fastapi/pull/3800) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Update Chinese translation for `docs/zh/docs/tutorial/cookie-params.md`. PR [#​3486](https://github.com/tiangolo/fastapi/pull/3486) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Update Chinese translation for `docs/zh/docs/tutorial/header-params.md`. PR [#​3487](https://github.com/tiangolo/fastapi/pull/3487) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Update Chinese translation for `docs/tutorial/response-status-code.md`. PR [#​3498](https://github.com/tiangolo/fastapi/pull/3498) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add German translation for `docs/de/docs/tutorial/security/first-steps.md`. PR [#​10432](https://github.com/tiangolo/fastapi/pull/10432) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/events.md`. PR [#​10693](https://github.com/tiangolo/fastapi/pull/10693) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/deployment/cloud.md`. PR [#​10746](https://github.com/tiangolo/fastapi/pull/10746) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/behind-a-proxy.md`. PR [#​10675](https://github.com/tiangolo/fastapi/pull/10675) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/help-fastapi.md`. PR [#​10455](https://github.com/tiangolo/fastapi/pull/10455) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Update German translation for `docs/de/docs/python-types.md`. PR [#​10287](https://github.com/tiangolo/fastapi/pull/10287) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/path-params.md`. PR [#​10290](https://github.com/tiangolo/fastapi/pull/10290) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/handling-errors.md`. PR [#​10379](https://github.com/tiangolo/fastapi/pull/10379) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Update German translation for `docs/de/docs/index.md`. PR [#​10283](https://github.com/tiangolo/fastapi/pull/10283) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/security/http-basic-auth.md`. PR [#​10651](https://github.com/tiangolo/fastapi/pull/10651) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/bigger-applications.md`. PR [#​10554](https://github.com/tiangolo/fastapi/pull/10554) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/path-operation-advanced-configuration.md`. PR [#​10612](https://github.com/tiangolo/fastapi/pull/10612) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/static-files.md`. PR [#​10584](https://github.com/tiangolo/fastapi/pull/10584) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/security/oauth2-jwt.md`. PR [#​10522](https://github.com/tiangolo/fastapi/pull/10522) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/response-model.md`. PR [#​10345](https://github.com/tiangolo/fastapi/pull/10345) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/extra-models.md`. PR [#​10351](https://github.com/tiangolo/fastapi/pull/10351) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/body-updates.md`. PR [#​10396](https://github.com/tiangolo/fastapi/pull/10396) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/alternatives.md`. PR [#​10855](https://github.com/tiangolo/fastapi/pull/10855) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/templates.md`. PR [#​10678](https://github.com/tiangolo/fastapi/pull/10678) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/security/oauth2-scopes.md`. PR [#​10643](https://github.com/tiangolo/fastapi/pull/10643) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/async-tests.md`. PR [#​10708](https://github.com/tiangolo/fastapi/pull/10708) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/metadata.md`. PR [#​10581](https://github.com/tiangolo/fastapi/pull/10581) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/testing.md`. PR [#​10586](https://github.com/tiangolo/fastapi/pull/10586) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/schema-extra-example.md`. PR [#​10597](https://github.com/tiangolo/fastapi/pull/10597) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/index.md`. PR [#​10611](https://github.com/tiangolo/fastapi/pull/10611) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/response-directly.md`. PR [#​10618](https://github.com/tiangolo/fastapi/pull/10618) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/additional-responses.md`. PR [#​10626](https://github.com/tiangolo/fastapi/pull/10626) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/response-cookies.md`. PR [#​10627](https://github.com/tiangolo/fastapi/pull/10627) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/response-headers.md`. PR [#​10628](https://github.com/tiangolo/fastapi/pull/10628) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/response-change-status-code.md`. PR [#​10632](https://github.com/tiangolo/fastapi/pull/10632) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/advanced-dependencies.md`. PR [#​10633](https://github.com/tiangolo/fastapi/pull/10633) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/security/index.md`. PR [#​10635](https://github.com/tiangolo/fastapi/pull/10635) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/using-request-directly.md`. PR [#​10653](https://github.com/tiangolo/fastapi/pull/10653) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/dataclasses.md`. PR [#​10667](https://github.com/tiangolo/fastapi/pull/10667) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/middleware.md`. PR [#​10668](https://github.com/tiangolo/fastapi/pull/10668) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/sub-applications.md`. PR [#​10671](https://github.com/tiangolo/fastapi/pull/10671) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/websockets.md`. PR [#​10687](https://github.com/tiangolo/fastapi/pull/10687) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/testing-websockets.md`. PR [#​10703](https://github.com/tiangolo/fastapi/pull/10703) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/testing-events.md`. PR [#​10704](https://github.com/tiangolo/fastapi/pull/10704) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/testing-dependencies.md`. PR [#​10706](https://github.com/tiangolo/fastapi/pull/10706) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/openapi-callbacks.md`. PR [#​10710](https://github.com/tiangolo/fastapi/pull/10710) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/settings.md`. PR [#​10709](https://github.com/tiangolo/fastapi/pull/10709) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/wsgi.md`. PR [#​10713](https://github.com/tiangolo/fastapi/pull/10713) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/deployment/index.md`. PR [#​10733](https://github.com/tiangolo/fastapi/pull/10733) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/deployment/https.md`. PR [#​10737](https://github.com/tiangolo/fastapi/pull/10737) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/deployment/manually.md`. PR [#​10738](https://github.com/tiangolo/fastapi/pull/10738) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/deployment/concepts.md`. PR [#​10744](https://github.com/tiangolo/fastapi/pull/10744) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Update German translation for `docs/de/docs/features.md`. PR [#​10284](https://github.com/tiangolo/fastapi/pull/10284) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/deployment/server-workers.md`. PR [#​10747](https://github.com/tiangolo/fastapi/pull/10747) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/deployment/docker.md`. PR [#​10759](https://github.com/tiangolo/fastapi/pull/10759) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/how-to/index.md`. PR [#​10769](https://github.com/tiangolo/fastapi/pull/10769) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/how-to/general.md`. PR [#​10770](https://github.com/tiangolo/fastapi/pull/10770) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/how-to/graphql.md`. PR [#​10788](https://github.com/tiangolo/fastapi/pull/10788) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/how-to/custom-request-and-route.md`. PR [#​10789](https://github.com/tiangolo/fastapi/pull/10789) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/how-to/conditional-openapi.md`. PR [#​10790](https://github.com/tiangolo/fastapi/pull/10790) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/how-to/separate-openapi-schemas.md`. PR [#​10796](https://github.com/tiangolo/fastapi/pull/10796) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/how-to/configure-swagger-ui.md`. PR [#​10804](https://github.com/tiangolo/fastapi/pull/10804) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/how-to/custom-docs-ui-assets.md`. PR [#​10803](https://github.com/tiangolo/fastapi/pull/10803) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/parameters.md`. PR [#​10814](https://github.com/tiangolo/fastapi/pull/10814) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/status.md`. PR [#​10815](https://github.com/tiangolo/fastapi/pull/10815) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/uploadfile.md`. PR [#​10816](https://github.com/tiangolo/fastapi/pull/10816) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/exceptions.md`. PR [#​10817](https://github.com/tiangolo/fastapi/pull/10817) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/dependencies.md`. PR [#​10818](https://github.com/tiangolo/fastapi/pull/10818) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/apirouter.md`. PR [#​10819](https://github.com/tiangolo/fastapi/pull/10819) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/websockets.md`. PR [#​10822](https://github.com/tiangolo/fastapi/pull/10822) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/httpconnection.md`. PR [#​10823](https://github.com/tiangolo/fastapi/pull/10823) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/response.md`. PR [#​10824](https://github.com/tiangolo/fastapi/pull/10824) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/middleware.md`. PR [#​10837](https://github.com/tiangolo/fastapi/pull/10837) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/openapi/*.md`. PR [#​10838](https://github.com/tiangolo/fastapi/pull/10838) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/security/index.md`. PR [#​10839](https://github.com/tiangolo/fastapi/pull/10839) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/staticfiles.md`. PR [#​10841](https://github.com/tiangolo/fastapi/pull/10841) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/testclient.md`. PR [#​10843](https://github.com/tiangolo/fastapi/pull/10843) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/project-generation.md`. PR [#​10851](https://github.com/tiangolo/fastapi/pull/10851) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/history-design-future.md`. PR [#​10865](https://github.com/tiangolo/fastapi/pull/10865) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/dependencies/dependencies-with-yield.md`. PR [#​10422](https://github.com/tiangolo/fastapi/pull/10422) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/dependencies/global-dependencies.md`. PR [#​10420](https://github.com/tiangolo/fastapi/pull/10420) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Update German translation for `docs/de/docs/fastapi-people.md`. PR [#​10285](https://github.com/tiangolo/fastapi/pull/10285) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/dependencies/sub-dependencies.md`. PR [#​10409](https://github.com/tiangolo/fastapi/pull/10409) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/security/index.md`. PR [#​10429](https://github.com/tiangolo/fastapi/pull/10429) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md`. PR [#​10411](https://github.com/tiangolo/fastapi/pull/10411) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/extra-data-types.md`. PR [#​10534](https://github.com/tiangolo/fastapi/pull/10534) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/security/simple-oauth2.md`. PR [#​10504](https://github.com/tiangolo/fastapi/pull/10504) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/security/get-current-user.md`. PR [#​10439](https://github.com/tiangolo/fastapi/pull/10439) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/request-forms-and-files.md`. PR [#​10368](https://github.com/tiangolo/fastapi/pull/10368) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/encoder.md`. PR [#​10385](https://github.com/tiangolo/fastapi/pull/10385) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/request-forms.md`. PR [#​10361](https://github.com/tiangolo/fastapi/pull/10361) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/deployment/versions.md`. PR [#​10491](https://github.com/tiangolo/fastapi/pull/10491) by [@​nilslindemann](https://github.com/nilslindemann).
- ���� Add German translation for `docs/de/docs/async.md`. PR [#​10449](https://github.com/tiangolo/fastapi/pull/10449) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/cookie-params.md`. PR [#​10323](https://github.com/tiangolo/fastapi/pull/10323) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/dependencies/classes-as-dependencies.md`. PR [#​10407](https://github.com/tiangolo/fastapi/pull/10407) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/dependencies/index.md`. PR [#​10399](https://github.com/tiangolo/fastapi/pull/10399) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/header-params.md`. PR [#​10326](https://github.com/tiangolo/fastapi/pull/10326) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/path-params-numeric-validations.md`. PR [#​10307](https://github.com/tiangolo/fastapi/pull/10307) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/query-params-str-validations.md`. PR [#​10304](https://github.com/tiangolo/fastapi/pull/10304) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/request-files.md`. PR [#​10364](https://github.com/tiangolo/fastapi/pull/10364) by [@​nilslindemann](https://github.com/nilslindemann).
- :globe_with_meridians: Add Portuguese translation for `docs/pt/docs/advanced/templates.md`. PR [#​11338](https://github.com/tiangolo/fastapi/pull/11338) by [@​SamuelBFavarin](https://github.com/SamuelBFavarin).
- 🌐 Add Bengali translations for `docs/bn/docs/learn/index.md`. PR [#​11337](https://github.com/tiangolo/fastapi/pull/11337) by [@​imtiaz101325](https://github.com/imtiaz101325).
- 🌐 Fix Korean translation for `docs/ko/docs/index.md`. PR [#​11296](https://github.com/tiangolo/fastapi/pull/11296) by [@​choi-haram](https://github.com/choi-haram).
- 🌐 Add Korean translation for `docs/ko/docs/about/index.md`. PR [#​11299](https://github.com/tiangolo/fastapi/pull/11299) by [@​choi-haram](https://github.com/choi-haram).
- 🌐 Add Korean translation for `docs/ko/docs/advanced/index.md`. PR [#​9613](https://github.com/tiangolo/fastapi/pull/9613) by [@​ElliottLarsen](https://github.com/ElliottLarsen).
- 🌐 Add German translation for `docs/de/docs/how-to/extending-openapi.md`. PR [#​10794](https://github.com/tiangolo/fastapi/pull/10794) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Update Chinese translation for `docs/zh/docs/tutorial/metadata.md`. PR [#​11286](https://github.com/tiangolo/fastapi/pull/11286) by [@​jackleeio](https://github.com/jackleeio).
- 🌐 Update Chinese translation for `docs/zh/docs/contributing.md`. PR [#​10887](https://github.com/tiangolo/fastapi/pull/10887) by [@​Aruelius](https://github.com/Aruelius).
- 🌐 Add Azerbaijani translation for `docs/az/docs/fastapi-people.md`. PR [#​11195](https://github.com/tiangolo/fastapi/pull/11195) by [@​vusallyv](https://github.com/vusallyv).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/dependencies/index.md`. PR [#​11223](https://github.com/tiangolo/fastapi/pull/11223) by [@​kohiry](https://github.com/kohiry).
- 🌐 Update Chinese translation for `docs/zh/docs/tutorial/query-params.md`. PR [#​11242](https://github.com/tiangolo/fastapi/pull/11242) by [@​jackleeio](https://github.com/jackleeio).
- 🌐 Add Azerbaijani translation for `docs/az/learn/index.md`. PR [#​11192](https://github.com/tiangolo/fastapi/pull/11192) by [@​vusallyv](https://github.com/vusallyv).
##### Internal
- 👥 Update FastAPI People. PR [#​11387](https://github.com/tiangolo/fastapi/pull/11387) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Bump actions/cache from 3 to 4. PR [#​10988](https://github.com/tiangolo/fastapi/pull/10988) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.11 to 1.8.14. PR [#​11318](https://github.com/tiangolo/fastapi/pull/11318) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump pillow from 10.1.0 to 10.2.0. PR [#​11011](https://github.com/tiangolo/fastapi/pull/11011) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump black from 23.3.0 to 24.3.0. PR [#​11325](https://github.com/tiangolo/fastapi/pull/11325) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 👷 Add cron to run test once a week on monday. PR [#​11377](https://github.com/tiangolo/fastapi/pull/11377) by [@​estebanx64](https://github.com/estebanx64).
- ➕ Replace mkdocs-markdownextradata-plugin with mkdocs-macros-plugin. PR [#​11383](https://github.com/tiangolo/fastapi/pull/11383) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Disable MkDocs insiders social plugin while an issue in MkDocs Material is handled. PR [#​11373](https://github.com/tiangolo/fastapi/pull/11373) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Fix logic for when to install and use MkDocs Insiders. PR [#​11372](https://github.com/tiangolo/fastapi/pull/11372) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Do not use Python packages cache for publish. PR [#​11366](https://github.com/tiangolo/fastapi/pull/11366) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Add CI to test sdists for redistribution (e.g. Linux distros). PR [#​11365](https://github.com/tiangolo/fastapi/pull/11365) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update build-docs GitHub Action path filter. PR [#​11354](https://github.com/tiangolo/fastapi/pull/11354) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update Ruff config, add extra ignore rule from SQLModel. PR [#​11353](https://github.com/tiangolo/fastapi/pull/11353) by [@​tiangolo](https://github.com/tiangolo).
- ⬆️ Upgrade configuration for Ruff v0.2.0. PR [#​11075](https://github.com/tiangolo/fastapi/pull/11075) by [@​charliermarsh](https://github.com/charliermarsh).
- 🔧 Update sponsors, add MongoDB. PR [#​11346](https://github.com/tiangolo/fastapi/pull/11346) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Bump dorny/paths-filter from 2 to 3. PR [#​11028](https://github.com/tiangolo/fastapi/pull/11028) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump dawidd6/action-download-artifact from 3.0.0 to 3.1.4. PR [#​11310](https://github.com/tiangolo/fastapi/pull/11310) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ♻️ Refactor computing FastAPI People, include 3 months, 6 months, 1 year, based on comment date, not discussion date. PR [#​11304](https://github.com/tiangolo/fastapi/pull/11304) by [@​tiangolo](https://github.com/tiangolo).
- 👥 Update FastAPI People. PR [#​11228](https://github.com/tiangolo/fastapi/pull/11228) by [@​tiangolo](https://github.com/tiangolo).
- 🔥 Remove Jina AI QA Bot from the docs. PR [#​11268](https://github.com/tiangolo/fastapi/pull/11268) by [@​nan-wang](https://github.com/nan-wang).
- 🔧 Update sponsors, remove Jina, remove Powens, move TestDriven.io. PR [#​11213](https://github.com/tiangolo/fastapi/pull/11213) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.110.0`](https://github.com/fastapi/fastapi/releases/tag/0.110.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.109.2...0.110.0)
##### Breaking Changes
- 🐛 Fix unhandled growing memory for internal server errors, refactor dependencies with `yield` and `except` to require raising again as in regular Python. PR [#​11191](https://github.com/tiangolo/fastapi/pull/11191) by [@​tiangolo](https://github.com/tiangolo).
- This is a breaking change (and only slightly) if you used dependencies with `yield`, used `except` in those dependencies, and didn't raise again.
- This was reported internally by [@​rushilsrivastava](https://github.com/rushilsrivastava) as a memory leak when the server had unhandled exceptions that would produce internal server errors, the memory allocated before that point would not be released.
- Read the new docs: [Dependencies with `yield` and `except`](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-with-yield/#dependencies-with-yield-and-except).
In short, if you had dependencies that looked like:
```Python
def my_dep():
try:
yield
except SomeException:
pass
```
Now you need to make sure you raise again after `except`, just as you would in regular Python:
```Python
def my_dep():
try:
yield
except SomeException:
raise
```
##### Docs
- ✏️ Fix minor typos in `docs/ko/docs/`. PR [#​11126](https://github.com/tiangolo/fastapi/pull/11126) by [@​KaniKim](https://github.com/KaniKim).
- ✏️ Fix minor typo in `fastapi/applications.py`. PR [#​11099](https://github.com/tiangolo/fastapi/pull/11099) by [@​JacobHayes](https://github.com/JacobHayes).
##### Translations
- 🌐 Add German translation for `docs/de/docs/reference/background.md`. PR [#​10820](https://github.com/tiangolo/fastapi/pull/10820) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/templating.md`. PR [#​10842](https://github.com/tiangolo/fastapi/pull/10842) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/external-links.md`. PR [#​10852](https://github.com/tiangolo/fastapi/pull/10852) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Update Turkish translation for `docs/tr/docs/tutorial/query-params.md`. PR [#​11162](https://github.com/tiangolo/fastapi/pull/11162) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add German translation for `docs/de/docs/reference/encoders.md`. PR [#​10840](https://github.com/tiangolo/fastapi/pull/10840) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/responses.md`. PR [#​10825](https://github.com/tiangolo/fastapi/pull/10825) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/reference/request.md`. PR [#​10821](https://github.com/tiangolo/fastapi/pull/10821) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add Turkish translation for `docs/tr/docs/tutorial/query-params.md`. PR [#​11078](https://github.com/tiangolo/fastapi/pull/11078) by [@​emrhnsyts](https://github.com/emrhnsyts).
- 🌐 Add German translation for `docs/de/docs/reference/fastapi.md`. PR [#​10813](https://github.com/tiangolo/fastapi/pull/10813) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/newsletter.md`. PR [#​10853](https://github.com/tiangolo/fastapi/pull/10853) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add Traditional Chinese translation for `docs/zh-hant/docs/learn/index.md`. PR [#​11142](https://github.com/tiangolo/fastapi/pull/11142) by [@​hsuanchi](https://github.com/hsuanchi).
- 🌐 Add Korean translation for `/docs/ko/docs/tutorial/dependencies/global-dependencies.md`. PR [#​11123](https://github.com/tiangolo/fastapi/pull/11123) by [@​riroan](https://github.com/riroan).
- 🌐 Add Korean translation for `/docs/ko/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md`. PR [#​11124](https://github.com/tiangolo/fastapi/pull/11124) by [@​riroan](https://github.com/riroan).
- 🌐 Add Korean translation for `/docs/ko/docs/tutorial/schema-extra-example.md`. PR [#​11121](https://github.com/tiangolo/fastapi/pull/11121) by [@​KaniKim](https://github.com/KaniKim).
- 🌐 Add Korean translation for `/docs/ko/docs/tutorial/body-fields.md`. PR [#​11112](https://github.com/tiangolo/fastapi/pull/11112) by [@​KaniKim](https://github.com/KaniKim).
- 🌐 Add Korean translation for `/docs/ko/docs/tutorial/cookie-params.md`. PR [#​11118](https://github.com/tiangolo/fastapi/pull/11118) by [@​riroan](https://github.com/riroan).
- 🌐 Update Korean translation for `/docs/ko/docs/dependencies/index.md`. PR [#​11114](https://github.com/tiangolo/fastapi/pull/11114) by [@​KaniKim](https://github.com/KaniKim).
- 🌐 Update Korean translation for `/docs/ko/docs/deployment/docker.md`. PR [#​11113](https://github.com/tiangolo/fastapi/pull/11113) by [@​KaniKim](https://github.com/KaniKim).
- 🌐 Update Turkish translation for `docs/tr/docs/tutorial/first-steps.md`. PR [#​11094](https://github.com/tiangolo/fastapi/pull/11094) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Spanish translation for `docs/es/docs/advanced/security/index.md`. PR [#​2278](https://github.com/tiangolo/fastapi/pull/2278) by [@​Xaraxx](https://github.com/Xaraxx).
- 🌐 Add Spanish translation for `docs/es/docs/advanced/response-headers.md`. PR [#​2276](https://github.com/tiangolo/fastapi/pull/2276) by [@​Xaraxx](https://github.com/Xaraxx).
- 🌐 Add Spanish translation for `docs/es/docs/deployment/index.md` and `~/deployment/versions.md`. PR [#​9669](https://github.com/tiangolo/fastapi/pull/9669) by [@​pabloperezmoya](https://github.com/pabloperezmoya).
- 🌐 Add Spanish translation for `docs/es/docs/benchmarks.md`. PR [#​10928](https://github.com/tiangolo/fastapi/pull/10928) by [@​pablocm83](https://github.com/pablocm83).
- 🌐 Add Spanish translation for `docs/es/docs/advanced/response-change-status-code.md`. PR [#​11100](https://github.com/tiangolo/fastapi/pull/11100) by [@​alejsdev](https://github.com/alejsdev).
### [`v0.109.2`](https://github.com/fastapi/fastapi/releases/tag/0.109.2)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.109.1...0.109.2)
##### Upgrades
- ⬆️ Upgrade version of Starlette to `>= 0.36.3`. PR [#​11086](https://github.com/tiangolo/fastapi/pull/11086) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- 🌐 Update Turkish translation for `docs/tr/docs/fastapi-people.md`. PR [#​10547](https://github.com/tiangolo/fastapi/pull/10547) by [@​alperiox](https://github.com/alperiox).
##### Internal
- 🍱 Add new FastAPI logo. PR [#​11090](https://github.com/tiangolo/fastapi/pull/11090) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.109.1`](https://github.com/fastapi/fastapi/releases/tag/0.109.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.109.0...0.109.1)
##### Security fixes
- ⬆️ Upgrade minimum version of `python-multipart` to `>=0.0.7` to fix a vulnerability when using form data with a ReDos attack. You can also simply upgrade `python-multipart`.
Read more in the [advisory: Content-Type Header ReDoS](https://github.com/tiangolo/fastapi/security/advisories/GHSA-qf9m-vfgh-m389).
##### Features
- ✨ Include HTTP 205 in status codes with no body. PR [#​10969](https://github.com/tiangolo/fastapi/pull/10969) by [@​tiangolo](https://github.com/tiangolo).
##### Refactors
- ✅ Refactor tests for duplicate operation ID generation for compatibility with other tools running the FastAPI test suite. PR [#​10876](https://github.com/tiangolo/fastapi/pull/10876) by [@​emmettbutler](https://github.com/emmettbutler).
- ♻️ Simplify string format with f-strings in `fastapi/utils.py`. PR [#​10576](https://github.com/tiangolo/fastapi/pull/10576) by [@​eukub](https://github.com/eukub).
- 🔧 Fix Ruff configuration unintentionally enabling and re-disabling mccabe complexity check. PR [#​10893](https://github.com/tiangolo/fastapi/pull/10893) by [@​jiridanek](https://github.com/jiridanek).
- ✅ Re-enable test in `tests/test_tutorial/test_header_params/test_tutorial003.py` after fix in Starlette. PR [#​10904](https://github.com/tiangolo/fastapi/pull/10904) by [@​ooknimm](https://github.com/ooknimm).
##### Docs
- 📝 Tweak wording in `help-fastapi.md`. PR [#​11040](https://github.com/tiangolo/fastapi/pull/11040) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Tweak docs for Behind a Proxy. PR [#​11038](https://github.com/tiangolo/fastapi/pull/11038) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Add External Link: 10 Tips for adding SQLAlchemy to FastAPI. PR [#​11036](https://github.com/tiangolo/fastapi/pull/11036) by [@​Donnype](https://github.com/Donnype).
- 📝 Add External Link: Tips on migrating from Flask to FastAPI and vice-versa. PR [#​11029](https://github.com/tiangolo/fastapi/pull/11029) by [@​jtemporal](https://github.com/jtemporal).
- 📝 Deprecate old tutorials: Peewee, Couchbase, encode/databases. PR [#​10979](https://github.com/tiangolo/fastapi/pull/10979) by [@​tiangolo](https://github.com/tiangolo).
- ✏️ Fix typo in `fastapi/security/oauth2.py`. PR [#​10972](https://github.com/tiangolo/fastapi/pull/10972) by [@​RafalSkolasinski](https://github.com/RafalSkolasinski).
- 📝 Update `HTTPException` details in `docs/en/docs/tutorial/handling-errors.md`. PR [#​5418](https://github.com/tiangolo/fastapi/pull/5418) by [@​papb](https://github.com/papb).
- ✏️ A few tweaks in `docs/de/docs/tutorial/first-steps.md`. PR [#​10959](https://github.com/tiangolo/fastapi/pull/10959) by [@​nilslindemann](https://github.com/nilslindemann).
- ✏️ Fix link in `docs/en/docs/advanced/async-tests.md`. PR [#​10960](https://github.com/tiangolo/fastapi/pull/10960) by [@​nilslindemann](https://github.com/nilslindemann).
- ✏️ Fix typos for Spanish documentation. PR [#​10957](https://github.com/tiangolo/fastapi/pull/10957) by [@​jlopezlira](https://github.com/jlopezlira).
- 📝 Add warning about lifespan functions and backwards compatibility with events. PR [#​10734](https://github.com/tiangolo/fastapi/pull/10734) by [@​jacob-indigo](https://github.com/jacob-indigo).
- ✏️ Fix broken link in `docs/tutorial/sql-databases.md` in several languages. PR [#​10716](https://github.com/tiangolo/fastapi/pull/10716) by [@​theoohoho](https://github.com/theoohoho).
- ✏️ Remove broken links from `external_links.yml`. PR [#​10943](https://github.com/tiangolo/fastapi/pull/10943) by [@​Torabek](https://github.com/Torabek).
- 📝 Update template docs with more info about `url_for`. PR [#​5937](https://github.com/tiangolo/fastapi/pull/5937) by [@​EzzEddin](https://github.com/EzzEddin).
- 📝 Update usage of Token model in security docs. PR [#​9313](https://github.com/tiangolo/fastapi/pull/9313) by [@​piotrszacilowski](https://github.com/piotrszacilowski).
- ✏️ Update highlighted line in `docs/en/docs/tutorial/bigger-applications.md`. PR [#​5490](https://github.com/tiangolo/fastapi/pull/5490) by [@​papb](https://github.com/papb).
- 📝 Add External Link: Explore How to Effectively Use JWT With FastAPI. PR [#​10212](https://github.com/tiangolo/fastapi/pull/10212) by [@​aanchlia](https://github.com/aanchlia).
- 📝 Add hyperlink to `docs/en/docs/tutorial/static-files.md`. PR [#​10243](https://github.com/tiangolo/fastapi/pull/10243) by [@​hungtsetse](https://github.com/hungtsetse).
- 📝 Add External Link: Instrument a FastAPI service adding tracing with OpenTelemetry and send/show traces in Grafana Tempo. PR [#​9440](https://github.com/tiangolo/fastapi/pull/9440) by [@​softwarebloat](https://github.com/softwarebloat).
- 📝 Review and rewording of `en/docs/contributing.md`. PR [#​10480](https://github.com/tiangolo/fastapi/pull/10480) by [@​nilslindemann](https://github.com/nilslindemann).
- 📝 Add External Link: ML serving and monitoring with FastAPI and Evidently. PR [#​9701](https://github.com/tiangolo/fastapi/pull/9701) by [@​mnrozhkov](https://github.com/mnrozhkov).
- 📝 Reword in docs, from "have in mind" to "keep in mind". PR [#​10376](https://github.com/tiangolo/fastapi/pull/10376) by [@​malicious](https://github.com/malicious).
- 📝 Add External Link: Talk by Jeny Sadadia. PR [#​10265](https://github.com/tiangolo/fastapi/pull/10265) by [@​JenySadadia](https://github.com/JenySadadia).
- 📝 Add location info to `tutorial/bigger-applications.md`. PR [#​10552](https://github.com/tiangolo/fastapi/pull/10552) by [@​nilslindemann](https://github.com/nilslindemann).
- ✏️ Fix Pydantic method name in `docs/en/docs/advanced/path-operation-advanced-configuration.md`. PR [#​10826](https://github.com/tiangolo/fastapi/pull/10826) by [@​ahmedabdou14](https://github.com/ahmedabdou14).
##### Translations
- 🌐 Add Spanish translation for `docs/es/docs/external-links.md`. PR [#​10933](https://github.com/tiangolo/fastapi/pull/10933) by [@​pablocm83](https://github.com/pablocm83).
- 🌐 Update Korean translation for `docs/ko/docs/tutorial/first-steps.md`, `docs/ko/docs/tutorial/index.md`, `docs/ko/docs/tutorial/path-params.md`, and `docs/ko/docs/tutorial/query-params.md`. PR [#​4218](https://github.com/tiangolo/fastapi/pull/4218) by [@​SnowSuno](https://github.com/SnowSuno).
- 🌐 Add Chinese translation for `docs/zh/docs/tutorial/dependencies/dependencies-with-yield.md`. PR [#​10870](https://github.com/tiangolo/fastapi/pull/10870) by [@​zhiquanchi](https://github.com/zhiquanchi).
- 🌐 Add Chinese translation for `docs/zh/docs/deployment/concepts.md`. PR [#​10282](https://github.com/tiangolo/fastapi/pull/10282) by [@​xzmeng](https://github.com/xzmeng).
- 🌐 Add Azerbaijani translation for `docs/az/docs/index.md`. PR [#​11047](https://github.com/tiangolo/fastapi/pull/11047) by [@​aykhans](https://github.com/aykhans).
- 🌐 Add Korean translation for `docs/ko/docs/tutorial/middleware.md`. PR [#​2829](https://github.com/tiangolo/fastapi/pull/2829) by [@​JeongHyeongKim](https://github.com/JeongHyeongKim).
- 🌐 Add German translation for `docs/de/docs/tutorial/body-nested-models.md`. PR [#​10313](https://github.com/tiangolo/fastapi/pull/10313) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add Persian translation for `docs/fa/docs/tutorial/middleware.md`. PR [#​9695](https://github.com/tiangolo/fastapi/pull/9695) by [@​mojtabapaso](https://github.com/mojtabapaso).
- 🌐 Update Farsi translation for `docs/fa/docs/index.md`. PR [#​10216](https://github.com/tiangolo/fastapi/pull/10216) by [@​theonlykingpin](https://github.com/theonlykingpin).
- 🌐 Add German translation for `docs/de/docs/tutorial/body-fields.md`. PR [#​10310](https://github.com/tiangolo/fastapi/pull/10310) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/body.md`. PR [#​10295](https://github.com/tiangolo/fastapi/pull/10295) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/body-multiple-params.md`. PR [#​10308](https://github.com/tiangolo/fastapi/pull/10308) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/security/get-current-user.md`. PR [#​2681](https://github.com/tiangolo/fastapi/pull/2681) by [@​sh0nk](https://github.com/sh0nk).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/advanced-dependencies.md`. PR [#​3798](https://github.com/tiangolo/fastapi/pull/3798) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/events.md`. PR [#​3815](https://github.com/tiangolo/fastapi/pull/3815) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/behind-a-proxy.md`. PR [#​3820](https://github.com/tiangolo/fastapi/pull/3820) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/testing-events.md`. PR [#​3818](https://github.com/tiangolo/fastapi/pull/3818) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/testing-websockets.md`. PR [#​3817](https://github.com/tiangolo/fastapi/pull/3817) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/testing-database.md`. PR [#​3821](https://github.com/tiangolo/fastapi/pull/3821) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/deployment/deta.md`. PR [#​3837](https://github.com/tiangolo/fastapi/pull/3837) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/history-design-future.md`. PR [#​3832](https://github.com/tiangolo/fastapi/pull/3832) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/project-generation.md`. PR [#​3831](https://github.com/tiangolo/fastapi/pull/3831) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Chinese translation for `docs/zh/docs/deployment/docker.md`. PR [#​10296](https://github.com/tiangolo/fastapi/pull/10296) by [@​xzmeng](https://github.com/xzmeng).
- 🌐 Update Spanish translation for `docs/es/docs/features.md`. PR [#​10884](https://github.com/tiangolo/fastapi/pull/10884) by [@​pablocm83](https://github.com/pablocm83).
- 🌐 Add Spanish translation for `docs/es/docs/newsletter.md`. PR [#​10922](https://github.com/tiangolo/fastapi/pull/10922) by [@​pablocm83](https://github.com/pablocm83).
- 🌐 Add Korean translation for `docs/ko/docs/tutorial/background-tasks.md`. PR [#​5910](https://github.com/tiangolo/fastapi/pull/5910) by [@​junah201](https://github.com/junah201).
- :globe_with_meridians: Add Turkish translation for `docs/tr/docs/alternatives.md`. PR [#​10502](https://github.com/tiangolo/fastapi/pull/10502) by [@​alperiox](https://github.com/alperiox).
- 🌐 Add Korean translation for `docs/ko/docs/tutorial/dependencies/index.md`. PR [#​10989](https://github.com/tiangolo/fastapi/pull/10989) by [@​KaniKim](https://github.com/KaniKim).
- 🌐 Add Korean translation for `/docs/ko/docs/tutorial/body.md`. PR [#​11000](https://github.com/tiangolo/fastapi/pull/11000) by [@​KaniKim](https://github.com/KaniKim).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/schema-extra-example.md`. PR [#​4065](https://github.com/tiangolo/fastapi/pull/4065) by [@​luccasmmg](https://github.com/luccasmmg).
- 🌐 Add Turkish translation for `docs/tr/docs/history-design-future.md`. PR [#​11012](https://github.com/tiangolo/fastapi/pull/11012) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Turkish translation for `docs/tr/docs/resources/index.md`. PR [#​11020](https://github.com/tiangolo/fastapi/pull/11020) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Turkish translation for `docs/tr/docs/how-to/index.md`. PR [#​11021](https://github.com/tiangolo/fastapi/pull/11021) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add German translation for `docs/de/docs/tutorial/query-params.md`. PR [#​10293](https://github.com/tiangolo/fastapi/pull/10293) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/benchmarks.md`. PR [#​10866](https://github.com/tiangolo/fastapi/pull/10866) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add Turkish translation for `docs/tr/docs/learn/index.md`. PR [#​11014](https://github.com/tiangolo/fastapi/pull/11014) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Persian translation for `docs/fa/docs/tutorial/security/index.md`. PR [#​9945](https://github.com/tiangolo/fastapi/pull/9945) by [@​mojtabapaso](https://github.com/mojtabapaso).
- 🌐 Add Turkish translation for `docs/tr/docs/help/index.md`. PR [#​11013](https://github.com/tiangolo/fastapi/pull/11013) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Turkish translation for `docs/tr/docs/about/index.md`. PR [#​11006](https://github.com/tiangolo/fastapi/pull/11006) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Update Turkish translation for `docs/tr/docs/benchmarks.md`. PR [#​11005](https://github.com/tiangolo/fastapi/pull/11005) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Italian translation for `docs/it/docs/index.md`. PR [#​5233](https://github.com/tiangolo/fastapi/pull/5233) by [@​matteospanio](https://github.com/matteospanio).
- 🌐 Add Korean translation for `docs/ko/docs/help/index.md`. PR [#​10983](https://github.com/tiangolo/fastapi/pull/10983) by [@​KaniKim](https://github.com/KaniKim).
- 🌐 Add Korean translation for `docs/ko/docs/features.md`. PR [#​10976](https://github.com/tiangolo/fastapi/pull/10976) by [@​KaniKim](https://github.com/KaniKim).
- 🌐 Add Korean translation for `docs/ko/docs/tutorial/security/get-current-user.md`. PR [#​5737](https://github.com/tiangolo/fastapi/pull/5737) by [@​KdHyeon0661](https://github.com/KdHyeon0661).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/security/first-steps.md`. PR [#​10541](https://github.com/tiangolo/fastapi/pull/10541) by [@​AlertRED](https://github.com/AlertRED).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/handling-errors.md`. PR [#​10375](https://github.com/tiangolo/fastapi/pull/10375) by [@​AlertRED](https://github.com/AlertRED).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/encoder.md`. PR [#​10374](https://github.com/tiangolo/fastapi/pull/10374) by [@​AlertRED](https://github.com/AlertRED).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/body-updates.md`. PR [#​10373](https://github.com/tiangolo/fastapi/pull/10373) by [@​AlertRED](https://github.com/AlertRED).
- 🌐 Russian translation: updated `fastapi-people.md`.. PR [#​10255](https://github.com/tiangolo/fastapi/pull/10255) by [@​NiKuma0](https://github.com/NiKuma0).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/security/index.md`. PR [#​5798](https://github.com/tiangolo/fastapi/pull/5798) by [@​3w36zj6](https://github.com/3w36zj6).
- 🌐 Add German translation for `docs/de/docs/advanced/generate-clients.md`. PR [#​10725](https://github.com/tiangolo/fastapi/pull/10725) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/openapi-webhooks.md`. PR [#​10712](https://github.com/tiangolo/fastapi/pull/10712) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/custom-response.md`. PR [#​10624](https://github.com/tiangolo/fastapi/pull/10624) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/advanced/additional-status-codes.md`. PR [#​10617](https://github.com/tiangolo/fastapi/pull/10617) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add German translation for `docs/de/docs/tutorial/middleware.md`. PR [#​10391](https://github.com/tiangolo/fastapi/pull/10391) by [@​JohannesJungbluth](https://github.com/JohannesJungbluth).
- 🌐 Add German translation for introduction documents. PR [#​10497](https://github.com/tiangolo/fastapi/pull/10497) by [@​nilslindemann](https://github.com/nilslindemann).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/encoder.md`. PR [#​1955](https://github.com/tiangolo/fastapi/pull/1955) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/extra-data-types.md`. PR [#​1932](https://github.com/tiangolo/fastapi/pull/1932) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Turkish translation for `docs/tr/docs/async.md`. PR [#​5191](https://github.com/tiangolo/fastapi/pull/5191) by [@​BilalAlpaslan](https://github.com/BilalAlpaslan).
- 🌐 Add Turkish translation for `docs/tr/docs/project-generation.md`. PR [#​5192](https://github.com/tiangolo/fastapi/pull/5192) by [@​BilalAlpaslan](https://github.com/BilalAlpaslan).
- 🌐 Add Korean translation for `docs/ko/docs/deployment/docker.md`. PR [#​5657](https://github.com/tiangolo/fastapi/pull/5657) by [@​nearnear](https://github.com/nearnear).
- 🌐 Add Korean translation for `docs/ko/docs/deployment/server-workers.md`. PR [#​4935](https://github.com/tiangolo/fastapi/pull/4935) by [@​jujumilk3](https://github.com/jujumilk3).
- 🌐 Add Korean translation for `docs/ko/docs/deployment/index.md`. PR [#​4561](https://github.com/tiangolo/fastapi/pull/4561) by [@​jujumilk3](https://github.com/jujumilk3).
- 🌐 Add Korean translation for `docs/ko/docs/tutorial/path-operation-configuration.md`. PR [#​3639](https://github.com/tiangolo/fastapi/pull/3639) by [@​jungsu-kwon](https://github.com/jungsu-kwon).
- 🌐 Modify the description of `zh` - Traditional Chinese. PR [#​10889](https://github.com/tiangolo/fastapi/pull/10889) by [@​cherinyy](https://github.com/cherinyy).
- 🌐 Add Korean translation for `docs/ko/docs/tutorial/static-files.md`. PR [#​2957](https://github.com/tiangolo/fastapi/pull/2957) by [@​jeesang7](https://github.com/jeesang7).
- 🌐 Add Korean translation for `docs/ko/docs/tutorial/response-model.md`. PR [#​2766](https://github.com/tiangolo/fastapi/pull/2766) by [@​hard-coders](https://github.com/hard-coders).
- 🌐 Add Korean translation for `docs/ko/docs/tutorial/body-multiple-params.md`. PR [#​2461](https://github.com/tiangolo/fastapi/pull/2461) by [@​PandaHun](https://github.com/PandaHun).
- 🌐 Add Korean translation for `docs/ko/docs/tutorial/query-params-str-validations.md`. PR [#​2415](https://github.com/tiangolo/fastapi/pull/2415) by [@​hard-coders](https://github.com/hard-coders).
- 🌐 Add Korean translation for `docs/ko/docs/python-types.md`. PR [#​2267](https://github.com/tiangolo/fastapi/pull/2267) by [@​jrim](https://github.com/jrim).
- 🌐 Add Korean translation for `docs/ko/docs/tutorial/body-nested-models.md`. PR [#​2506](https://github.com/tiangolo/fastapi/pull/2506) by [@​hard-coders](https://github.com/hard-coders).
- 🌐 Add Korean translation for `docs/ko/docs/learn/index.md`. PR [#​10977](https://github.com/tiangolo/fastapi/pull/10977) by [@​KaniKim](https://github.com/KaniKim).
- 🌐 Initialize translations for Traditional Chinese. PR [#​10505](https://github.com/tiangolo/fastapi/pull/10505) by [@​hsuanchi](https://github.com/hsuanchi).
- ✏️ Tweak the german translation of `docs/de/docs/tutorial/index.md`. PR [#​10962](https://github.com/tiangolo/fastapi/pull/10962) by [@​nilslindemann](https://github.com/nilslindemann).
- ✏️ Fix typo error in `docs/ko/docs/tutorial/path-params.md`. PR [#​10758](https://github.com/tiangolo/fastapi/pull/10758) by [@​2chanhaeng](https://github.com/2chanhaeng).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md`. PR [#​1961](https://github.com/tiangolo/fastapi/pull/1961) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md`. PR [#​1960](https://github.com/tiangolo/fastapi/pull/1960) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/dependencies/sub-dependencies.md`. PR [#​1959](https://github.com/tiangolo/fastapi/pull/1959) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/background-tasks.md`. PR [#​2668](https://github.com/tiangolo/fastapi/pull/2668) by [@​tokusumi](https://github.com/tokusumi).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/dependencies/index.md` and `docs/ja/docs/tutorial/dependencies/classes-as-dependencies.md`. PR [#​1958](https://github.com/tiangolo/fastapi/pull/1958) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/response-model.md`. PR [#​1938](https://github.com/tiangolo/fastapi/pull/1938) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/body-multiple-params.md`. PR [#​1903](https://github.com/tiangolo/fastapi/pull/1903) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/path-params-numeric-validations.md`. PR [#​1902](https://github.com/tiangolo/fastapi/pull/1902) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese translation for `docs/ja/docs/python-types.md`. PR [#​1899](https://github.com/tiangolo/fastapi/pull/1899) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/handling-errors.md`. PR [#​1953](https://github.com/tiangolo/fastapi/pull/1953) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/response-status-code.md`. PR [#​1942](https://github.com/tiangolo/fastapi/pull/1942) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/extra-models.md`. PR [#​1941](https://github.com/tiangolo/fastapi/pull/1941) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese tranlsation for `docs/ja/docs/tutorial/schema-extra-example.md`. PR [#​1931](https://github.com/tiangolo/fastapi/pull/1931) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/body-nested-models.md`. PR [#​1930](https://github.com/tiangolo/fastapi/pull/1930) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add Japanese translation for `docs/ja/docs/tutorial/body-fields.md`. PR [#​1923](https://github.com/tiangolo/fastapi/pull/1923) by [@​SwftAlpc](https://github.com/SwftAlpc).
- 🌐 Add German translation for `docs/de/docs/tutorial/index.md`. PR [#​9502](https://github.com/tiangolo/fastapi/pull/9502) by [@​fhabers21](https://github.com/fhabers21).
- 🌐 Add German translation for `docs/de/docs/tutorial/background-tasks.md`. PR [#​10566](https://github.com/tiangolo/fastapi/pull/10566) by [@​nilslindemann](https://github.com/nilslindemann).
- ✏️ Fix typo in `docs/ru/docs/index.md`. PR [#​10672](https://github.com/tiangolo/fastapi/pull/10672) by [@​Delitel-WEB](https://github.com/Delitel-WEB).
- ✏️ Fix typos in `docs/zh/docs/tutorial/extra-data-types.md`. PR [#​10727](https://github.com/tiangolo/fastapi/pull/10727) by [@​HiemalBeryl](https://github.com/HiemalBeryl).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/dependencies/classes-as-dependencies.md`. PR [#​10410](https://github.com/tiangolo/fastapi/pull/10410) by [@​AlertRED](https://github.com/AlertRED).
##### Internal
- 👥 Update FastAPI People. PR [#​11074](https://github.com/tiangolo/fastapi/pull/11074) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors: add Coherence. PR [#​11066](https://github.com/tiangolo/fastapi/pull/11066) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Upgrade GitHub Action issue-manager. PR [#​11056](https://github.com/tiangolo/fastapi/pull/11056) by [@​tiangolo](https://github.com/tiangolo).
- 🍱 Update sponsors: TalkPython badge. PR [#​11052](https://github.com/tiangolo/fastapi/pull/11052) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors: TalkPython badge image. PR [#​11048](https://github.com/tiangolo/fastapi/pull/11048) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, remove Deta. PR [#​11041](https://github.com/tiangolo/fastapi/pull/11041) by [@​tiangolo](https://github.com/tiangolo).
- 💄 Fix CSS breaking RTL languages (erroneously introduced by a previous RTL PR). PR [#​11039](https://github.com/tiangolo/fastapi/pull/11039) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Add Italian to `mkdocs.yml`. PR [#​11016](https://github.com/tiangolo/fastapi/pull/11016) by [@​alejsdev](https://github.com/alejsdev).
- 🔨 Verify `mkdocs.yml` languages in CI, update `docs.py`. PR [#​11009](https://github.com/tiangolo/fastapi/pull/11009) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update config in `label-approved.yml` to accept translations with 1 reviewer. PR [#​11007](https://github.com/tiangolo/fastapi/pull/11007) by [@​alejsdev](https://github.com/alejsdev).
- 👷 Add changes-requested handling in GitHub Action issue manager. PR [#​10971](https://github.com/tiangolo/fastapi/pull/10971) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Group dependencies on dependabot updates. PR [#​10952](https://github.com/tiangolo/fastapi/pull/10952) by [@​Kludex](https://github.com/Kludex).
- ⬆ Bump actions/setup-python from 4 to 5. PR [#​10764](https://github.com/tiangolo/fastapi/pull/10764) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.10 to 1.8.11. PR [#​10731](https://github.com/tiangolo/fastapi/pull/10731) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump dawidd6/action-download-artifact from 2.28.0 to 3.0.0. PR [#​10777](https://github.com/tiangolo/fastapi/pull/10777) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 🔧 Add support for translations to languages with a longer code name, like `zh-hant`. PR [#​10950](https://github.com/tiangolo/fastapi/pull/10950) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.109.0`](https://github.com/fastapi/fastapi/releases/tag/0.109.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.108.0...0.109.0)
##### Features
- ✨ Add support for Python 3.12. PR [#​10666](https://github.com/tiangolo/fastapi/pull/10666) by [@​Jamim](https://github.com/Jamim).
##### Upgrades
- ⬆️ Upgrade Starlette to `>=0.29.0,<0.33.0`, update docs and usage of templates with new Starlette arguments. Remove pin of AnyIO `>=3.7.1,<4.0.0`, add support for AnyIO 4.x.x. PR [#​10846](https://github.com/tiangolo/fastapi/pull/10846) by [@​tiangolo](https://github.com/tiangolo).
##### Docs
- ✏️ Fix typo in `docs/en/docs/alternatives.md`. PR [#​10931](https://github.com/tiangolo/fastapi/pull/10931) by [@​s111d](https://github.com/s111d).
- 📝 Replace `email` with `username` in `docs_src/security/tutorial007` code examples. PR [#​10649](https://github.com/tiangolo/fastapi/pull/10649) by [@​nilslindemann](https://github.com/nilslindemann).
- 📝 Add VS Code tutorial link. PR [#​10592](https://github.com/tiangolo/fastapi/pull/10592) by [@​nilslindemann](https://github.com/nilslindemann).
- 📝 Add notes about Pydantic v2's new `.model_dump()`. PR [#​10929](https://github.com/tiangolo/fastapi/pull/10929) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Fix broken link in `docs/en/docs/tutorial/sql-databases.md`. PR [#​10765](https://github.com/tiangolo/fastapi/pull/10765) by [@​HurSungYun](https://github.com/HurSungYun).
- 📝 Add External Link: FastAPI application monitoring made easy. PR [#​10917](https://github.com/tiangolo/fastapi/pull/10917) by [@​tiangolo](https://github.com/tiangolo).
- ✨ Generate automatic language names for docs translations. PR [#​5354](https://github.com/tiangolo/fastapi/pull/5354) by [@​jakul](https://github.com/jakul).
- ✏️ Fix typos in `docs/en/docs/alternatives.md` and `docs/en/docs/tutorial/dependencies/index.md`. PR [#​10906](https://github.com/tiangolo/fastapi/pull/10906) by [@​s111d](https://github.com/s111d).
- ✏️ Fix typos in `docs/en/docs/tutorial/dependencies/dependencies-with-yield.md`. PR [#​10834](https://github.com/tiangolo/fastapi/pull/10834) by [@​Molkree](https://github.com/Molkree).
- 📝 Add article: "Building a RESTful API with FastAPI: Secure Signup and Login Functionality Included". PR [#​9733](https://github.com/tiangolo/fastapi/pull/9733) by [@​dxphilo](https://github.com/dxphilo).
- 📝 Add warning about lifecycle events with `AsyncClient`. PR [#​4167](https://github.com/tiangolo/fastapi/pull/4167) by [@​andrew-chang-dewitt](https://github.com/andrew-chang-dewitt).
- ✏️ Fix typos in `/docs/reference/exceptions.md` and `/en/docs/reference/status.md`. PR [#​10809](https://github.com/tiangolo/fastapi/pull/10809) by [@​clarencepenz](https://github.com/clarencepenz).
- ✏️ Fix typo in `openapi-callbacks.md`. PR [#​10673](https://github.com/tiangolo/fastapi/pull/10673) by [@​kayjan](https://github.com/kayjan).
- ✏️ Fix typo in `fastapi/routing.py` . PR [#​10520](https://github.com/tiangolo/fastapi/pull/10520) by [@​sepsh](https://github.com/sepsh).
- 📝 Replace HTTP code returned in case of existing user error in docs for testing. PR [#​4482](https://github.com/tiangolo/fastapi/pull/4482) by [@​TristanMarion](https://github.com/TristanMarion).
- 📝 Add blog for FastAPI & Supabase. PR [#​6018](https://github.com/tiangolo/fastapi/pull/6018) by [@​theinfosecguy](https://github.com/theinfosecguy).
- 📝 Update example source files for SQL databases with SQLAlchemy. PR [#​9508](https://github.com/tiangolo/fastapi/pull/9508) by [@​s-mustafa](https://github.com/s-mustafa).
- 📝 Update code examples in docs for body, replace name `create_item` with `update_item` when appropriate. PR [#​5913](https://github.com/tiangolo/fastapi/pull/5913) by [@​OttoAndrey](https://github.com/OttoAndrey).
- ✏️ Fix typo in dependencies with yield source examples. PR [#​10847](https://github.com/tiangolo/fastapi/pull/10847) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- 🌐 Add Bengali translation for `docs/bn/docs/index.md`. PR [#​9177](https://github.com/tiangolo/fastapi/pull/9177) by [@​Fahad-Md-Kamal](https://github.com/Fahad-Md-Kamal).
- ✏️ Update Python version in `index.md` in several languages. PR [#​10711](https://github.com/tiangolo/fastapi/pull/10711) by [@​tamago3keran](https://github.com/tamago3keran).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/request-forms-and-files.md`. PR [#​10347](https://github.com/tiangolo/fastapi/pull/10347) by [@​AlertRED](https://github.com/AlertRED).
- 🌐 Add Ukrainian translation for `docs/uk/docs/index.md`. PR [#​10362](https://github.com/tiangolo/fastapi/pull/10362) by [@​rostik1410](https://github.com/rostik1410).
- ✏️ Update Python version in `docs/ko/docs/index.md`. PR [#​10680](https://github.com/tiangolo/fastapi/pull/10680) by [@​Eeap](https://github.com/Eeap).
- 🌐 Add Persian translation for `docs/fa/docs/features.md`. PR [#​5887](https://github.com/tiangolo/fastapi/pull/5887) by [@​amirilf](https://github.com/amirilf).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/additional-responses.md`. PR [#​10325](https://github.com/tiangolo/fastapi/pull/10325) by [@​ShuibeiC](https://github.com/ShuibeiC).
- 🌐 Fix typos in Russian translations for `docs/ru/docs/tutorial/background-tasks.md`, `docs/ru/docs/tutorial/body-nested-models.md`, `docs/ru/docs/tutorial/debugging.md`, `docs/ru/docs/tutorial/testing.md`. PR [#​10311](https://github.com/tiangolo/fastapi/pull/10311) by [@​AlertRED](https://github.com/AlertRED).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/request-files.md`. PR [#​10332](https://github.com/tiangolo/fastapi/pull/10332) by [@​AlertRED](https://github.com/AlertRED).
- 🌐 Add Chinese translation for `docs/zh/docs/deployment/server-workers.md`. PR [#​10292](https://github.com/tiangolo/fastapi/pull/10292) by [@​xzmeng](https://github.com/xzmeng).
- 🌐 Add Chinese translation for `docs/zh/docs/deployment/cloud.md`. PR [#​10291](https://github.com/tiangolo/fastapi/pull/10291) by [@​xzmeng](https://github.com/xzmeng).
- 🌐 Add Chinese translation for `docs/zh/docs/deployment/manually.md`. PR [#​10279](https://github.com/tiangolo/fastapi/pull/10279) by [@​xzmeng](https://github.com/xzmeng).
- 🌐 Add Chinese translation for `docs/zh/docs/deployment/https.md`. PR [#​10277](https://github.com/tiangolo/fastapi/pull/10277) by [@​xzmeng](https://github.com/xzmeng).
- 🌐 Add Chinese translation for `docs/zh/docs/deployment/index.md`. PR [#​10275](https://github.com/tiangolo/fastapi/pull/10275) by [@​xzmeng](https://github.com/xzmeng).
- 🌐 Add German translation for `docs/de/docs/tutorial/first-steps.md`. PR [#​9530](https://github.com/tiangolo/fastapi/pull/9530) by [@​fhabers21](https://github.com/fhabers21).
- 🌐 Update Turkish translation for `docs/tr/docs/index.md`. PR [#​10444](https://github.com/tiangolo/fastapi/pull/10444) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Chinese translation for `docs/zh/docs/learn/index.md`. PR [#​10479](https://github.com/tiangolo/fastapi/pull/10479) by [@​KAZAMA-DREAM](https://github.com/KAZAMA-DREAM).
- 🌐 Add Russian translation for `docs/ru/docs/learn/index.md`. PR [#​10539](https://github.com/tiangolo/fastapi/pull/10539) by [@​AlertRED](https://github.com/AlertRED).
- 🌐 Update SQLAlchemy instruction in Chinese translation `docs/zh/docs/tutorial/sql-databases.md`. PR [#​9712](https://github.com/tiangolo/fastapi/pull/9712) by [@​Royc30ne](https://github.com/Royc30ne).
- 🌐 Add Turkish translation for `docs/tr/docs/external-links.md`. PR [#​10549](https://github.com/tiangolo/fastapi/pull/10549) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Spanish translation for `docs/es/docs/learn/index.md`. PR [#​10885](https://github.com/tiangolo/fastapi/pull/10885) by [@​pablocm83](https://github.com/pablocm83).
- 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/body-fields.md`. PR [#​10670](https://github.com/tiangolo/fastapi/pull/10670) by [@​ArtemKhymenko](https://github.com/ArtemKhymenko).
- 🌐 Add Hungarian translation for `/docs/hu/docs/index.md`. PR [#​10812](https://github.com/tiangolo/fastapi/pull/10812) by [@​takacs](https://github.com/takacs).
- 🌐 Add Turkish translation for `docs/tr/docs/newsletter.md`. PR [#​10550](https://github.com/tiangolo/fastapi/pull/10550) by [@​hasansezertasan](https://github.com/hasansezertasan).
- 🌐 Add Spanish translation for `docs/es/docs/help/index.md`. PR [#​10907](https://github.com/tiangolo/fastapi/pull/10907) by [@​pablocm83](https://github.com/pablocm83).
- 🌐 Add Spanish translation for `docs/es/docs/about/index.md`. PR [#​10908](https://github.com/tiangolo/fastapi/pull/10908) by [@​pablocm83](https://github.com/pablocm83).
- 🌐 Add Spanish translation for `docs/es/docs/resources/index.md`. PR [#​10909](https://github.com/tiangolo/fastapi/pull/10909) by [@​pablocm83](https://github.com/pablocm83).
##### Internal
- 👥 Update FastAPI People. PR [#​10871](https://github.com/tiangolo/fastapi/pull/10871) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Upgrade custom GitHub Action comment-docs-preview-in-pr. PR [#​10916](https://github.com/tiangolo/fastapi/pull/10916) by [@​tiangolo](https://github.com/tiangolo).
- ⬆️ Upgrade GitHub Action latest-changes. PR [#​10915](https://github.com/tiangolo/fastapi/pull/10915) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Upgrade GitHub Action label-approved. PR [#​10913](https://github.com/tiangolo/fastapi/pull/10913) by [@​tiangolo](https://github.com/tiangolo).
- ⬆️ Upgrade GitHub Action label-approved. PR [#​10905](https://github.com/tiangolo/fastapi/pull/10905) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.108.0`](https://github.com/fastapi/fastapi/releases/tag/0.108.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.107.0...0.108.0)
##### Upgrades
- ⬆️ Upgrade Starlette to `>=0.29.0,<0.33.0`, update docs and usage of templates with new Starlette arguments. PR [#​10846](https://github.com/tiangolo/fastapi/pull/10846) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.107.0`](https://github.com/fastapi/fastapi/releases/tag/0.107.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.106.0...0.107.0)
##### Upgrades
- ⬆️ Upgrade Starlette to 0.28.0. PR [#​9636](https://github.com/tiangolo/fastapi/pull/9636) by [@​adriangb](https://github.com/adriangb).
##### Docs
- 📝 Add docs: Node.js script alternative to update OpenAPI for generated clients. PR [#​10845](https://github.com/tiangolo/fastapi/pull/10845) by [@​alejsdev](https://github.com/alejsdev).
- 📝 Restructure Docs section in Contributing page. PR [#​10844](https://github.com/tiangolo/fastapi/pull/10844) by [@​alejsdev](https://github.com/alejsdev).
### [`v0.106.0`](https://github.com/fastapi/fastapi/releases/tag/0.106.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.105.0...0.106.0)
##### Breaking Changes
Using resources from dependencies with `yield` in background tasks is no longer supported.
This change is what supports the new features, read below. 🤓
##### Dependencies with `yield`, `HTTPException` and Background Tasks
Dependencies with `yield` now can raise `HTTPException` and other exceptions after `yield`. 🎉
Read the new docs here: [Dependencies with `yield` and `HTTPException`](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-with-yield/#dependencies-with-yield-and-httpexception).
```Python
from fastapi import Depends, FastAPI, HTTPException
from typing_extensions import Annotated
app = FastAPI()
data = {
"plumbus": {"description": "Freshly pickled plumbus", "owner": "Morty"},
"portal-gun": {"description": "Gun to create portals", "owner": "Rick"},
}
class OwnerError(Exception):
pass
def get_username():
try:
yield "Rick"
except OwnerError as e:
raise HTTPException(status_code=400, detail=f"Onwer error: {e}")
@​app.get("/items/{item_id}")
def get_item(item_id: str, username: Annotated[str, Depends(get_username)]):
if item_id not in data:
raise HTTPException(status_code=404, detail="Item not found")
item = data[item_id]
if item["owner"] != username:
raise OwnerError(username)
return item
```
***
Before FastAPI 0.106.0, raising exceptions after `yield` was not possible, the exit code in dependencies with `yield` was executed *after* the response was sent, so [Exception Handlers](https://fastapi.tiangolo.com/tutorial/handling-errors/#install-custom-exception-handlers) would have already run.
This was designed this way mainly to allow using the same objects "yielded" by dependencies inside of background tasks, because the exit code would be executed after the background tasks were finished.
Nevertheless, as this would mean waiting for the response to travel through the network while unnecessarily holding a resource in a dependency with yield (for example a database connection), this was changed in FastAPI 0.106.0.
Additionally, a background task is normally an independent set of logic that should be handled separately, with its own resources (e.g. its own database connection).
If you used to rely on this behavior, now you should create the resources for background tasks inside the background task itself, and use internally only data that doesn't depend on the resources of dependencies with `yield`.
For example, instead of using the same database session, you would create a new database session inside of the background task, and you would obtain the objects from the database using this new session. And then instead of passing the object from the database as a parameter to the background task function, you would pass the ID of that object and then obtain the object again inside the background task function.
The sequence of execution before FastAPI 0.106.0 was like the diagram in the [Release Notes for FastAPI 0.106.0](https://fastapi.tiangolo.com/release-notes/#​01060).
The new execution flow can be found in the docs: [Execution of dependencies with `yield`](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-with-yield/#execution-of-dependencies-with-yield).
### [`v0.105.0`](https://github.com/fastapi/fastapi/releases/tag/0.105.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.104.1...0.105.0)
##### Features
- ✨ Add support for multiple Annotated annotations, e.g. `Annotated[str, Field(), Query()]`. PR [#​10773](https://github.com/tiangolo/fastapi/pull/10773) by [@​tiangolo](https://github.com/tiangolo).
##### Refactors
- 🔥 Remove unused NoneType. PR [#​10774](https://github.com/tiangolo/fastapi/pull/10774) by [@​tiangolo](https://github.com/tiangolo).
##### Docs
- 📝 Tweak default suggested configs for generating clients. PR [#​10736](https://github.com/tiangolo/fastapi/pull/10736) by [@​tiangolo](https://github.com/tiangolo).
##### Internal
- 🔧 Update sponsors, add Scalar. PR [#​10728](https://github.com/tiangolo/fastapi/pull/10728) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, add PropelAuth. PR [#​10760](https://github.com/tiangolo/fastapi/pull/10760) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update build docs, verify README on CI. PR [#​10750](https://github.com/tiangolo/fastapi/pull/10750) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, remove Fern. PR [#​10729](https://github.com/tiangolo/fastapi/pull/10729) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, add Codacy. PR [#​10677](https://github.com/tiangolo/fastapi/pull/10677) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, add Reflex. PR [#​10676](https://github.com/tiangolo/fastapi/pull/10676) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Update release notes, move and check latest-changes. PR [#​10588](https://github.com/tiangolo/fastapi/pull/10588) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Upgrade latest-changes GitHub Action. PR [#​10587](https://github.com/tiangolo/fastapi/pull/10587) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.104.1`](https://github.com/fastapi/fastapi/releases/tag/0.104.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.104.0...0.104.1)
##### Fixes
- 📌 Pin Swagger UI version to 5.9.0 temporarily to handle a bug crashing it in 5.9.1. PR [#​10529](https://github.com/tiangolo/fastapi/pull/10529) by [@​alejandraklachquin](https://github.com/alejandraklachquin).
- This is not really a bug in FastAPI but in Swagger UI, nevertheless pinning the version will work while a solution is found on the [Swagger UI side](https://github.com/swagger-api/swagger-ui/issues/9337).
##### Docs
- 📝 Update data structure and render for external-links. PR [#​10495](https://github.com/tiangolo/fastapi/pull/10495) by [@​tiangolo](https://github.com/tiangolo).
- ✏️ Fix link to SPDX license identifier in `docs/en/docs/tutorial/metadata.md`. PR [#​10433](https://github.com/tiangolo/fastapi/pull/10433) by [@​worldworm](https://github.com/worldworm).
- 📝 Update example validation error from Pydantic v1 to match Pydantic v2 in `docs/en/docs/tutorial/path-params.md`. PR [#​10043](https://github.com/tiangolo/fastapi/pull/10043) by [@​giuliowaitforitdavide](https://github.com/giuliowaitforitdavide).
- ✏️ Fix typos in emoji docs and in some source examples. PR [#​10438](https://github.com/tiangolo/fastapi/pull/10438) by [@​afuetterer](https://github.com/afuetterer).
- ✏️ Fix typo in `docs/en/docs/reference/dependencies.md`. PR [#​10465](https://github.com/tiangolo/fastapi/pull/10465) by [@​suravshresth](https://github.com/suravshresth).
- ✏️ Fix typos and rewordings in `docs/en/docs/tutorial/body-nested-models.md`. PR [#​10468](https://github.com/tiangolo/fastapi/pull/10468) by [@​yogabonito](https://github.com/yogabonito).
- 📝 Update docs, remove references to removed `pydantic.Required` in `docs/en/docs/tutorial/query-params-str-validations.md`. PR [#​10469](https://github.com/tiangolo/fastapi/pull/10469) by [@​yogabonito](https://github.com/yogabonito).
- ✏️ Fix typo in `docs/en/docs/reference/index.md`. PR [#​10467](https://github.com/tiangolo/fastapi/pull/10467) by [@​tarsil](https://github.com/tarsil).
- 🔥 Remove unnecessary duplicated docstrings. PR [#​10484](https://github.com/tiangolo/fastapi/pull/10484) by [@​tiangolo](https://github.com/tiangolo).
##### Internal
- ✏️ Update Pydantic links to dotenv support. PR [#​10511](https://github.com/tiangolo/fastapi/pull/10511) by [@​White-Mask](https://github.com/White-Mask).
- ✏️ Update links in `docs/en/docs/async.md` and `docs/zh/docs/async.md` to make them relative. PR [#​10498](https://github.com/tiangolo/fastapi/pull/10498) by [@​hasnatsajid](https://github.com/hasnatsajid).
- ✏️ Fix links in `docs/em/docs/async.md`. PR [#​10507](https://github.com/tiangolo/fastapi/pull/10507) by [@​hasnatsajid](https://github.com/hasnatsajid).
- ✏️ Fix typo in `docs/em/docs/index.md`, Python 3.8. PR [#​10521](https://github.com/tiangolo/fastapi/pull/10521) by [@​kerriop](https://github.com/kerriop).
- ⬆ Bump pillow from 9.5.0 to 10.1.0. PR [#​10446](https://github.com/tiangolo/fastapi/pull/10446) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Update mkdocs-material requirement from <9.0.0,>=8.1.4 to >=8.1.4,<10.0.0. PR [#​5862](https://github.com/tiangolo/fastapi/pull/5862) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump mkdocs-material from 9.1.21 to 9.4.7. PR [#​10545](https://github.com/tiangolo/fastapi/pull/10545) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 👷 Install MkDocs Material Insiders only when secrets are available, for Dependabot. PR [#​10544](https://github.com/tiangolo/fastapi/pull/10544) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors badges, Databento. PR [#​10519](https://github.com/tiangolo/fastapi/pull/10519) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Adopt Ruff format. PR [#​10517](https://github.com/tiangolo/fastapi/pull/10517) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Add `CITATION.cff` file for academic citations. PR [#​10496](https://github.com/tiangolo/fastapi/pull/10496) by [@​tiangolo](https://github.com/tiangolo).
- 🐛 Fix overriding MKDocs theme lang in hook. PR [#​10490](https://github.com/tiangolo/fastapi/pull/10490) by [@​tiangolo](https://github.com/tiangolo).
- 🔥 Drop/close Gitter chat. Questions should go to GitHub Discussions, free conversations to Discord.. PR [#​10485](https://github.com/tiangolo/fastapi/pull/10485) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.104.0`](https://github.com/fastapi/fastapi/releases/tag/0.104.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.103.2...0.104.0)
#### Features
- ✨ Add reference (code API) docs with PEP 727, add subclass with custom docstrings for `BackgroundTasks`, refactor docs structure. PR [#​10392](https://github.com/tiangolo/fastapi/pull/10392) by [@​tiangolo](https://github.com/tiangolo). New docs at [FastAPI Reference - Code API](https://fastapi.tiangolo.com/reference/).
#### Upgrades
- ⬆️ Drop support for Python 3.7, require Python 3.8 or above. PR [#​10442](https://github.com/tiangolo/fastapi/pull/10442) by [@​tiangolo](https://github.com/tiangolo).
##### Internal
- ⬆ Bump dawidd6/action-download-artifact from 2.27.0 to 2.28.0. PR [#​10268](https://github.com/tiangolo/fastapi/pull/10268) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump actions/checkout from 3 to 4. PR [#​10208](https://github.com/tiangolo/fastapi/pull/10208) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.6 to 1.8.10. PR [#​10061](https://github.com/tiangolo/fastapi/pull/10061) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 🔧 Update sponsors, Bump.sh images. PR [#​10381](https://github.com/tiangolo/fastapi/pull/10381) by [@​tiangolo](https://github.com/tiangolo).
- 👥 Update FastAPI People. PR [#​10363](https://github.com/tiangolo/fastapi/pull/10363) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.103.2`](https://github.com/fastapi/fastapi/releases/tag/0.103.2)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.103.1...0.103.2)
##### Refactors
- ⬆️ Upgrade compatibility with Pydantic v2.4, new renamed functions and JSON Schema input/output models with default values. PR [#​10344](https://github.com/tiangolo/fastapi/pull/10344) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/extra-data-types.md`. PR [#​10132](https://github.com/tiangolo/fastapi/pull/10132) by [@​ArtemKhymenko](https://github.com/ArtemKhymenko).
- 🌐 Fix typos in French translations for `docs/fr/docs/advanced/path-operation-advanced-configuration.md`, `docs/fr/docs/alternatives.md`, `docs/fr/docs/async.md`, `docs/fr/docs/features.md`, `docs/fr/docs/help-fastapi.md`, `docs/fr/docs/index.md`, `docs/fr/docs/python-types.md`, `docs/fr/docs/tutorial/body.md`, `docs/fr/docs/tutorial/first-steps.md`, `docs/fr/docs/tutorial/query-params.md`. PR [#​10154](https://github.com/tiangolo/fastapi/pull/10154) by [@​s-rigaud](https://github.com/s-rigaud).
- 🌐 Add Chinese translation for `docs/zh/docs/async.md`. PR [#​5591](https://github.com/tiangolo/fastapi/pull/5591) by [@​mkdir700](https://github.com/mkdir700).
- 🌐 Update Chinese translation for `docs/tutorial/security/simple-oauth2.md`. PR [#​3844](https://github.com/tiangolo/fastapi/pull/3844) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Korean translation for `docs/ko/docs/deployment/cloud.md`. PR [#​10191](https://github.com/tiangolo/fastapi/pull/10191) by [@​Sion99](https://github.com/Sion99).
- 🌐 Add Japanese translation for `docs/ja/docs/deployment/https.md`. PR [#​10298](https://github.com/tiangolo/fastapi/pull/10298) by [@​tamtam-fitness](https://github.com/tamtam-fitness).
- 🌐 Fix typo in Russian translation for `docs/ru/docs/tutorial/body-fields.md`. PR [#​10224](https://github.com/tiangolo/fastapi/pull/10224) by [@​AlertRED](https://github.com/AlertRED).
- 🌐 Add Polish translation for `docs/pl/docs/help-fastapi.md`. PR [#​10121](https://github.com/tiangolo/fastapi/pull/10121) by [@​romabozhanovgithub](https://github.com/romabozhanovgithub).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/header-params.md`. PR [#​10226](https://github.com/tiangolo/fastapi/pull/10226) by [@​AlertRED](https://github.com/AlertRED).
- 🌐 Add Chinese translation for `docs/zh/docs/deployment/versions.md`. PR [#​10276](https://github.com/tiangolo/fastapi/pull/10276) by [@​xzmeng](https://github.com/xzmeng).
##### Internal
- 🔧 Update sponsors, remove Flint. PR [#​10349](https://github.com/tiangolo/fastapi/pull/10349) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Rename label "awaiting review" to "awaiting-review" to simplify search queries. PR [#​10343](https://github.com/tiangolo/fastapi/pull/10343) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, enable Svix (revert [#​10228](https://github.com/fastapi/fastapi/issues/10228)). PR [#​10253](https://github.com/tiangolo/fastapi/pull/10253) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, remove Svix. PR [#​10228](https://github.com/tiangolo/fastapi/pull/10228) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, add Bump.sh. PR [#​10227](https://github.com/tiangolo/fastapi/pull/10227) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.103.1`](https://github.com/fastapi/fastapi/releases/tag/0.103.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.103.0...0.103.1)
##### Fixes
- 📌 Pin AnyIO to < 4.0.0 to handle an incompatibility while upgrading to Starlette 0.31.1. PR [#​10194](https://github.com/tiangolo/fastapi/pull/10194) by [@​tiangolo](https://github.com/tiangolo).
##### Docs
- ✏️ Fix validation parameter name in docs, from `regex` to `pattern`. PR [#​10085](https://github.com/tiangolo/fastapi/pull/10085) by [@​pablodorrio](https://github.com/pablodorrio).
- ✏️ Fix indent format in `docs/en/docs/deployment/server-workers.md`. PR [#​10066](https://github.com/tiangolo/fastapi/pull/10066) by [@​tamtam-fitness](https://github.com/tamtam-fitness).
- ✏️ Fix Pydantic examples in tutorial for Python types. PR [#​9961](https://github.com/tiangolo/fastapi/pull/9961) by [@​rahulsalgare](https://github.com/rahulsalgare).
- ✏️ Fix link to Pydantic docs in `docs/en/docs/tutorial/extra-data-types.md`. PR [#​10155](https://github.com/tiangolo/fastapi/pull/10155) by [@​hasnatsajid](https://github.com/hasnatsajid).
- ✏️ Fix typo in `docs/en/docs/tutorial/handling-errors.md`. PR [#​10170](https://github.com/tiangolo/fastapi/pull/10170) by [@​poupapaa](https://github.com/poupapaa).
- ✏️ Fix typo in `docs/en/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md`. PR [#​10172](https://github.com/tiangolo/fastapi/pull/10172) by [@​ragul-kachiappan](https://github.com/ragul-kachiappan).
##### Translations
- 🌐 Remove duplicate line in translation for `docs/pt/docs/tutorial/path-params.md`. PR [#​10126](https://github.com/tiangolo/fastapi/pull/10126) by [@​LecoOliveira](https://github.com/LecoOliveira).
- 🌐 Add Yoruba translation for `docs/yo/docs/index.md`. PR [#​10033](https://github.com/tiangolo/fastapi/pull/10033) by [@​AfolabiOlaoluwa](https://github.com/AfolabiOlaoluwa).
- 🌐 Add Ukrainian translation for `docs/uk/docs/python-types.md`. PR [#​10080](https://github.com/tiangolo/fastapi/pull/10080) by [@​rostik1410](https://github.com/rostik1410).
- 🌐 Add Vietnamese translations for `docs/vi/docs/tutorial/first-steps.md` and `docs/vi/docs/tutorial/index.md`. PR [#​10088](https://github.com/tiangolo/fastapi/pull/10088) by [@​magiskboy](https://github.com/magiskboy).
- 🌐 Add Ukrainian translation for `docs/uk/docs/alternatives.md`. PR [#​10060](https://github.com/tiangolo/fastapi/pull/10060) by [@​whysage](https://github.com/whysage).
- 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/index.md`. PR [#​10079](https://github.com/tiangolo/fastapi/pull/10079) by [@​rostik1410](https://github.com/rostik1410).
- ✏️ Fix typos in `docs/en/docs/how-to/separate-openapi-schemas.md` and `docs/en/docs/tutorial/schema-extra-example.md`. PR [#​10189](https://github.com/tiangolo/fastapi/pull/10189) by [@​xzmeng](https://github.com/xzmeng).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/generate-clients.md`. PR [#​9883](https://github.com/tiangolo/fastapi/pull/9883) by [@​funny-cat-happy](https://github.com/funny-cat-happy).
##### Refactors
- ✏️ Fix typos in comment in `fastapi/applications.py`. PR [#​10045](https://github.com/tiangolo/fastapi/pull/10045) by [@​AhsanSheraz](https://github.com/AhsanSheraz).
- ✅ Add missing test for OpenAPI examples, it was missing in coverage. PR [#​10188](https://github.com/tiangolo/fastapi/pull/10188) by [@​tiangolo](https://github.com/tiangolo).
##### Internal
- 👥 Update FastAPI People. PR [#​10186](https://github.com/tiangolo/fastapi/pull/10186) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.103.0`](https://github.com/fastapi/fastapi/releases/tag/0.103.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.102.0...0.103.0)
##### Features
- ✨ Add support for `openapi_examples` in all FastAPI parameters. PR [#​10152](https://github.com/tiangolo/fastapi/pull/10152) by [@​tiangolo](https://github.com/tiangolo).
- New docs: [OpenAPI-specific examples](https://fastapi.tiangolo.com/tutorial/schema-extra-example/#openapi-specific-examples).
##### Docs
- 📝 Add note to docs about Separate Input and Output Schemas with FastAPI version. PR [#​10150](https://github.com/tiangolo/fastapi/pull/10150) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.102.0`](https://github.com/fastapi/fastapi/releases/tag/0.102.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.101.1...0.102.0)
##### Features
- ✨ Add support for disabling the separation of input and output JSON Schemas in OpenAPI with Pydantic v2 with `separate_input_output_schemas=False`. PR [#​10145](https://github.com/tiangolo/fastapi/pull/10145) by [@​tiangolo](https://github.com/tiangolo).
- New docs [Separate OpenAPI Schemas for Input and Output or Not](https://fastapi.tiangolo.com/how-to/separate-openapi-schemas/).
- This PR also includes a new setup (internal tools) for generating screenshots for the docs.
##### Refactors
- ♻️ Refactor tests for new Pydantic 2.2.1. PR [#​10115](https://github.com/tiangolo/fastapi/pull/10115) by [@​tiangolo](https://github.com/tiangolo).
##### Docs
- 📝 Add new docs section, How To - Recipes, move docs that don't have to be read by everyone to How To. PR [#​10114](https://github.com/tiangolo/fastapi/pull/10114) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Update Advanced docs, add links to sponsor courses. PR [#​10113](https://github.com/tiangolo/fastapi/pull/10113) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Update docs for generating clients. PR [#​10112](https://github.com/tiangolo/fastapi/pull/10112) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Tweak MkDocs and add redirects. PR [#​10111](https://github.com/tiangolo/fastapi/pull/10111) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Restructure docs for cloud providers, include links to sponsors. PR [#​10110](https://github.com/tiangolo/fastapi/pull/10110) by [@​tiangolo](https://github.com/tiangolo).
##### Internal
- 🔧 Update sponsors, add Speakeasy. PR [#​10098](https://github.com/tiangolo/fastapi/pull/10098) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.101.1`](https://github.com/fastapi/fastapi/releases/tag/0.101.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.101.0...0.101.1)
##### Fixes
- ✨ Add `ResponseValidationError` printable details, to show up in server error logs. PR [#​10078](https://github.com/tiangolo/fastapi/pull/10078) by [@​tiangolo](https://github.com/tiangolo).
##### Refactors
- ✏️ Fix typo in deprecation warnings in `fastapi/params.py`. PR [#​9854](https://github.com/tiangolo/fastapi/pull/9854) by [@​russbiggs](https://github.com/russbiggs).
- ✏️ Fix typos in comments on internal code in `fastapi/concurrency.py` and `fastapi/routing.py`. PR [#​9590](https://github.com/tiangolo/fastapi/pull/9590) by [@​ElliottLarsen](https://github.com/ElliottLarsen).
##### Docs
- ✏️ Fix typo in release notes. PR [#​9835](https://github.com/tiangolo/fastapi/pull/9835) by [@​francisbergin](https://github.com/francisbergin).
- 📝 Add external article: Build an SMS Spam Classifier Serverless Database with FaunaDB and FastAPI. PR [#​9847](https://github.com/tiangolo/fastapi/pull/9847) by [@​adejumoridwan](https://github.com/adejumoridwan).
- 📝 Fix typo in `docs/en/docs/contributing.md`. PR [#​9878](https://github.com/tiangolo/fastapi/pull/9878) by [@​VicenteMerino](https://github.com/VicenteMerino).
- 📝 Fix code highlighting in `docs/en/docs/tutorial/bigger-applications.md`. PR [#​9806](https://github.com/tiangolo/fastapi/pull/9806) by [@​theonlykingpin](https://github.com/theonlykingpin).
##### Translations
- 🌐 Add Japanese translation for `docs/ja/docs/deployment/concepts.md`. PR [#​10062](https://github.com/tiangolo/fastapi/pull/10062) by [@​tamtam-fitness](https://github.com/tamtam-fitness).
- 🌐 Add Japanese translation for `docs/ja/docs/deployment/server-workers.md`. PR [#​10064](https://github.com/tiangolo/fastapi/pull/10064) by [@​tamtam-fitness](https://github.com/tamtam-fitness).
- 🌐 Update Japanese translation for `docs/ja/docs/deployment/docker.md`. PR [#​10073](https://github.com/tiangolo/fastapi/pull/10073) by [@​tamtam-fitness](https://github.com/tamtam-fitness).
- 🌐 Add Ukrainian translation for `docs/uk/docs/fastapi-people.md`. PR [#​10059](https://github.com/tiangolo/fastapi/pull/10059) by [@​rostik1410](https://github.com/rostik1410).
- 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/cookie-params.md`. PR [#​10032](https://github.com/tiangolo/fastapi/pull/10032) by [@​rostik1410](https://github.com/rostik1410).
- 🌐 Add Russian translation for `docs/ru/docs/deployment/docker.md`. PR [#​9971](https://github.com/tiangolo/fastapi/pull/9971) by [@​Xewus](https://github.com/Xewus).
- 🌐 Add Vietnamese translation for `docs/vi/docs/python-types.md`. PR [#​10047](https://github.com/tiangolo/fastapi/pull/10047) by [@​magiskboy](https://github.com/magiskboy).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/dependencies/global-dependencies.md`. PR [#​9970](https://github.com/tiangolo/fastapi/pull/9970) by [@​dudyaosuplayer](https://github.com/dudyaosuplayer).
- 🌐 Add Urdu translation for `docs/ur/docs/benchmarks.md`. PR [#​9974](https://github.com/tiangolo/fastapi/pull/9974) by [@​AhsanSheraz](https://github.com/AhsanSheraz).
##### Internal
- 🔧 Add sponsor Porter. PR [#​10051](https://github.com/tiangolo/fastapi/pull/10051) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, add Jina back as bronze sponsor. PR [#​10050](https://github.com/tiangolo/fastapi/pull/10050) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Bump mypy from 1.4.0 to 1.4.1. PR [#​9756](https://github.com/tiangolo/fastapi/pull/9756) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump mkdocs-material from 9.1.17 to 9.1.21. PR [#​9960](https://github.com/tiangolo/fastapi/pull/9960) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
### [`v0.101.0`](https://github.com/fastapi/fastapi/releases/tag/0.101.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.100.1...0.101.0)
##### Features
- ✨ Enable Pydantic's serialization mode for responses, add support for Pydantic's `computed_field`, better OpenAPI for response models, proper required attributes, better generated clients. PR [#​10011](https://github.com/tiangolo/fastapi/pull/10011) by [@​tiangolo](https://github.com/tiangolo).
##### Refactors
- ✅ Fix tests for compatibility with pydantic 2.1.1. PR [#​9943](https://github.com/tiangolo/fastapi/pull/9943) by [@​dmontagu](https://github.com/dmontagu).
- ✅ Fix test error in Windows for `jsonable_encoder`. PR [#​9840](https://github.com/tiangolo/fastapi/pull/9840) by [@​iudeen](https://github.com/iudeen).
##### Upgrades
- 📌 Do not allow Pydantic 2.1.0 that breaks (require 2.1.1). PR [#​10012](https://github.com/tiangolo/fastapi/pull/10012) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/security/index.md`. PR [#​9963](https://github.com/tiangolo/fastapi/pull/9963) by [@​eVery1337](https://github.com/eVery1337).
- 🌐 Remove Vietnamese note about missing translation. PR [#​9957](https://github.com/tiangolo/fastapi/pull/9957) by [@​tiangolo](https://github.com/tiangolo).
##### Internal
- 👷 Add GitHub Actions step dump context to debug external failures. PR [#​10008](https://github.com/tiangolo/fastapi/pull/10008) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Restore MkDocs Material pin after the fix. PR [#​10001](https://github.com/tiangolo/fastapi/pull/10001) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update the Question template to ask for the Pydantic version. PR [#​10000](https://github.com/tiangolo/fastapi/pull/10000) by [@​tiangolo](https://github.com/tiangolo).
- 📍 Update MkDocs Material dependencies. PR [#​9986](https://github.com/tiangolo/fastapi/pull/9986) by [@​tiangolo](https://github.com/tiangolo).
- 👥 Update FastAPI People. PR [#​9999](https://github.com/tiangolo/fastapi/pull/9999) by [@​tiangolo](https://github.com/tiangolo).
- 🐳 Update Dockerfile with compatibility versions, to upgrade later. PR [#​9998](https://github.com/tiangolo/fastapi/pull/9998) by [@​tiangolo](https://github.com/tiangolo).
- ➕ Add pydantic-settings to FastAPI People dependencies. PR [#​9988](https://github.com/tiangolo/fastapi/pull/9988) by [@​tiangolo](https://github.com/tiangolo).
- ♻️ Update FastAPI People logic with new Pydantic. PR [#​9985](https://github.com/tiangolo/fastapi/pull/9985) by [@​tiangolo](https://github.com/tiangolo).
- 🍱 Update sponsors, Fern badge. PR [#​9982](https://github.com/tiangolo/fastapi/pull/9982) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Deploy docs to Cloudflare Pages. PR [#​9978](https://github.com/tiangolo/fastapi/pull/9978) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsor Fern. PR [#​9979](https://github.com/tiangolo/fastapi/pull/9979) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update CI debug mode with Tmate. PR [#​9977](https://github.com/tiangolo/fastapi/pull/9977) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.100.1`](https://github.com/fastapi/fastapi/releases/tag/0.100.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.100.0...0.100.1)
##### Fixes
- 🐛 Replace `MultHostUrl` to `AnyUrl` for compatibility with older versions of Pydantic v1. PR [#​9852](https://github.com/tiangolo/fastapi/pull/9852) by [@​Kludex](https://github.com/Kludex).
##### Docs
- 📝 Update links for self-hosted Swagger UI, point to v5, for OpenAPI 31.0. PR [#​9834](https://github.com/tiangolo/fastapi/pull/9834) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/body.md`. PR [#​4574](https://github.com/tiangolo/fastapi/pull/4574) by [@​ss-o-furda](https://github.com/ss-o-furda).
- 🌐 Add Vietnamese translation for `docs/vi/docs/features.md` and `docs/vi/docs/index.md`. PR [#​3006](https://github.com/tiangolo/fastapi/pull/3006) by [@​magiskboy](https://github.com/magiskboy).
- 🌐 Add Korean translation for `docs/ko/docs/async.md`. PR [#​4179](https://github.com/tiangolo/fastapi/pull/4179) by [@​NinaHwang](https://github.com/NinaHwang).
- 🌐 Add Chinese translation for `docs/zh/docs/tutorial/background-tasks.md`. PR [#​9812](https://github.com/tiangolo/fastapi/pull/9812) by [@​wdh99](https://github.com/wdh99).
- 🌐 Add French translation for `docs/fr/docs/tutorial/query-params-str-validations.md`. PR [#​4075](https://github.com/tiangolo/fastapi/pull/4075) by [@​Smlep](https://github.com/Smlep).
- 🌐 Add French translation for `docs/fr/docs/tutorial/index.md`. PR [#​2234](https://github.com/tiangolo/fastapi/pull/2234) by [@​JulianMaurin](https://github.com/JulianMaurin).
- 🌐 Add French translation for `docs/fr/docs/contributing.md`. PR [#​2132](https://github.com/tiangolo/fastapi/pull/2132) by [@​JulianMaurin](https://github.com/JulianMaurin).
- 🌐 Add French translation for `docs/fr/docs/benchmarks.md`. PR [#​2155](https://github.com/tiangolo/fastapi/pull/2155) by [@​clemsau](https://github.com/clemsau).
- 🌐 Update Chinese translations with new source files. PR [#​9738](https://github.com/tiangolo/fastapi/pull/9738) by [@​mahone3297](https://github.com/mahone3297).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/request-forms.md`. PR [#​9841](https://github.com/tiangolo/fastapi/pull/9841) by [@​dedkot01](https://github.com/dedkot01).
- 🌐 Update Chinese translation for `docs/zh/docs/tutorial/handling-errors.md`. PR [#​9485](https://github.com/tiangolo/fastapi/pull/9485) by [@​Creat55](https://github.com/Creat55).
##### Internal
- 🔧 Update sponsors, add Fern. PR [#​9956](https://github.com/tiangolo/fastapi/pull/9956) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update FastAPI People token. PR [#​9844](https://github.com/tiangolo/fastapi/pull/9844) by [@​tiangolo](https://github.com/tiangolo).
- 👥 Update FastAPI People. PR [#​9775](https://github.com/tiangolo/fastapi/pull/9775) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update MkDocs Material token. PR [#​9843](https://github.com/tiangolo/fastapi/pull/9843) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update token for latest changes. PR [#​9842](https://github.com/tiangolo/fastapi/pull/9842) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.100.0`](https://github.com/fastapi/fastapi/releases/tag/0.100.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.99.1...0.100.0)
✨ Support for **Pydantic v2** ✨
Pydantic version 2 has the **core** re-written in **Rust** and includes a lot of improvements and features, for example:
- Improved **correctness** in corner cases.
- **Safer** types.
- Better **performance** and **less energy** consumption.
- Better **extensibility**.
- etc.
...all this while keeping the **same Python API**. In most of the cases, for simple models, you can simply upgrade the Pydantic version and get all the benefits. 🚀
In some cases, for pure data validation and processing, you can get performance improvements of **20x** or more. This means 2,000% or more. 🤯
When you use **FastAPI**, there's a lot more going on, processing the request and response, handling dependencies, executing **your own code**, and particularly, **waiting for the network**. But you will probably still get some nice performance improvements just from the upgrade.
The focus of this release is **compatibility** with Pydantic v1 and v2, to make sure your current apps keep working. Later there will be more focus on refactors, correctness, code improvements, and then **performance** improvements. Some third-party early beta testers that ran benchmarks on the beta releases of FastAPI reported improvements of **2x - 3x**. Which is not bad for just doing `pip install --upgrade fastapi pydantic`. This was not an official benchmark and I didn't check it myself, but it's a good sign.
##### Migration
Check out the [Pydantic migration guide](https://docs.pydantic.dev/2.0/migration/).
For the things that need changes in your Pydantic models, the Pydantic team built [`bump-pydantic`](https://github.com/pydantic/bump-pydantic).
A command line tool that will **process your code** and update most of the things **automatically** for you. Make sure you have your code in git first, and review each of the changes to make sure everything is correct before committing the changes.
##### Pydantic v1
**This version of FastAPI still supports Pydantic v1**. And although Pydantic v1 will be deprecated at some point, ti will still be supported for a while.
This means that you can install the new Pydantic v2, and if something fails, you can install Pydantic v1 while you fix any problems you might have, but having the latest FastAPI.
There are **tests for both Pydantic v1 and v2**, and test **coverage** is kept at **100%**.
##### Changes
- There are **new parameter** fields supported by Pydantic `Field()` for:
- `Path()`
- `Query()`
- `Header()`
- `Cookie()`
- `Body()`
- `Form()`
- `File()`
- The new parameter fields are:
- `default_factory`
- `alias_priority`
- `validation_alias`
- `serialization_alias`
- `discriminator`
- `strict`
- `multiple_of`
- `allow_inf_nan`
- `max_digits`
- `decimal_places`
- `json_schema_extra`
...you can read about them in the Pydantic docs.
- The parameter `regex` has been deprecated and replaced by `pattern`.
- You can read more about it in the docs for [Query Parameters and String Validations: Add regular expressions](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#add-regular-expressions).
- New Pydantic models use an improved and simplified attribute `model_config` that takes a simple dict instead of an internal class `Config` for their configuration.
- You can read more about it in the docs for [Declare Request Example Data](https://fastapi.tiangolo.com/tutorial/schema-extra-example/).
- The attribute `schema_extra` for the internal class `Config` has been replaced by the key `json_schema_extra` in the new `model_config` dict.
- You can read more about it in the docs for [Declare Request Example Data](https://fastapi.tiangolo.com/tutorial/schema-extra-example/).
- When you install `"fastapi[all]"` it now also includes:
- <a href="https://docs.pydantic.dev/latest/usage/pydantic_settings/" target="_blank"><code>pydantic-settings</code></a> - for settings management.
- <a href="https://docs.pydantic.dev/latest/usage/types/extra_types/extra_types/" target="_blank"><code>pydantic-extra-types</code></a> - for extra types to be used with Pydantic.
- Now Pydantic Settings is an additional optional package (included in `"fastapi[all]"`). To use settings you should now import `from pydantic_settings import BaseSettings` instead of importing from `pydantic` directly.
- You can read more about it in the docs for [Settings and Environment Variables](https://fastapi.tiangolo.com/advanced/settings/).
- PR [#​9816](https://github.com/tiangolo/fastapi/pull/9816) by [@​tiangolo](https://github.com/tiangolo), included all the work done (in multiple PRs) on the beta branch (`main-pv2`).
### [`v0.99.1`](https://github.com/fastapi/fastapi/releases/tag/0.99.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.99.0...0.99.1)
##### Fixes
- 🐛 Fix JSON Schema accepting bools as valid JSON Schemas, e.g. `additionalProperties: false`. PR [#​9781](https://github.com/tiangolo/fastapi/pull/9781) by [@​tiangolo](https://github.com/tiangolo).
##### Docs
- 📝 Update source examples to use new JSON Schema examples field. PR [#​9776](https://github.com/tiangolo/fastapi/pull/9776) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.99.0`](https://github.com/fastapi/fastapi/releases/tag/0.99.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.98.0...0.99.0)
**Note**: this is the **last release before supporting Pydantic v2**. You can try out the beta with support for Pydantic v2 now, a new beta supporting Pydantic v2 with these same changes from this release will be available in the next hours/days. And the final version (0.100.0) with support for Pydantic v2 will be released in the next days (next week).
Now, back to this release (this one doesn't include the beta support for Pydantic v2).
This release has ✨ **OpenAPI 3.1.0** ✨ 🎉
##### Features
- ✨ Add support for OpenAPI 3.1.0. PR [#​9770](https://github.com/tiangolo/fastapi/pull/9770) by [@​tiangolo](https://github.com/tiangolo).
- New support for documenting **webhooks**, read the new docs here: <a href="https://fastapi.tiangolo.com/advanced/openapi-webhooks/" class="external-link" target="_blank">Advanced User Guide: OpenAPI Webhooks</a>.
- Upgrade OpenAPI 3.1.0, this uses JSON Schema 2020-12.
- Upgrade Swagger UI to version 5.x.x, that supports OpenAPI 3.1.0.
- Updated `examples` field in `Query()`, `Cookie()`, `Body()`, etc. based on the latest JSON Schema and OpenAPI. Now it takes a list of examples and they are included directly in the JSON Schema, not outside. Read more about it (including the historical technical details) in the updated docs: <a href="https://fastapi.tiangolo.com/tutorial/schema-extra-example/" class="external-link" target="_blank">Tutorial: Declare Request Example Data</a>.
- ✨ Add support for `deque` objects and children in `jsonable_encoder`. PR [#​9433](https://github.com/tiangolo/fastapi/pull/9433) by [@​cranium](https://github.com/cranium).
##### Docs
- 📝 Fix form for the FastAPI and friends newsletter. PR [#​9749](https://github.com/tiangolo/fastapi/pull/9749) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- 🌐 Add Persian translation for `docs/fa/docs/advanced/sub-applications.md`. PR [#​9692](https://github.com/tiangolo/fastapi/pull/9692) by [@​mojtabapaso](https://github.com/mojtabapaso).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/response-model.md`. PR [#​9675](https://github.com/tiangolo/fastapi/pull/9675) by [@​glsglsgls](https://github.com/glsglsgls).
##### Internal
- 🔨 Enable linenums in MkDocs Material during local live development to simplify highlighting code. PR [#​9769](https://github.com/tiangolo/fastapi/pull/9769) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Update httpx requirement from <0.24.0,>=0.23.0 to >=0.23.0,<0.25.0. PR [#​9724](https://github.com/tiangolo/fastapi/pull/9724) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump mkdocs-material from 9.1.16 to 9.1.17. PR [#​9746](https://github.com/tiangolo/fastapi/pull/9746) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 🔥 Remove missing translation dummy pages, no longer necessary. PR [#​9751](https://github.com/tiangolo/fastapi/pull/9751) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ \[pre-commit.ci] pre-commit autoupdate. PR [#​9259](https://github.com/tiangolo/fastapi/pull/9259) by [@​pre-commit-ci\[bot\]](https://github.com/apps/pre-commit-ci).
- ✨ Add Material for MkDocs Insiders features and cards. PR [#​9748](https://github.com/tiangolo/fastapi/pull/9748) by [@​tiangolo](https://github.com/tiangolo).
- 🔥 Remove languages without translations. PR [#​9743](https://github.com/tiangolo/fastapi/pull/9743) by [@​tiangolo](https://github.com/tiangolo).
- ✨ Refactor docs for building scripts, use MkDocs hooks, simplify (remove) configs for languages. PR [#​9742](https://github.com/tiangolo/fastapi/pull/9742) by [@​tiangolo](https://github.com/tiangolo).
- 🔨 Add MkDocs hook that renames sections based on the first index file. PR [#​9737](https://github.com/tiangolo/fastapi/pull/9737) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Make cron jobs run only on main repo, not on forks, to avoid error notifications from missing tokens. PR [#​9735](https://github.com/tiangolo/fastapi/pull/9735) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update MkDocs for other languages. PR [#​9734](https://github.com/tiangolo/fastapi/pull/9734) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Refactor Docs CI, run in multiple workers with a dynamic matrix to optimize speed. PR [#​9732](https://github.com/tiangolo/fastapi/pull/9732) by [@​tiangolo](https://github.com/tiangolo).
- 🔥 Remove old internal GitHub Action watch-previews that is no longer needed. PR [#​9730](https://github.com/tiangolo/fastapi/pull/9730) by [@​tiangolo](https://github.com/tiangolo).
- ⬆️ Upgrade MkDocs and MkDocs Material. PR [#​9729](https://github.com/tiangolo/fastapi/pull/9729) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Build and deploy docs only on docs changes. PR [#​9728](https://github.com/tiangolo/fastapi/pull/9728) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.98.0`](https://github.com/fastapi/fastapi/releases/tag/0.98.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.97.0...0.98.0)
**Note**: please also help me try out the beta with support for Pydantic v2: https://github.com/tiangolo/fastapi/releases/tag/0.100.0-beta1
Now, back to this release (this one doesn't include the beta support for Pydantic v2).
##### Features
- ✨ Allow disabling `redirect_slashes` at the FastAPI app level. PR [#​3432](https://github.com/tiangolo/fastapi/pull/3432) by [@​cyberlis](https://github.com/cyberlis).
##### Docs
- 📝 Update docs on Pydantic using ujson internally. PR [#​5804](https://github.com/tiangolo/fastapi/pull/5804) by [@​mvasilkov](https://github.com/mvasilkov).
- ✏ Rewording in `docs/en/docs/tutorial/debugging.md`. PR [#​9581](https://github.com/tiangolo/fastapi/pull/9581) by [@​ivan-abc](https://github.com/ivan-abc).
- 📝 Add german blog post (Domain-driven Design mit Python und FastAPI). PR [#​9261](https://github.com/tiangolo/fastapi/pull/9261) by [@​msander](https://github.com/msander).
- ✏️ Tweak wording in `docs/en/docs/tutorial/security/index.md`. PR [#​9561](https://github.com/tiangolo/fastapi/pull/9561) by [@​jyothish-mohan](https://github.com/jyothish-mohan).
- 📝 Update `Annotated` notes in `docs/en/docs/tutorial/schema-extra-example.md`. PR [#​9620](https://github.com/tiangolo/fastapi/pull/9620) by [@​Alexandrhub](https://github.com/Alexandrhub).
- ✏️ Fix typo `Annotation` -> `Annotated` in `docs/en/docs/tutorial/query-params-str-validations.md`. PR [#​9625](https://github.com/tiangolo/fastapi/pull/9625) by [@​mccricardo](https://github.com/mccricardo).
- 📝 Use in memory database for testing SQL in docs. PR [#​1223](https://github.com/tiangolo/fastapi/pull/1223) by [@​HarshaLaxman](https://github.com/HarshaLaxman).
##### Translations
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/metadata.md`. PR [#​9681](https://github.com/tiangolo/fastapi/pull/9681) by [@​TabarakoAkula](https://github.com/TabarakoAkula).
- 🌐 Fix typo in Spanish translation for `docs/es/docs/tutorial/first-steps.md`. PR [#​9571](https://github.com/tiangolo/fastapi/pull/9571) by [@​lilidl-nft](https://github.com/lilidl-nft).
- 🌐 Add Russian translation for `docs/tutorial/path-operation-configuration.md`. PR [#​9696](https://github.com/tiangolo/fastapi/pull/9696) by [@​TabarakoAkula](https://github.com/TabarakoAkula).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/security/index.md`. PR [#​9666](https://github.com/tiangolo/fastapi/pull/9666) by [@​lordqyxz](https://github.com/lordqyxz).
- 🌐 Add Chinese translations for `docs/zh/docs/advanced/settings.md`. PR [#​9652](https://github.com/tiangolo/fastapi/pull/9652) by [@​ChoyeonChern](https://github.com/ChoyeonChern).
- 🌐 Add Chinese translations for `docs/zh/docs/advanced/websockets.md`. PR [#​9651](https://github.com/tiangolo/fastapi/pull/9651) by [@​ChoyeonChern](https://github.com/ChoyeonChern).
- 🌐 Add Chinese translation for `docs/zh/docs/tutorial/testing.md`. PR [#​9641](https://github.com/tiangolo/fastapi/pull/9641) by [@​wdh99](https://github.com/wdh99).
- 🌐 Add Russian translation for `docs/tutorial/extra-models.md`. PR [#​9619](https://github.com/tiangolo/fastapi/pull/9619) by [@​ivan-abc](https://github.com/ivan-abc).
- 🌐 Add Russian translation for `docs/tutorial/cors.md`. PR [#​9608](https://github.com/tiangolo/fastapi/pull/9608) by [@​ivan-abc](https://github.com/ivan-abc).
- 🌐 Add Polish translation for `docs/pl/docs/features.md`. PR [#​5348](https://github.com/tiangolo/fastapi/pull/5348) by [@​mbroton](https://github.com/mbroton).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/body-nested-models.md`. PR [#​9605](https://github.com/tiangolo/fastapi/pull/9605) by [@​Alexandrhub](https://github.com/Alexandrhub).
##### Internal
- ⬆ Bump ruff from 0.0.272 to 0.0.275. PR [#​9721](https://github.com/tiangolo/fastapi/pull/9721) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Update uvicorn\[standard] requirement from <0.21.0,>=0.12.0 to >=0.12.0,<0.23.0. PR [#​9463](https://github.com/tiangolo/fastapi/pull/9463) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump mypy from 1.3.0 to 1.4.0. PR [#​9719](https://github.com/tiangolo/fastapi/pull/9719) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Update pre-commit requirement from <3.0.0,>=2.17.0 to >=2.17.0,<4.0.0. PR [#​9251](https://github.com/tiangolo/fastapi/pull/9251) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.5 to 1.8.6. PR [#​9482](https://github.com/tiangolo/fastapi/pull/9482) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ✏️ Fix tooltips for light/dark theme toggler in docs. PR [#​9588](https://github.com/tiangolo/fastapi/pull/9588) by [@​pankaj1707k](https://github.com/pankaj1707k).
- 🔧 Set minimal hatchling version needed to build the package. PR [#​9240](https://github.com/tiangolo/fastapi/pull/9240) by [@​mgorny](https://github.com/mgorny).
- 📝 Add repo link to PyPI. PR [#​9559](https://github.com/tiangolo/fastapi/pull/9559) by [@​JacobCoffee](https://github.com/JacobCoffee).
- ✏️ Fix typos in data for tests. PR [#​4958](https://github.com/tiangolo/fastapi/pull/4958) by [@​ryanrussell](https://github.com/ryanrussell).
- 🔧 Update sponsors, add Flint. PR [#​9699](https://github.com/tiangolo/fastapi/pull/9699) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Lint in CI only once, only with one version of Python, run tests with all of them. PR [#​9686](https://github.com/tiangolo/fastapi/pull/9686) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.97.0`](https://github.com/fastapi/fastapi/releases/tag/0.97.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.96.1...0.97.0)
##### Features
- ✨ Add support for `dependencies` in WebSocket routes. PR [#​4534](https://github.com/tiangolo/fastapi/pull/4534) by [@​paulo-raca](https://github.com/paulo-raca).
- ✨ Add exception handler for `WebSocketRequestValidationError` (which also allows to override it). PR [#​6030](https://github.com/tiangolo/fastapi/pull/6030) by [@​kristjanvalur](https://github.com/kristjanvalur).
##### Refactors
- ⬆️ Upgrade and fully migrate to Ruff, remove isort, includes a couple of tweaks suggested by the new version of Ruff. PR [#​9660](https://github.com/tiangolo/fastapi/pull/9660) by [@​tiangolo](https://github.com/tiangolo).
- ♻️ Update internal type annotations and upgrade mypy. PR [#​9658](https://github.com/tiangolo/fastapi/pull/9658) by [@​tiangolo](https://github.com/tiangolo).
- ♻️ Simplify `AsyncExitStackMiddleware` as without Python 3.6 `AsyncExitStack` is always available. PR [#​9657](https://github.com/tiangolo/fastapi/pull/9657) by [@​tiangolo](https://github.com/tiangolo).
##### Upgrades
- ⬆️ Upgrade Black. PR [#​9661](https://github.com/tiangolo/fastapi/pull/9661) by [@​tiangolo](https://github.com/tiangolo).
##### Internal
- 💚 Update CI cache to fix installs when dependencies change. PR [#​9659](https://github.com/tiangolo/fastapi/pull/9659) by [@​tiangolo](https://github.com/tiangolo).
- ⬇️ Separate requirements for development into their own requirements.txt files, they shouldn't be extras. PR [#​9655](https://github.com/tiangolo/fastapi/pull/9655) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.96.1`](https://github.com/fastapi/fastapi/releases/tag/0.96.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.96.0...0.96.1)
##### Fixes
- 🐛 Fix `HTTPException` header type annotations. PR [#​9648](https://github.com/tiangolo/fastapi/pull/9648) by [@​tiangolo](https://github.com/tiangolo).
- 🐛 Fix OpenAPI model fields int validations, `gte` to `ge`. PR [#​9635](https://github.com/tiangolo/fastapi/pull/9635) by [@​tiangolo](https://github.com/tiangolo).
##### Upgrades
- 📌 Update minimum version of Pydantic to >=1.7.4. This fixes an issue when trying to use an old version of Pydantic. PR [#​9567](https://github.com/tiangolo/fastapi/pull/9567) by [@​Kludex](https://github.com/Kludex).
##### Refactors
- ♻ Remove `media_type` from `ORJSONResponse` as it's inherited from the parent class. PR [#​5805](https://github.com/tiangolo/fastapi/pull/5805) by [@​Kludex](https://github.com/Kludex).
- ♻ Instantiate `HTTPException` only when needed, optimization refactor. PR [#​5356](https://github.com/tiangolo/fastapi/pull/5356) by [@​pawamoy](https://github.com/pawamoy).
##### Docs
- 🔥 Remove link to Pydantic's benchmark, as it was removed there. PR [#​5811](https://github.com/tiangolo/fastapi/pull/5811) by [@​Kludex](https://github.com/Kludex).
##### Translations
- 🌐 Fix spelling in Indonesian translation of `docs/id/docs/tutorial/index.md`. PR [#​5635](https://github.com/tiangolo/fastapi/pull/5635) by [@​purwowd](https://github.com/purwowd).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/index.md`. PR [#​5896](https://github.com/tiangolo/fastapi/pull/5896) by [@​Wilidon](https://github.com/Wilidon).
- 🌐 Add Chinese translations for `docs/zh/docs/advanced/response-change-status-code.md` and `docs/zh/docs/advanced/response-headers.md`. PR [#​9544](https://github.com/tiangolo/fastapi/pull/9544) by [@​ChoyeonChern](https://github.com/ChoyeonChern).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/schema-extra-example.md`. PR [#​9621](https://github.com/tiangolo/fastapi/pull/9621) by [@​Alexandrhub](https://github.com/Alexandrhub).
##### Internal
- 🔧 Add sponsor Platform.sh. PR [#​9650](https://github.com/tiangolo/fastapi/pull/9650) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Add custom token to Smokeshow and Preview Docs for download-artifact, to prevent API rate limits. PR [#​9646](https://github.com/tiangolo/fastapi/pull/9646) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Add custom tokens for GitHub Actions to avoid rate limits. PR [#​9647](https://github.com/tiangolo/fastapi/pull/9647) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.96.0`](https://github.com/fastapi/fastapi/releases/tag/0.96.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.95.2...0.96.0)
##### Features
- ⚡ Update `create_cloned_field` to use a global cache and improve startup performance. PR [#​4645](https://github.com/tiangolo/fastapi/pull/4645) by [@​madkinsz](https://github.com/madkinsz) and previous original PR by [@​huonw](https://github.com/huonw).
##### Docs
- 📝 Update Deta deployment tutorial for compatibility with Deta Space. PR [#​6004](https://github.com/tiangolo/fastapi/pull/6004) by [@​mikBighne98](https://github.com/mikBighne98).
- ✏️ Fix typo in Deta deployment tutorial. PR [#​9501](https://github.com/tiangolo/fastapi/pull/9501) by [@​lemonyte](https://github.com/lemonyte).
##### Translations
- 🌐 Add Russian translation for `docs/tutorial/body.md`. PR [#​3885](https://github.com/tiangolo/fastapi/pull/3885) by [@​solomein-sv](https://github.com/solomein-sv).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/static-files.md`. PR [#​9580](https://github.com/tiangolo/fastapi/pull/9580) by [@​Alexandrhub](https://github.com/Alexandrhub).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/query-params.md`. PR [#​9584](https://github.com/tiangolo/fastapi/pull/9584) by [@​Alexandrhub](https://github.com/Alexandrhub).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/first-steps.md`. PR [#​9471](https://github.com/tiangolo/fastapi/pull/9471) by [@​AGolicyn](https://github.com/AGolicyn).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/debugging.md`. PR [#​9579](https://github.com/tiangolo/fastapi/pull/9579) by [@​Alexandrhub](https://github.com/Alexandrhub).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/path-params.md`. PR [#​9519](https://github.com/tiangolo/fastapi/pull/9519) by [@​AGolicyn](https://github.com/AGolicyn).
- 🌐 Add Chinese translation for `docs/zh/docs/tutorial/static-files.md`. PR [#​9436](https://github.com/tiangolo/fastapi/pull/9436) by [@​wdh99](https://github.com/wdh99).
- 🌐 Update Spanish translation including new illustrations in `docs/es/docs/async.md`. PR [#​9483](https://github.com/tiangolo/fastapi/pull/9483) by [@​andresbermeoq](https://github.com/andresbermeoq).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/path-params-numeric-validations.md`. PR [#​9563](https://github.com/tiangolo/fastapi/pull/9563) by [@​ivan-abc](https://github.com/ivan-abc).
- 🌐 Add Russian translation for `docs/ru/docs/deployment/concepts.md`. PR [#​9577](https://github.com/tiangolo/fastapi/pull/9577) by [@​Xewus](https://github.com/Xewus).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/body-multiple-params.md`. PR [#​9586](https://github.com/tiangolo/fastapi/pull/9586) by [@​Alexandrhub](https://github.com/Alexandrhub).
##### Internal
- 👥 Update FastAPI People. PR [#​9602](https://github.com/tiangolo/fastapi/pull/9602) by [@​github-actions\[bot\]](https://github.com/apps/github-actions).
- 🔧 Update sponsors, remove InvestSuite. PR [#​9612](https://github.com/tiangolo/fastapi/pull/9612) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.95.2`](https://github.com/fastapi/fastapi/releases/tag/0.95.2)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.95.1...0.95.2)
- ⬆️ Upgrade Starlette version to `>=0.27.0` for a security release. PR [#​9541](https://github.com/tiangolo/fastapi/pull/9541) by [@​tiangolo](https://github.com/tiangolo). Details on [Starlette's security advisory](https://github.com/encode/starlette/security/advisories/GHSA-v5gw-mw7f-84px).
##### Translations
- 🌐 Add Portuguese translation for `docs/pt/docs/advanced/events.md`. PR [#​9326](https://github.com/tiangolo/fastapi/pull/9326) by [@​oandersonmagalhaes](https://github.com/oandersonmagalhaes).
- 🌐 Add Russian translation for `docs/ru/docs/deployment/manually.md`. PR [#​9417](https://github.com/tiangolo/fastapi/pull/9417) by [@​Xewus](https://github.com/Xewus).
- 🌐 Add setup for translations to Lao. PR [#​9396](https://github.com/tiangolo/fastapi/pull/9396) by [@​TheBrown](https://github.com/TheBrown).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/testing.md`. PR [#​9403](https://github.com/tiangolo/fastapi/pull/9403) by [@​Xewus](https://github.com/Xewus).
- 🌐 Add Russian translation for `docs/ru/docs/deployment/https.md`. PR [#​9428](https://github.com/tiangolo/fastapi/pull/9428) by [@​Xewus](https://github.com/Xewus).
- ✏ Fix command to install requirements in Windows. PR [#​9445](https://github.com/tiangolo/fastapi/pull/9445) by [@​MariiaRomanuik](https://github.com/MariiaRomanuik).
- 🌐 Add French translation for `docs/fr/docs/advanced/response-directly.md`. PR [#​9415](https://github.com/tiangolo/fastapi/pull/9415) by [@​axel584](https://github.com/axel584).
- 🌐 Initiate Czech translation setup. PR [#​9288](https://github.com/tiangolo/fastapi/pull/9288) by [@​3p1463k](https://github.com/3p1463k).
- ✏ Fix typo in Portuguese docs for `docs/pt/docs/index.md`. PR [#​9337](https://github.com/tiangolo/fastapi/pull/9337) by [@​lucasbalieiro](https://github.com/lucasbalieiro).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/response-status-code.md`. PR [#​9370](https://github.com/tiangolo/fastapi/pull/9370) by [@​nadia3373](https://github.com/nadia3373).
##### Internal
- 🐛 Fix `flask.escape` warning for internal tests. PR [#​9468](https://github.com/tiangolo/fastapi/pull/9468) by [@​samuelcolvin](https://github.com/samuelcolvin).
- ✅ Refactor 2 tests, for consistency and simplification. PR [#​9504](https://github.com/tiangolo/fastapi/pull/9504) by [@​tiangolo](https://github.com/tiangolo).
- ✅ Refactor OpenAPI tests, prepare for Pydantic v2. PR [#​9503](https://github.com/tiangolo/fastapi/pull/9503) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Bump dawidd6/action-download-artifact from 2.26.0 to 2.27.0. PR [#​9394](https://github.com/tiangolo/fastapi/pull/9394) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 💚 Disable setup-python pip cache in CI. PR [#​9438](https://github.com/tiangolo/fastapi/pull/9438) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Bump pypa/gh-action-pypi-publish from 1.6.4 to 1.8.5. PR [#​9346](https://github.com/tiangolo/fastapi/pull/9346) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
### [`v0.95.1`](https://github.com/fastapi/fastapi/releases/tag/0.95.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.95.0...0.95.1)
##### Fixes
- 🐛 Fix using `Annotated` in routers or path operations decorated multiple times. PR [#​9315](https://github.com/tiangolo/fastapi/pull/9315) by [@​sharonyogev](https://github.com/sharonyogev).
##### Docs
- 🌐 🔠 📄 🐢 Translate docs to Emoji 🥳 🎉 💥 🤯 🤯. PR [#​5385](https://github.com/tiangolo/fastapi/pull/5385) by [@​LeeeeT](https://github.com/LeeeeT).
- 📝 Add notification message warning about old versions of FastAPI not supporting `Annotated`. PR [#​9298](https://github.com/tiangolo/fastapi/pull/9298) by [@​grdworkin](https://github.com/grdworkin).
- 📝 Fix typo in `docs/en/docs/advanced/behind-a-proxy.md`. PR [#​5681](https://github.com/tiangolo/fastapi/pull/5681) by [@​Leommjr](https://github.com/Leommjr).
- ✏ Fix wrong import from typing module in Persian translations for `docs/fa/docs/index.md`. PR [#​6083](https://github.com/tiangolo/fastapi/pull/6083) by [@​Kimiaattaei](https://github.com/Kimiaattaei).
- ✏️ Fix format, remove unnecessary asterisks in `docs/en/docs/help-fastapi.md`. PR [#​9249](https://github.com/tiangolo/fastapi/pull/9249) by [@​armgabrielyan](https://github.com/armgabrielyan).
- ✏ Fix typo in `docs/en/docs/tutorial/query-params-str-validations.md`. PR [#​9272](https://github.com/tiangolo/fastapi/pull/9272) by [@​nicornk](https://github.com/nicornk).
- ✏ Fix typo/bug in inline code example in `docs/en/docs/tutorial/query-params-str-validations.md`. PR [#​9273](https://github.com/tiangolo/fastapi/pull/9273) by [@​tim-habitat](https://github.com/tim-habitat).
- ✏ Fix typo in `docs/en/docs/tutorial/path-params-numeric-validations.md`. PR [#​9282](https://github.com/tiangolo/fastapi/pull/9282) by [@​aadarsh977](https://github.com/aadarsh977).
- ✏ Fix typo: 'wll' to 'will' in `docs/en/docs/tutorial/query-params-str-validations.md`. PR [#​9380](https://github.com/tiangolo/fastapi/pull/9380) by [@​dasstyxx](https://github.com/dasstyxx).
##### Translations
- 🌐 Add French translation for `docs/fr/docs/advanced/index.md`. PR [#​5673](https://github.com/tiangolo/fastapi/pull/5673) by [@​axel584](https://github.com/axel584).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/body-nested-models.md`. PR [#​4053](https://github.com/tiangolo/fastapi/pull/4053) by [@​luccasmmg](https://github.com/luccasmmg).
- 🌐 Add Russian translation for `docs/ru/docs/alternatives.md`. PR [#​5994](https://github.com/tiangolo/fastapi/pull/5994) by [@​Xewus](https://github.com/Xewus).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/extra-models.md`. PR [#​5912](https://github.com/tiangolo/fastapi/pull/5912) by [@​LorhanSohaky](https://github.com/LorhanSohaky).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/path-operation-configuration.md`. PR [#​5936](https://github.com/tiangolo/fastapi/pull/5936) by [@​LorhanSohaky](https://github.com/LorhanSohaky).
- 🌐 Add Russian translation for `docs/ru/docs/contributing.md`. PR [#​6002](https://github.com/tiangolo/fastapi/pull/6002) by [@​stigsanek](https://github.com/stigsanek).
- 🌐 Add Korean translation for `docs/tutorial/dependencies/classes-as-dependencies.md`. PR [#​9176](https://github.com/tiangolo/fastapi/pull/9176) by [@​sehwan505](https://github.com/sehwan505).
- 🌐 Add Russian translation for `docs/ru/docs/project-generation.md`. PR [#​9243](https://github.com/tiangolo/fastapi/pull/9243) by [@​Xewus](https://github.com/Xewus).
- 🌐 Add French translation for `docs/fr/docs/index.md`. PR [#​9265](https://github.com/tiangolo/fastapi/pull/9265) by [@​frabc](https://github.com/frabc).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/query-params-str-validations.md`. PR [#​9267](https://github.com/tiangolo/fastapi/pull/9267) by [@​dedkot01](https://github.com/dedkot01).
- 🌐 Add Russian translation for `docs/ru/docs/benchmarks.md`. PR [#​9271](https://github.com/tiangolo/fastapi/pull/9271) by [@​Xewus](https://github.com/Xewus).
##### Internal
- 🔧 Update sponsors: remove Jina. PR [#​9388](https://github.com/tiangolo/fastapi/pull/9388) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, add databento, remove Ines's course and StriveWorks. PR [#​9351](https://github.com/tiangolo/fastapi/pull/9351) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.95.0`](https://github.com/fastapi/fastapi/releases/tag/0.95.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.94.1...0.95.0)
##### Highlights
This release adds support for dependencies and parameters using `Annotated` and recommends its usage. ✨
This has **several benefits**, one of the main ones is that now the parameters of your functions with `Annotated` would **not be affected** at all.
If you call those functions in **other places in your code**, the actual **default values** will be kept, your editor will help you notice missing **required arguments**, Python will require you to pass required arguments at **runtime**, you will be able to **use the same functions** for different things and with different libraries (e.g. **Typer** will soon support `Annotated` too, then you could use the same function for an API and a CLI), etc.
Because `Annotated` is **standard Python**, you still get all the **benefits** from editors and tools, like **autocompletion**, **inline errors**, etc.
One of the **biggest benefits** is that now you can create `Annotated` dependencies that are then shared by multiple *path operation functions*, this will allow you to **reduce** a lot of **code duplication** in your codebase, while keeping all the support from editors and tools.
For example, you could have code like this:
```Python
def get_current_user(token: str):
### authenticate user
return User()
@​app.get("/items/")
def read_items(user: User = Depends(get_current_user)):
...
@​app.post("/items/")
def create_item(*, user: User = Depends(get_current_user), item: Item):
...
@​app.get("/items/{item_id}")
def read_item(*, user: User = Depends(get_current_user), item_id: int):
...
@​app.delete("/items/{item_id}")
def delete_item(*, user: User = Depends(get_current_user), item_id: int):
...
```
There's a bit of code duplication for the dependency:
```Python
user: User = Depends(get_current_user)
```
...the bigger the codebase, the more noticeable it is.
Now you can create an annotated dependency once, like this:
```Python
CurrentUser = Annotated[User, Depends(get_current_user)]
```
And then you can reuse this `Annotated` dependency:
```Python
CurrentUser = Annotated[User, Depends(get_current_user)]
@​app.get("/items/")
def read_items(user: CurrentUser):
...
@​app.post("/items/")
def create_item(user: CurrentUser, item: Item):
...
@​app.get("/items/{item_id}")
def read_item(user: CurrentUser, item_id: int):
...
@​app.delete("/items/{item_id}")
def delete_item(user: CurrentUser, item_id: int):
...
```
...and `CurrentUser` has all the typing information as `User`, so your editor will work as expected (autocompletion and everything), and **FastAPI** will be able to understand the dependency defined in `Annotated`. 😎
Roughly **all the docs** have been rewritten to use `Annotated` as the main way to declare **parameters** and **dependencies**. All the **examples** in the docs now include a version with `Annotated` and a version without it, for each of the specific Python versions (when there are small differences/improvements in more recent versions). There were around 23K new lines added between docs, examples, and tests. 🚀
The key updated docs are:
- Python Types Intro:
- [Type Hints with Metadata Annotations](https://fastapi.tiangolo.com/python-types/#type-hints-with-metadata-annotations).
- Tutorial:
- [Query Parameters and String Validations - Additional validation](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#additional-validation)
- [Advantages of `Annotated`](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#advantages-of-annotated)
- [Path Parameters and Numeric Validations - Order the parameters as you need, tricks](https://fastapi.tiangolo.com/tutorial/path-params-numeric-validations/#order-the-parameters-as-you-need-tricks)
- [Better with `Annotated`](https://fastapi.tiangolo.com/tutorial/path-params-numeric-validations/#better-with-annotated)
- [Dependencies - First Steps - Share `Annotated` dependencies](https://fastapi.tiangolo.com/tutorial/dependencies/#share-annotated-dependencies)
Special thanks to [@​nzig](https://github.com/nzig) for the core implementation and to [@​adriangb](https://github.com/adriangb) for the inspiration and idea with [Xpresso](https://github.com/adriangb/xpresso)! 🚀
##### Features
- ✨Add support for PEP-593 `Annotated` for specifying dependencies and parameters. PR [#​4871](https://github.com/tiangolo/fastapi/pull/4871) by [@​nzig](https://github.com/nzig).
##### Docs
- 📝 Tweak tip recommending `Annotated` in docs. PR [#​9270](https://github.com/tiangolo/fastapi/pull/9270) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Update order of examples, latest Python version first, and simplify version tab names. PR [#​9269](https://github.com/tiangolo/fastapi/pull/9269) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Update all docs to use `Annotated` as the main recommendation, with new examples and tests. PR [#​9268](https://github.com/tiangolo/fastapi/pull/9268) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.94.1`](https://github.com/fastapi/fastapi/releases/tag/0.94.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.94.0...0.94.1)
##### Fixes
- 🎨 Fix types for lifespan, upgrade Starlette to 0.26.1. PR [#​9245](https://github.com/tiangolo/fastapi/pull/9245) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.94.0`](https://github.com/fastapi/fastapi/releases/tag/0.94.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.93.0...0.94.0)
##### Upgrades
- ⬆ Upgrade python-multipart to support 0.0.6. PR [#​9212](https://github.com/tiangolo/fastapi/pull/9212) by [@​musicinmybrain](https://github.com/musicinmybrain).
- ⬆️ Upgrade Starlette version, support new `lifespan` with state. PR [#​9239](https://github.com/tiangolo/fastapi/pull/9239) by [@​tiangolo](https://github.com/tiangolo).
##### Docs
- 📝 Update Sentry link in docs. PR [#​9218](https://github.com/tiangolo/fastapi/pull/9218) by [@​smeubank](https://github.com/smeubank).
##### Translations
- 🌐 Add Russian translation for `docs/ru/docs/history-design-future.md`. PR [#​5986](https://github.com/tiangolo/fastapi/pull/5986) by [@​Xewus](https://github.com/Xewus).
##### Internal
- ➕ Add `pydantic` to PyPI classifiers. PR [#​5914](https://github.com/tiangolo/fastapi/pull/5914) by [@​yezz123](https://github.com/yezz123).
- ⬆ Bump black from 22.10.0 to 23.1.0. PR [#​5953](https://github.com/tiangolo/fastapi/pull/5953) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump types-ujson from 5.6.0.0 to 5.7.0.1. PR [#​6027](https://github.com/tiangolo/fastapi/pull/6027) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump dawidd6/action-download-artifact from 2.24.3 to 2.26.0. PR [#​6034](https://github.com/tiangolo/fastapi/pull/6034) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ \[pre-commit.ci] pre-commit autoupdate. PR [#​5709](https://github.com/tiangolo/fastapi/pull/5709) by [@​pre-commit-ci\[bot\]](https://github.com/apps/pre-commit-ci).
### [`v0.93.0`](https://github.com/fastapi/fastapi/releases/tag/0.93.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.92.0...0.93.0)
##### Features
- ✨ Add support for `lifespan` async context managers (superseding `startup` and `shutdown` events). Initial PR [#​2944](https://github.com/tiangolo/fastapi/pull/2944) by [@​uSpike](https://github.com/uSpike).
Now, instead of using independent `startup` and `shutdown` events, you can define that logic in a single function with `yield` decorated with `@asynccontextmanager` (an async context manager).
For example:
```Python
from contextlib import asynccontextmanager
from fastapi import FastAPI
def fake_answer_to_everything_ml_model(x: float):
return x * 42
ml_models = {}
@​asynccontextmanager
async def lifespan(app: FastAPI):
### Load the ML model
ml_models["answer_to_everything"] = fake_answer_to_everything_ml_model
yield
### Clean up the ML models and release the resources
ml_models.clear()
app = FastAPI(lifespan=lifespan)
@​app.get("/predict")
async def predict(x: float):
result = ml_models["answer_to_everything"](x)
return {"result": result}
```
**Note**: This is the recommended way going forward, instead of using `startup` and `shutdown` events.
Read more about it in the new docs: [Advanced User Guide: Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).
##### Docs
- ✏ Fix formatting in `docs/en/docs/tutorial/metadata.md` for `ReDoc`. PR [#​6005](https://github.com/tiangolo/fastapi/pull/6005) by [@​eykamp](https://github.com/eykamp).
##### Translations
- 🌐 Tamil translations - initial setup. PR [#​5564](https://github.com/tiangolo/fastapi/pull/5564) by [@​gusty1g](https://github.com/gusty1g).
- 🌐 Add French translation for `docs/fr/docs/advanced/path-operation-advanced-configuration.md`. PR [#​9221](https://github.com/tiangolo/fastapi/pull/9221) by [@​axel584](https://github.com/axel584).
- 🌐 Add French translation for `docs/tutorial/debugging.md`. PR [#​9175](https://github.com/tiangolo/fastapi/pull/9175) by [@​frabc](https://github.com/frabc).
- 🌐 Initiate Armenian translation setup. PR [#​5844](https://github.com/tiangolo/fastapi/pull/5844) by [@​har8](https://github.com/har8).
- 🌐 Add French translation for `deployment/manually.md`. PR [#​3693](https://github.com/tiangolo/fastapi/pull/3693) by [@​rjNemo](https://github.com/rjNemo).
##### Internal
- 👷 Update translation bot messages. PR [#​9206](https://github.com/tiangolo/fastapi/pull/9206) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update translations bot to use Discussions, and notify when a PR is done. PR [#​9183](https://github.com/tiangolo/fastapi/pull/9183) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors-badges. PR [#​9182](https://github.com/tiangolo/fastapi/pull/9182) by [@​tiangolo](https://github.com/tiangolo).
- 👥 Update FastAPI People. PR [#​9181](https://github.com/tiangolo/fastapi/pull/9181) by [@​github-actions\[bot\]](https://github.com/apps/github-actions).
- 🔊 Log GraphQL errors in FastAPI People, because it returns 200, with a payload with an error. PR [#​9171](https://github.com/tiangolo/fastapi/pull/9171) by [@​tiangolo](https://github.com/tiangolo).
- 💚 Fix/workaround GitHub Actions in Docker with git for FastAPI People. PR [#​9169](https://github.com/tiangolo/fastapi/pull/9169) by [@​tiangolo](https://github.com/tiangolo).
- ♻️ Refactor FastAPI Experts to use only discussions now that questions are migrated. PR [#​9165](https://github.com/tiangolo/fastapi/pull/9165) by [@​tiangolo](https://github.com/tiangolo).
- ⬆️ Upgrade analytics. PR [#​6025](https://github.com/tiangolo/fastapi/pull/6025) by [@​tiangolo](https://github.com/tiangolo).
- ⬆️ Upgrade and re-enable installing Typer-CLI. PR [#​6008](https://github.com/tiangolo/fastapi/pull/6008) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.92.0`](https://github.com/fastapi/fastapi/releases/tag/0.92.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.91.0...0.92.0)
🚨 This is a security fix. Please upgrade as soon as possible.
##### Upgrades
- ⬆️ Upgrade Starlette to 0.25.0. PR [#​5996](https://github.com/tiangolo/fastapi/pull/5996) by [@​tiangolo](https://github.com/tiangolo).
- This solves a vulnerability that could allow denial of service attacks by using many small multipart fields/files (parts), consuming high CPU and memory.
- Only applications using forms (e.g. file uploads) could be affected.
- For most cases, upgrading won't have any breaking changes.
### [`v0.91.0`](https://github.com/fastapi/fastapi/releases/tag/0.91.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.90.1...0.91.0)
##### Upgrades
- ⬆️ Upgrade Starlette version to `0.24.0` and refactor internals for compatibility. PR [#​5985](https://github.com/tiangolo/fastapi/pull/5985) by [@​tiangolo](https://github.com/tiangolo).
- This can solve nuanced errors when using middlewares. Before Starlette `0.24.0`, a new instance of each middleware class would be created when a new middleware was added. That normally was not a problem, unless the middleware class expected to be created only once, with only one instance, that happened in some cases. This upgrade would solve those cases (thanks [@​adriangb](https://github.com/adriangb)! Starlette PR [#​2017](https://github.com/encode/starlette/pull/2017)). Now the middleware class instances are created once, right before the first request (the first time the app is called).
- If you depended on that previous behavior, you might need to update your code. As always, make sure your tests pass before merging the upgrade.
### [`v0.90.1`](https://github.com/fastapi/fastapi/releases/tag/0.90.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.90.0...0.90.1)
##### Upgrades
- ⬆️ Upgrade Starlette range to allow 0.23.1. PR [#​5980](https://github.com/tiangolo/fastapi/pull/5980) by [@​tiangolo](https://github.com/tiangolo).
##### Docs
- ✏ Tweak wording to clarify `docs/en/docs/project-generation.md`. PR [#​5930](https://github.com/tiangolo/fastapi/pull/5930) by [@​chandra-deb](https://github.com/chandra-deb).
- ✏ Update Pydantic GitHub URLs. PR [#​5952](https://github.com/tiangolo/fastapi/pull/5952) by [@​yezz123](https://github.com/yezz123).
- 📝 Add opinion from Cisco. PR [#​5981](https://github.com/tiangolo/fastapi/pull/5981) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/cookie-params.md`. PR [#​5890](https://github.com/tiangolo/fastapi/pull/5890) by [@​bnzone](https://github.com/bnzone).
##### Internal
- ✏ Update `zip-docs.sh` internal script, remove extra space. PR [#​5931](https://github.com/tiangolo/fastapi/pull/5931) by [@​JuanPerdomo00](https://github.com/JuanPerdomo00).
### [`v0.90.0`](https://github.com/fastapi/fastapi/releases/tag/0.90.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.89.1...0.90.0)
##### Upgrades
- ⬆️ Bump Starlette from 0.22.0 to 0.23.0. Initial PR [#​5739](https://github.com/tiangolo/fastapi/pull/5739) by [@​Kludex](https://github.com/Kludex).
##### Docs
- 📝 Add article "Tortoise ORM / FastAPI 整合快速筆記" to External Links. PR [#​5496](https://github.com/tiangolo/fastapi/pull/5496) by [@​Leon0824](https://github.com/Leon0824).
- 👥 Update FastAPI People. PR [#​5954](https://github.com/tiangolo/fastapi/pull/5954) by [@​github-actions\[bot\]](https://github.com/apps/github-actions).
- 📝 Micro-tweak help docs. PR [#​5960](https://github.com/tiangolo/fastapi/pull/5960) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update new issue chooser to direct to GitHub Discussions. PR [#​5948](https://github.com/tiangolo/fastapi/pull/5948) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Recommend GitHub Discussions for questions. PR [#​5944](https://github.com/tiangolo/fastapi/pull/5944) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/body-fields.md`. PR [#​5898](https://github.com/tiangolo/fastapi/pull/5898) by [@​simatheone](https://github.com/simatheone).
- 🌐 Add Russian translation for `docs/ru/docs/help-fastapi.md`. PR [#​5970](https://github.com/tiangolo/fastapi/pull/5970) by [@​tiangolo](https://github.com/tiangolo).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/static-files.md`. PR [#​5858](https://github.com/tiangolo/fastapi/pull/5858) by [@​batlopes](https://github.com/batlopes).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/encoder.md`. PR [#​5525](https://github.com/tiangolo/fastapi/pull/5525) by [@​felipebpl](https://github.com/felipebpl).
- 🌐 Add Russian translation for `docs/ru/docs/contributing.md`. PR [#​5870](https://github.com/tiangolo/fastapi/pull/5870) by [@​Xewus](https://github.com/Xewus).
##### Internal
- ⬆️ Upgrade Ubuntu version for docs workflow. PR [#​5971](https://github.com/tiangolo/fastapi/pull/5971) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors badges. PR [#​5943](https://github.com/tiangolo/fastapi/pull/5943) by [@​tiangolo](https://github.com/tiangolo).
- ✨ Compute FastAPI Experts including GitHub Discussions. PR [#​5941](https://github.com/tiangolo/fastapi/pull/5941) by [@​tiangolo](https://github.com/tiangolo).
- ⬆️ Upgrade isort and update pre-commit. PR [#​5940](https://github.com/tiangolo/fastapi/pull/5940) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Add template for questions in Discussions. PR [#​5920](https://github.com/tiangolo/fastapi/pull/5920) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update Sponsor Budget Insight to Powens. PR [#​5916](https://github.com/tiangolo/fastapi/pull/5916) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update GitHub Sponsors badge data. PR [#​5915](https://github.com/tiangolo/fastapi/pull/5915) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.89.1`](https://github.com/fastapi/fastapi/releases/tag/0.89.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.89.0...0.89.1)
##### Fixes
- 🐛 Ignore Response classes on return annotation. PR [#​5855](https://github.com/tiangolo/fastapi/pull/5855) by [@​Kludex](https://github.com/Kludex). See the new docs in the PR below.
##### Docs
- 📝 Update docs and examples for Response Model with Return Type Annotations, and update runtime error. PR [#​5873](https://github.com/tiangolo/fastapi/pull/5873) by [@​tiangolo](https://github.com/tiangolo). New docs at [Response Model - Return Type: Other Return Type Annotations](https://fastapi.tiangolo.com/tutorial/response-model/#other-return-type-annotations).
- 📝 Add External Link: FastAPI lambda container: serverless simplified. PR [#​5784](https://github.com/tiangolo/fastapi/pull/5784) by [@​rafrasenberg](https://github.com/rafrasenberg).
##### Translations
- 🌐 Add Turkish translation for `docs/tr/docs/tutorial/first_steps.md`. PR [#​5691](https://github.com/tiangolo/fastapi/pull/5691) by [@​Kadermiyanyedi](https://github.com/Kadermiyanyedi).
### [`v0.89.0`](https://github.com/fastapi/fastapi/releases/tag/0.89.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.88.0...0.89.0)
##### Features
- ✨ Add support for function return type annotations to declare the `response_model`. Initial PR [#​1436](https://github.com/tiangolo/fastapi/pull/1436) by [@​uriyyo](https://github.com/uriyyo).
Now you can declare the return type / `response_model` in the function return type annotation:
```python
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
@​app.get("/items/")
async def read_items() -> list[Item]:
return [
Item(name="Portal Gun", price=42.0),
Item(name="Plumbus", price=32.0),
]
```
FastAPI will use the return type annotation to perform:
- Data validation
- Automatic documentation
- It could power automatic client generators
- **Data filtering**
Before this version it was only supported via the `response_model` parameter.
Read more about it in the new docs: [Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/).
##### Docs
- 📝 Add External Link: Authorization on FastAPI with Casbin. PR [#​5712](https://github.com/tiangolo/fastapi/pull/5712) by [@​Xhy-5000](https://github.com/Xhy-5000).
- ✏ Fix typo in `docs/en/docs/async.md`. PR [#​5785](https://github.com/tiangolo/fastapi/pull/5785) by [@​Kingdageek](https://github.com/Kingdageek).
- ✏ Fix typo in `docs/en/docs/deployment/concepts.md`. PR [#​5824](https://github.com/tiangolo/fastapi/pull/5824) by [@​kelbyfaessler](https://github.com/kelbyfaessler).
##### Translations
- 🌐 Add Russian translation for `docs/ru/docs/fastapi-people.md`. PR [#​5577](https://github.com/tiangolo/fastapi/pull/5577) by [@​Xewus](https://github.com/Xewus).
- 🌐 Fix typo in Chinese translation for `docs/zh/docs/benchmarks.md`. PR [#​4269](https://github.com/tiangolo/fastapi/pull/4269) by [@​15027668g](https://github.com/15027668g).
- 🌐 Add Korean translation for `docs/tutorial/cors.md`. PR [#​3764](https://github.com/tiangolo/fastapi/pull/3764) by [@​NinaHwang](https://github.com/NinaHwang).
##### Internal
- ⬆ Update coverage\[toml] requirement from <7.0,>=6.5.0 to >=6.5.0,<8.0. PR [#​5801](https://github.com/tiangolo/fastapi/pull/5801) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Update uvicorn\[standard] requirement from <0.19.0,>=0.12.0 to >=0.12.0,<0.21.0 for development. PR [#​5795](https://github.com/tiangolo/fastapi/pull/5795) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump dawidd6/action-download-artifact from 2.24.2 to 2.24.3. PR [#​5842](https://github.com/tiangolo/fastapi/pull/5842) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 👥 Update FastAPI People. PR [#​5825](https://github.com/tiangolo/fastapi/pull/5825) by [@​github-actions\[bot\]](https://github.com/apps/github-actions).
- ⬆ Bump types-ujson from 5.5.0 to 5.6.0.0. PR [#​5735](https://github.com/tiangolo/fastapi/pull/5735) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump pypa/gh-action-pypi-publish from 1.5.2 to 1.6.4. PR [#​5750](https://github.com/tiangolo/fastapi/pull/5750) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 👷 Add GitHub Action gate/check. PR [#​5492](https://github.com/tiangolo/fastapi/pull/5492) by [@​webknjaz](https://github.com/webknjaz).
- 🔧 Update sponsors, add Svix. PR [#​5848](https://github.com/tiangolo/fastapi/pull/5848) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Remove Doist sponsor. PR [#​5847](https://github.com/tiangolo/fastapi/pull/5847) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Update sqlalchemy requirement from <=1.4.41,>=1.3.18 to >=1.3.18,<1.4.43. PR [#​5540](https://github.com/tiangolo/fastapi/pull/5540) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump nwtgck/actions-netlify from 1.2.4 to 2.0.0. PR [#​5757](https://github.com/tiangolo/fastapi/pull/5757) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 👷 Refactor CI artifact upload/download for docs previews. PR [#​5793](https://github.com/tiangolo/fastapi/pull/5793) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Bump pypa/gh-action-pypi-publish from 1.5.1 to 1.5.2. PR [#​5714](https://github.com/tiangolo/fastapi/pull/5714) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 👥 Update FastAPI People. PR [#​5722](https://github.com/tiangolo/fastapi/pull/5722) by [@​github-actions\[bot\]](https://github.com/apps/github-actions).
- 🔧 Update sponsors, disable course bundle. PR [#​5713](https://github.com/tiangolo/fastapi/pull/5713) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Update typer\[all] requirement from <0.7.0,>=0.6.1 to >=0.6.1,<0.8.0. PR [#​5639](https://github.com/tiangolo/fastapi/pull/5639) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
### [`v0.88.0`](https://github.com/fastapi/fastapi/releases/tag/0.88.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.87.0...0.88.0)
##### Upgrades
- ⬆ Bump Starlette to version `0.22.0` to fix bad encoding for query parameters in new `TestClient`. PR [#​5659](https://github.com/tiangolo/fastapi/pull/5659) by [@​azogue](https://github.com/azogue).
##### Docs
- ✏️ Fix typo in docs for `docs/en/docs/advanced/middleware.md`. PR [#​5376](https://github.com/tiangolo/fastapi/pull/5376) by [@​rifatrakib](https://github.com/rifatrakib).
##### Translations
- 🌐 Add Portuguese translation for `docs/pt/docs/deployment/docker.md`. PR [#​5663](https://github.com/tiangolo/fastapi/pull/5663) by [@​ayr-ton](https://github.com/ayr-ton).
##### Internal
- 👷 Tweak build-docs to improve CI performance. PR [#​5699](https://github.com/tiangolo/fastapi/pull/5699) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ \[pre-commit.ci] pre-commit autoupdate. PR [#​5566](https://github.com/tiangolo/fastapi/pull/5566) by [@​pre-commit-ci\[bot\]](https://github.com/apps/pre-commit-ci).
- ⬆️ Upgrade Ruff. PR [#​5698](https://github.com/tiangolo/fastapi/pull/5698) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Remove pip cache for Smokeshow as it depends on a requirements.txt. PR [#​5700](https://github.com/tiangolo/fastapi/pull/5700) by [@​tiangolo](https://github.com/tiangolo).
- 💚 Fix pip cache for Smokeshow. PR [#​5697](https://github.com/tiangolo/fastapi/pull/5697) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Fix and tweak CI cache handling. PR [#​5696](https://github.com/tiangolo/fastapi/pull/5696) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Update `setup-python` action in tests to use new caching feature. PR [#​5680](https://github.com/tiangolo/fastapi/pull/5680) by [@​madkinsz](https://github.com/madkinsz).
- ⬆ Bump black from 22.8.0 to 22.10.0. PR [#​5569](https://github.com/tiangolo/fastapi/pull/5569) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
### [`v0.87.0`](https://github.com/fastapi/fastapi/releases/tag/0.87.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.86.0...0.87.0)
Highlights of this release:
- [Upgraded Starlette](https://github.com/encode/starlette/releases/tag/0.21.0)
- Now the `TestClient` is based on HTTPX instead of Requests. 🚀
- There are some possible **breaking changes** in the `TestClient` usage, but [@​Kludex](https://github.com/Kludex) built [bump-testclient](https://github.com/Kludex/bump-testclient) to help you automatize migrating your tests. Make sure you are using Git and that you can undo any unnecessary changes (false positive changes, etc) before using `bump-testclient`.
- New [WebSocketException (and docs)](https://fastapi.tiangolo.com/advanced/websockets/#using-depends-and-others), re-exported from Starlette.
- Upgraded and relaxed dependencies for package extras `all` (including new Uvicorn version), when you install `"fastapi[all]"`.
- New docs about how to [**Help Maintain FastAPI**](https://fastapi.tiangolo.com/help-fastapi/#help-maintain-fastapi).
##### Features
- ⬆️ Upgrade and relax dependencies for extras "all". PR [#​5634](https://github.com/tiangolo/fastapi/pull/5634) by [@​tiangolo](https://github.com/tiangolo).
- ✨ Re-export Starlette's `WebSocketException` and add it to docs. PR [#​5629](https://github.com/tiangolo/fastapi/pull/5629) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Update references to Requests for tests to HTTPX, and add HTTPX to extras. PR [#​5628](https://github.com/tiangolo/fastapi/pull/5628) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Upgrade Starlette to `0.21.0`, including the new [`TestClient` based on HTTPX](https://github.com/encode/starlette/releases/tag/0.21.0). PR [#​5471](https://github.com/tiangolo/fastapi/pull/5471) by [@​pawelrubin](https://github.com/pawelrubin).
##### Docs
- ✏️ Tweak Help FastAPI from PR review after merging. PR [#​5633](https://github.com/tiangolo/fastapi/pull/5633) by [@​tiangolo](https://github.com/tiangolo).
- ✏️ Clarify docs on CORS. PR [#​5627](https://github.com/tiangolo/fastapi/pull/5627) by [@​paxcodes](https://github.com/paxcodes).
- 📝 Update Help FastAPI: Help Maintain FastAPI. PR [#​5632](https://github.com/tiangolo/fastapi/pull/5632) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- 🌐 Fix highlight lines for Japanese translation for `docs/tutorial/query-params.md`. PR [#​2969](https://github.com/tiangolo/fastapi/pull/2969) by [@​ftnext](https://github.com/ftnext).
- 🌐 Add French translation for `docs/fr/docs/advanced/additional-status-code.md`. PR [#​5477](https://github.com/tiangolo/fastapi/pull/5477) by [@​axel584](https://github.com/axel584).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/request-forms-and-files.md`. PR [#​5579](https://github.com/tiangolo/fastapi/pull/5579) by [@​batlopes](https://github.com/batlopes).
- 🌐 Add Japanese translation for `docs/ja/docs/advanced/websockets.md`. PR [#​4983](https://github.com/tiangolo/fastapi/pull/4983) by [@​xryuseix](https://github.com/xryuseix).
##### Internal
- ✨ Use Ruff for linting. PR [#​5630](https://github.com/tiangolo/fastapi/pull/5630) by [@​tiangolo](https://github.com/tiangolo).
- 🛠 Add Arabic issue number to Notify Translations GitHub Action. PR [#​5610](https://github.com/tiangolo/fastapi/pull/5610) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Bump dawidd6/action-download-artifact from 2.24.1 to 2.24.2. PR [#​5609](https://github.com/tiangolo/fastapi/pull/5609) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump dawidd6/action-download-artifact from 2.24.0 to 2.24.1. PR [#​5603](https://github.com/tiangolo/fastapi/pull/5603) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 📝 Update coverage badge to use Samuel Colvin's Smokeshow. PR [#​5585](https://github.com/tiangolo/fastapi/pull/5585) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.86.0`](https://github.com/fastapi/fastapi/releases/tag/0.86.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.85.2...0.86.0)
##### Features
- ⬆ Add Python 3.11 to the officially supported versions. PR [#​5587](https://github.com/tiangolo/fastapi/pull/5587) by [@​tiangolo](https://github.com/tiangolo).
- ✅ Enable tests for Python 3.11. PR [#​4881](https://github.com/tiangolo/fastapi/pull/4881) by [@​tiangolo](https://github.com/tiangolo).
##### Fixes
- 🐛 Close FormData (uploaded files) after the request is done. PR [#​5465](https://github.com/tiangolo/fastapi/pull/5465) by [@​adriangb](https://github.com/adriangb).
##### Docs
- ✏ Fix typo in `docs/en/docs/tutorial/security/oauth2-jwt.md`. PR [#​5584](https://github.com/tiangolo/fastapi/pull/5584) by [@​vivekashok1221](https://github.com/vivekashok1221).
##### Translations
- 🌐 Update wording in Chinese translation for `docs/zh/docs/python-types.md`. PR [#​5416](https://github.com/tiangolo/fastapi/pull/5416) by [@​supercaizehua](https://github.com/supercaizehua).
- 🌐 Add Russian translation for `docs/ru/docs/deployment/index.md`. PR [#​5336](https://github.com/tiangolo/fastapi/pull/5336) by [@​Xewus](https://github.com/Xewus).
- 🌐 Update Chinese translation for `docs/tutorial/security/oauth2-jwt.md`. PR [#​3846](https://github.com/tiangolo/fastapi/pull/3846) by [@​jaystone776](https://github.com/jaystone776).
##### Internal
- 👷 Update FastAPI People to exclude bots: pre-commit-ci, dependabot. PR [#​5586](https://github.com/tiangolo/fastapi/pull/5586) by [@​tiangolo](https://github.com/tiangolo).
- 🎨 Format OpenAPI JSON in `test_starlette_exception.py`. PR [#​5379](https://github.com/tiangolo/fastapi/pull/5379) by [@​iudeen](https://github.com/iudeen).
- 👷 Switch from Codecov to Smokeshow plus pytest-cov to pure coverage for internal tests. PR [#​5583](https://github.com/tiangolo/fastapi/pull/5583) by [@​tiangolo](https://github.com/tiangolo).
- 👥 Update FastAPI People. PR [#​5571](https://github.com/tiangolo/fastapi/pull/5571) by [@​github-actions\[bot\]](https://github.com/apps/github-actions).
### [`v0.85.2`](https://github.com/fastapi/fastapi/releases/tag/0.85.2)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.85.1...0.85.2)
**Note**: this release doesn't affect final users, it's mainly internal. It unlocks Pydanitc work with the integration that runs FastAPI's tests in Pydantic's CI.
##### Docs
- ✏ Fix grammar and add helpful links to dependencies in `docs/en/docs/async.md`. PR [#​5432](https://github.com/tiangolo/fastapi/pull/5432) by [@​pamelafox](https://github.com/pamelafox).
- ✏ Fix broken link in `alternatives.md`. PR [#​5455](https://github.com/tiangolo/fastapi/pull/5455) by [@​su-shubham](https://github.com/su-shubham).
- ✏ Fix typo in docs about contributing, for compatibility with `pip` in Zsh. PR [#​5523](https://github.com/tiangolo/fastapi/pull/5523) by [@​zhangbo2012](https://github.com/zhangbo2012).
- 📝 Fix typo in docs with examples for Python 3.10 instead of 3.9. PR [#​5545](https://github.com/tiangolo/fastapi/pull/5545) by [@​feliciss](https://github.com/feliciss).
##### Translations
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/request-forms.md`. PR [#​4934](https://github.com/tiangolo/fastapi/pull/4934) by [@​batlopes](https://github.com/batlopes).
- 🌐 Add Chinese translation for `docs/zh/docs/tutorial/dependencies/classes-as-dependencies.md`. PR [#​4971](https://github.com/tiangolo/fastapi/pull/4971) by [@​Zssaer](https://github.com/Zssaer).
- 🌐 Add French translation for `deployment/deta.md`. PR [#​3692](https://github.com/tiangolo/fastapi/pull/3692) by [@​rjNemo](https://github.com/rjNemo).
- 🌐 Update Chinese translation for `docs/zh/docs/tutorial/query-params-str-validations.md`. PR [#​5255](https://github.com/tiangolo/fastapi/pull/5255) by [@​hjlarry](https://github.com/hjlarry).
- 🌐 Add Chinese translation for `docs/zh/docs/tutorial/sql-databases.md`. PR [#​4999](https://github.com/tiangolo/fastapi/pull/4999) by [@​Zssaer](https://github.com/Zssaer).
- 🌐 Add Chinese translation for `docs/zh/docs/advanced/wsgi.md`. PR [#​4505](https://github.com/tiangolo/fastapi/pull/4505) by [@​ASpathfinder](https://github.com/ASpathfinder).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/body-multiple-params.md`. PR [#​4111](https://github.com/tiangolo/fastapi/pull/4111) by [@​lbmendes](https://github.com/lbmendes).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/path-params-numeric-validations.md`. PR [#​4099](https://github.com/tiangolo/fastapi/pull/4099) by [@​lbmendes](https://github.com/lbmendes).
- 🌐 Add French translation for `deployment/versions.md`. PR [#​3690](https://github.com/tiangolo/fastapi/pull/3690) by [@​rjNemo](https://github.com/rjNemo).
- 🌐 Add French translation for `docs/fr/docs/help-fastapi.md`. PR [#​2233](https://github.com/tiangolo/fastapi/pull/2233) by [@​JulianMaurin](https://github.com/JulianMaurin).
- 🌐 Fix typo in Chinese translation for `docs/zh/docs/tutorial/security/first-steps.md`. PR [#​5530](https://github.com/tiangolo/fastapi/pull/5530) by [@​yuki1sntSnow](https://github.com/yuki1sntSnow).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/response-status-code.md`. PR [#​4922](https://github.com/tiangolo/fastapi/pull/4922) by [@​batlopes](https://github.com/batlopes).
- 🔧 Add config for Tamil translations. PR [#​5563](https://github.com/tiangolo/fastapi/pull/5563) by [@​tiangolo](https://github.com/tiangolo).
##### Internal
- ⬆ Bump internal dependency mypy from 0.971 to 0.982. PR [#​5541](https://github.com/tiangolo/fastapi/pull/5541) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump nwtgck/actions-netlify from 1.2.3 to 1.2.4. PR [#​5507](https://github.com/tiangolo/fastapi/pull/5507) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump internal dependency types-ujson from 5.4.0 to 5.5.0. PR [#​5537](https://github.com/tiangolo/fastapi/pull/5537) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump dawidd6/action-download-artifact from 2.23.0 to 2.24.0. PR [#​5508](https://github.com/tiangolo/fastapi/pull/5508) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Update internal dependency pytest-cov requirement from <4.0.0,>=2.12.0 to >=2.12.0,<5.0.0. PR [#​5539](https://github.com/tiangolo/fastapi/pull/5539) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ \[pre-commit.ci] pre-commit autoupdate. PR [#​5536](https://github.com/tiangolo/fastapi/pull/5536) by [@​pre-commit-ci\[bot\]](https://github.com/apps/pre-commit-ci).
- 🐛 Fix internal Trio test warnings. PR [#​5547](https://github.com/tiangolo/fastapi/pull/5547) by [@​samuelcolvin](https://github.com/samuelcolvin).
- ⬆ \[pre-commit.ci] pre-commit autoupdate. PR [#​5408](https://github.com/tiangolo/fastapi/pull/5408) by [@​pre-commit-ci\[bot\]](https://github.com/apps/pre-commit-ci).
- ⬆️ Upgrade Typer to include Rich in scripts for docs. PR [#​5502](https://github.com/tiangolo/fastapi/pull/5502) by [@​tiangolo](https://github.com/tiangolo).
- 🐛 Fix calling `mkdocs` for languages as a subprocess to fix/enable MkDocs Material search plugin. PR [#​5501](https://github.com/tiangolo/fastapi/pull/5501) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.85.1`](https://github.com/fastapi/fastapi/releases/tag/0.85.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.85.0...0.85.1)
##### Fixes
- 🐛 Fix support for strings in OpenAPI status codes: `default`, `1XX`, `2XX`, `3XX`, `4XX`, `5XX`. PR [#​5187](https://github.com/tiangolo/fastapi/pull/5187) by [@​JarroVGIT](https://github.com/JarroVGIT).
##### Docs
- 📝 Add WayScript x FastAPI Tutorial to External Links section. PR [#​5407](https://github.com/tiangolo/fastapi/pull/5407) by [@​moneeka](https://github.com/moneeka).
##### Internal
- 👥 Update FastAPI People. PR [#​5447](https://github.com/tiangolo/fastapi/pull/5447) by [@​github-actions\[bot\]](https://github.com/apps/github-actions).
- 🔧 Disable Material for MkDocs search plugin. PR [#​5495](https://github.com/tiangolo/fastapi/pull/5495) by [@​tiangolo](https://github.com/tiangolo).
- 🔇 Ignore Trio warning in tests for CI. PR [#​5483](https://github.com/tiangolo/fastapi/pull/5483) by [@​samuelcolvin](https://github.com/samuelcolvin).
### [`v0.85.0`](https://github.com/fastapi/fastapi/releases/tag/0.85.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.84.0...0.85.0)
##### Features
- ⬆ Upgrade version required of Starlette from `0.19.1` to `0.20.4`. Initial PR [#​4820](https://github.com/tiangolo/fastapi/pull/4820) by [@​Kludex](https://github.com/Kludex).
- This includes several bug fixes in Starlette.
- ⬆️ Upgrade Uvicorn max version in public extras: all. From `>=0.12.0,<0.18.0` to `>=0.12.0,<0.19.0`. PR [#​5401](https://github.com/tiangolo/fastapi/pull/5401) by [@​tiangolo](https://github.com/tiangolo).
##### Internal
- ⬆️ Upgrade dependencies for doc and dev internal extras: Typer, Uvicorn. PR [#​5400](https://github.com/tiangolo/fastapi/pull/5400) by [@​tiangolo](https://github.com/tiangolo).
- ⬆️ Upgrade test dependencies: Black, HTTPX, databases, types-ujson. PR [#​5399](https://github.com/tiangolo/fastapi/pull/5399) by [@​tiangolo](https://github.com/tiangolo).
- ⬆️ Upgrade mypy and tweak internal type annotations. PR [#​5398](https://github.com/tiangolo/fastapi/pull/5398) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update test dependencies, upgrade Pytest, move dependencies from dev to test. PR [#​5396](https://github.com/tiangolo/fastapi/pull/5396) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.84.0`](https://github.com/fastapi/fastapi/releases/tag/0.84.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.83.0...0.84.0)
##### Breaking Changes
This version of FastAPI drops support for Python 3.6. 🔥 Please upgrade to a supported version of Python (3.7 or above), Python 3.6 reached the end-of-life a long time ago. 😅☠
- 🔧 Update package metadata, drop support for Python 3.6, move build internals from Flit to Hatch. PR [#​5240](https://github.com/tiangolo/fastapi/pull/5240) by [@​ofek](https://github.com/ofek).
### [`v0.83.0`](https://github.com/fastapi/fastapi/releases/tag/0.83.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.82.0...0.83.0)
🚨 This is probably the last release (or one of the last releases) to support Python 3.6. 🔥
Python 3.6 reached the [end-of-life and is no longer supported by Python](https://www.python.org/downloads/release/python-3615/) since around a year ago.
You hopefully updated to a supported version of Python a while ago. If you haven't, you really should.
##### Features
- ✨ Add support in `jsonable_encoder` for include and exclude with dataclasses. PR [#​4923](https://github.com/tiangolo/fastapi/pull/4923) by [@​DCsunset](https://github.com/DCsunset).
##### Fixes
- 🐛 Fix `RuntimeError` raised when `HTTPException` has a status code with no content. PR [#​5365](https://github.com/tiangolo/fastapi/pull/5365) by [@​iudeen](https://github.com/iudeen).
- 🐛 Fix empty reponse body when default `status_code` is empty but the a `Response` parameter with `response.status_code` is set. PR [#​5360](https://github.com/tiangolo/fastapi/pull/5360) by [@​tmeckel](https://github.com/tmeckel).
##### Docs
- 📝 Update `SECURITY.md`. PR [#​5377](https://github.com/tiangolo/fastapi/pull/5377) by [@​Kludex](https://github.com/Kludex).
##### Internal
- ⬆ \[pre-commit.ci] pre-commit autoupdate. PR [#​5352](https://github.com/tiangolo/fastapi/pull/5352) by [@​pre-commit-ci\[bot\]](https://github.com/apps/pre-commit-ci).
### [`v0.82.0`](https://github.com/fastapi/fastapi/releases/tag/0.82.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.81.0...0.82.0)
🚨 This is probably the last release (or one of the last releases) to support Python 3.6. 🔥
Python 3.6 reached the [end-of-life and is no longer supported by Python](https://www.python.org/downloads/release/python-3615/) since around a year ago.
You hopefully updated to a supported version of Python a while ago. If you haven't, you really should.
##### Features
- ✨ Export `WebSocketState` in `fastapi.websockets`. PR [#​4376](https://github.com/tiangolo/fastapi/pull/4376) by [@​matiuszka](https://github.com/matiuszka).
- ✨ Support Python internal description on Pydantic model's docstring. PR [#​3032](https://github.com/tiangolo/fastapi/pull/3032) by [@​Kludex](https://github.com/Kludex).
- ✨ Update `ORJSONResponse` to support non `str` keys and serializing Numpy arrays. PR [#​3892](https://github.com/tiangolo/fastapi/pull/3892) by [@​baby5](https://github.com/baby5).
##### Fixes
- 🐛 Allow exit code for dependencies with `yield` to always execute, by removing capacity limiter for them, to e.g. allow closing DB connections without deadlocks. PR [#​5122](https://github.com/tiangolo/fastapi/pull/5122) by [@​adriangb](https://github.com/adriangb).
- 🐛 Fix FastAPI People GitHub Action: set HTTPX timeout for GraphQL query request. PR [#​5222](https://github.com/tiangolo/fastapi/pull/5222) by [@​iudeen](https://github.com/iudeen).
- 🐛 Make sure a parameter defined as required is kept required in OpenAPI even if defined as optional in another dependency. PR [#​4319](https://github.com/tiangolo/fastapi/pull/4319) by [@​cd17822](https://github.com/cd17822).
- 🐛 Fix support for path parameters in WebSockets. PR [#​3879](https://github.com/tiangolo/fastapi/pull/3879) by [@​davidbrochart](https://github.com/davidbrochart).
##### Docs
- ✏ Update Hypercorn link, now pointing to GitHub. PR [#​5346](https://github.com/tiangolo/fastapi/pull/5346) by [@​baconfield](https://github.com/baconfield).
- ✏ Tweak wording in `docs/en/docs/advanced/dataclasses.md`. PR [#​3698](https://github.com/tiangolo/fastapi/pull/3698) by [@​pfackeldey](https://github.com/pfackeldey).
- 📝 Add note about Python 3.10 `X | Y` operator in explanation about Response Models. PR [#​5307](https://github.com/tiangolo/fastapi/pull/5307) by [@​MendyLanda](https://github.com/MendyLanda).
- 📝 Add link to New Relic article: "How to monitor FastAPI application performance using Python agent". PR [#​5260](https://github.com/tiangolo/fastapi/pull/5260) by [@​sjyothi54](https://github.com/sjyothi54).
- 📝 Update docs for `ORJSONResponse` with details about improving performance. PR [#​2615](https://github.com/tiangolo/fastapi/pull/2615) by [@​falkben](https://github.com/falkben).
- 📝 Add docs for creating a custom Response class. PR [#​5331](https://github.com/tiangolo/fastapi/pull/5331) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Add tip about using alias for form data fields. PR [#​5329](https://github.com/tiangolo/fastapi/pull/5329) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- 🌐 Add Russian translation for `docs/ru/docs/features.md`. PR [#​5315](https://github.com/tiangolo/fastapi/pull/5315) by [@​Xewus](https://github.com/Xewus).
- 🌐 Update Chinese translation for `docs/zh/docs/tutorial/request-files.md`. PR [#​4529](https://github.com/tiangolo/fastapi/pull/4529) by [@​ASpathfinder](https://github.com/ASpathfinder).
- 🌐 Add Chinese translation for `docs/zh/docs/tutorial/encoder.md`. PR [#​4969](https://github.com/tiangolo/fastapi/pull/4969) by [@​Zssaer](https://github.com/Zssaer).
- 🌐 Fix MkDocs file line for Portuguese translation of `background-task.md`. PR [#​5242](https://github.com/tiangolo/fastapi/pull/5242) by [@​ComicShrimp](https://github.com/ComicShrimp).
##### Internal
- 👥 Update FastAPI People. PR [#​5347](https://github.com/tiangolo/fastapi/pull/5347) by [@​github-actions\[bot\]](https://github.com/apps/github-actions).
- ⬆ Bump dawidd6/action-download-artifact from 2.22.0 to 2.23.0. PR [#​5321](https://github.com/tiangolo/fastapi/pull/5321) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ \[pre-commit.ci] pre-commit autoupdate. PR [#​5318](https://github.com/tiangolo/fastapi/pull/5318) by [@​pre-commit-ci\[bot\]](https://github.com/apps/pre-commit-ci).
- ✏ Fix a small code highlight line error. PR [#​5256](https://github.com/tiangolo/fastapi/pull/5256) by [@​hjlarry](https://github.com/hjlarry).
- ♻ Internal small refactor, move `operation_id` parameter position in delete method for consistency with the code. PR [#​4474](https://github.com/tiangolo/fastapi/pull/4474) by [@​hiel](https://github.com/hiel).
- 🔧 Update sponsors, disable ImgWhale. PR [#​5338](https://github.com/tiangolo/fastapi/pull/5338) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.81.0`](https://github.com/fastapi/fastapi/releases/tag/0.81.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.80.0...0.81.0)
##### Features
- ✨ Add ReDoc `<noscript>` warning when JS is disabled. PR [#​5074](https://github.com/tiangolo/fastapi/pull/5074) by [@​evroon](https://github.com/evroon).
- ✨ Add support for `FrozenSet` in parameters (e.g. query). PR [#​2938](https://github.com/tiangolo/fastapi/pull/2938) by [@​juntatalor](https://github.com/juntatalor).
- ✨ Allow custom middlewares to raise `HTTPException`s and propagate them. PR [#​2036](https://github.com/tiangolo/fastapi/pull/2036) by [@​ghandic](https://github.com/ghandic).
- ✨ Preserve `json.JSONDecodeError` information when handling invalid JSON in request body, to support custom exception handlers that use its information. PR [#​4057](https://github.com/tiangolo/fastapi/pull/4057) by [@​UKnowWhoIm](https://github.com/UKnowWhoIm).
##### Fixes
- 🐛 Fix `jsonable_encoder` for dataclasses with pydantic-compatible fields. PR [#​3607](https://github.com/tiangolo/fastapi/pull/3607) by [@​himbeles](https://github.com/himbeles).
- 🐛 Fix support for extending `openapi_extras` with parameter lists. PR [#​4267](https://github.com/tiangolo/fastapi/pull/4267) by [@​orilevari](https://github.com/orilevari).
##### Docs
- ✏ Fix a simple typo in `docs/en/docs/python-types.md`. PR [#​5193](https://github.com/tiangolo/fastapi/pull/5193) by [@​GlitchingCore](https://github.com/GlitchingCore).
- ✏ Fix typos in `tests/test_schema_extra_examples.py`. PR [#​5126](https://github.com/tiangolo/fastapi/pull/5126) by [@​supraaxdd](https://github.com/supraaxdd).
- ✏ Fix typos in `docs/en/docs/tutorial/path-params-numeric-validations.md`. PR [#​5142](https://github.com/tiangolo/fastapi/pull/5142) by [@​invisibleroads](https://github.com/invisibleroads).
- 📝 Add step about upgrading pip in the venv to avoid errors when installing dependencies `docs/en/docs/contributing.md`. PR [#​5181](https://github.com/tiangolo/fastapi/pull/5181) by [@​edisnake](https://github.com/edisnake).
- ✏ Reword and clarify text in tutorial `docs/en/docs/tutorial/body-nested-models.md`. PR [#​5169](https://github.com/tiangolo/fastapi/pull/5169) by [@​papb](https://github.com/papb).
- ✏ Fix minor typo in `docs/en/docs/features.md`. PR [#​5206](https://github.com/tiangolo/fastapi/pull/5206) by [@​OtherBarry](https://github.com/OtherBarry).
- ✏ Fix minor typos in `docs/en/docs/async.md`. PR [#​5125](https://github.com/tiangolo/fastapi/pull/5125) by [@​Ksenofanex](https://github.com/Ksenofanex).
- 📝 Add external link to docs: "Fastapi, Docker(Docker compose) and Postgres". PR [#​5033](https://github.com/tiangolo/fastapi/pull/5033) by [@​krishnardt](https://github.com/krishnardt).
- 📝 Simplify example for docs for Additional Responses, remove unnecessary `else`. PR [#​4693](https://github.com/tiangolo/fastapi/pull/4693) by [@​adriangb](https://github.com/adriangb).
- 📝 Update docs, compare enums with identity instead of equality. PR [#​4905](https://github.com/tiangolo/fastapi/pull/4905) by [@​MicaelJarniac](https://github.com/MicaelJarniac).
- ✏ Fix typo in `docs/en/docs/python-types.md`. PR [#​4886](https://github.com/tiangolo/fastapi/pull/4886) by [@​MicaelJarniac](https://github.com/MicaelJarniac).
- 🎨 Fix syntax highlighting in docs for OpenAPI Callbacks. PR [#​4368](https://github.com/tiangolo/fastapi/pull/4368) by [@​xncbf](https://github.com/xncbf).
- ✏ Reword confusing sentence in docs file `typo-fix-path-params-numeric-validations.md`. PR [#​3219](https://github.com/tiangolo/fastapi/pull/3219) by [@​ccrenfroe](https://github.com/ccrenfroe).
- 📝 Update docs for handling HTTP Basic Auth with `secrets.compare_digest()` to account for non-ASCII characters. PR [#​3536](https://github.com/tiangolo/fastapi/pull/3536) by [@​lewoudar](https://github.com/lewoudar).
- 📝 Update docs for testing, fix examples with relative imports. PR [#​5302](https://github.com/tiangolo/fastapi/pull/5302) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- 🌐 Add Russian translation for `docs/ru/docs/index.md`. PR [#​5289](https://github.com/tiangolo/fastapi/pull/5289) by [@​impocode](https://github.com/impocode).
- 🌐 Add Russian translation for `docs/ru/docs/deployment/versions.md`. PR [#​4985](https://github.com/tiangolo/fastapi/pull/4985) by [@​emp7yhead](https://github.com/emp7yhead).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/header-params.md`. PR [#​4921](https://github.com/tiangolo/fastapi/pull/4921) by [@​batlopes](https://github.com/batlopes).
- 🌐 Update `ko/mkdocs.yml` for a missing link. PR [#​5020](https://github.com/tiangolo/fastapi/pull/5020) by [@​dalinaum](https://github.com/dalinaum).
##### Internal
- ⬆ Bump dawidd6/action-download-artifact from 2.21.1 to 2.22.0. PR [#​5258](https://github.com/tiangolo/fastapi/pull/5258) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ \[pre-commit.ci] pre-commit autoupdate. PR [#​5196](https://github.com/tiangolo/fastapi/pull/5196) by [@​pre-commit-ci\[bot\]](https://github.com/apps/pre-commit-ci).
- 🔥 Delete duplicated tests in `tests/test_tutorial/test_sql_databases/test_sql_databases.py`. PR [#​5040](https://github.com/tiangolo/fastapi/pull/5040) by [@​raccoonyy](https://github.com/raccoonyy).
- ♻ Simplify internal RegEx in `fastapi/utils.py`. PR [#​5057](https://github.com/tiangolo/fastapi/pull/5057) by [@​pylounge](https://github.com/pylounge).
- 🔧 Fix Type hint of `auto_error` which does not need to be `Optional[bool]`. PR [#​4933](https://github.com/tiangolo/fastapi/pull/4933) by [@​DavidKimDY](https://github.com/DavidKimDY).
- 🔧 Update mypy config, use `strict = true` instead of manual configs. PR [#​4605](https://github.com/tiangolo/fastapi/pull/4605) by [@​michaeloliverx](https://github.com/michaeloliverx).
- ♻ Change a `dict()` for `{}` in `fastapi/utils.py`. PR [#​3138](https://github.com/tiangolo/fastapi/pull/3138) by [@​ShahriyarR](https://github.com/ShahriyarR).
- ♻ Move internal variable for errors in `jsonable_encoder` to put related code closer. PR [#​4560](https://github.com/tiangolo/fastapi/pull/4560) by [@​GuilleQP](https://github.com/GuilleQP).
- ♻ Simplify conditional assignment in `fastapi/dependencies/utils.py`. PR [#​4597](https://github.com/tiangolo/fastapi/pull/4597) by [@​cikay](https://github.com/cikay).
- ⬆ Upgrade version pin accepted for Flake8, for internal code, to `flake8 >=3.8.3,<6.0.0`. PR [#​4097](https://github.com/tiangolo/fastapi/pull/4097) by [@​jamescurtin](https://github.com/jamescurtin).
- 🍱 Update Jina banner, fix typo. PR [#​5301](https://github.com/tiangolo/fastapi/pull/5301) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.80.0`](https://github.com/fastapi/fastapi/releases/tag/0.80.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.79.1...0.80.0)
##### Breaking Changes - Fixes
- 🐛 Fix `response_model` not invalidating `None`. PR [#​2725](https://github.com/tiangolo/fastapi/pull/2725) by [@​hukkin](https://github.com/hukkin).
If you are using `response_model` with some type that doesn't include `None` but the function is returning `None`, it will now raise an internal server error, because you are returning invalid data that violates the contract in `response_model`. Before this release it would allow breaking that contract returning `None`.
For example, if you have an app like this:
```Python
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: Optional[float] = None
owner_ids: Optional[List[int]] = None
app = FastAPI()
@​app.get("/items/invalidnone", response_model=Item)
def get_invalid_none():
return None
```
...calling the path `/items/invalidnone` will raise an error, because `None` is not a valid type for the `response_model` declared with `Item`.
You could also be implicitly returning `None` without realizing, for example:
```Python
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: Optional[float] = None
owner_ids: Optional[List[int]] = None
app = FastAPI()
@​app.get("/items/invalidnone", response_model=Item)
def get_invalid_none():
if flag:
return {"name": "foo"}
### if flag is False, at this point the function will implicitly return None
```
If you have *path operations* using `response_model` that need to be allowed to return `None`, make it explicit in `response_model` using `Union[Something, None]`:
```Python
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: Optional[float] = None
owner_ids: Optional[List[int]] = None
app = FastAPI()
@​app.get("/items/invalidnone", response_model=Union[Item, None])
def get_invalid_none():
return None
```
This way the data will be correctly validated, you won't have an internal server error, and the documentation will also reflect that this *path operation* could return `None` (or `null` in JSON).
##### Fixes
- ⬆ Upgrade Swagger UI copy of `oauth2-redirect.html` to include fixes for flavors of authorization code flows in Swagger UI. PR [#​3439](https://github.com/tiangolo/fastapi/pull/3439) initial PR by [@​koonpeng](https://github.com/koonpeng).
- ♻ Strip empty whitespace from description extracted from docstrings. PR [#​2821](https://github.com/tiangolo/fastapi/pull/2821) by [@​and-semakin](https://github.com/and-semakin).
- 🐛 Fix cached dependencies when using a dependency in `Security()` and other places (e.g. `Depends()`) with different OAuth2 scopes. PR [#​2945](https://github.com/tiangolo/fastapi/pull/2945) by [@​laggardkernel](https://github.com/laggardkernel).
- 🎨 Update type annotations for `response_model`, allow things like `Union[str, None]`. PR [#​5294](https://github.com/tiangolo/fastapi/pull/5294) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- 🌐 Fix typos in German translation for `docs/de/docs/features.md`. PR [#​4533](https://github.com/tiangolo/fastapi/pull/4533) by [@​0xflotus](https://github.com/0xflotus).
- 🌐 Add missing navigator for `encoder.md` in Korean translation. PR [#​5238](https://github.com/tiangolo/fastapi/pull/5238) by [@​joonas-yoon](https://github.com/joonas-yoon).
- (Empty PR merge by accident) [#​4913](https://github.com/tiangolo/fastapi/pull/4913).
### [`v0.79.1`](https://github.com/fastapi/fastapi/releases/tag/0.79.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.79.0...0.79.1)
##### Fixes
- 🐛 Fix `jsonable_encoder` using `include` and `exclude` parameters for non-Pydantic objects. PR [#​2606](https://github.com/tiangolo/fastapi/pull/2606) by [@​xaviml](https://github.com/xaviml).
- 🐛 Fix edge case with repeated aliases names not shown in OpenAPI. PR [#​2351](https://github.com/tiangolo/fastapi/pull/2351) by [@​klaa97](https://github.com/klaa97).
- 📝 Add misc dependency installs to tutorial docs. PR [#​2126](https://github.com/tiangolo/fastapi/pull/2126) by [@​TeoZosa](https://github.com/TeoZosa).
##### Docs
- 📝 Add note giving credit for illustrations to [Ketrina Thompson](https://www.instagram.com/ketrinadrawsalot/). PR [#​5284](https://github.com/tiangolo/fastapi/pull/5284) by [@​tiangolo](https://github.com/tiangolo).
- ✏ Fix typo in `python-types.md`. PR [#​5116](https://github.com/tiangolo/fastapi/pull/5116) by [@​Kludex](https://github.com/Kludex).
- ✏ Fix typo in `docs/en/docs/python-types.md`. PR [#​5007](https://github.com/tiangolo/fastapi/pull/5007) by [@​atiabbz](https://github.com/atiabbz).
- 📝 Remove unneeded Django/Flask references from async topic intro. PR [#​5280](https://github.com/tiangolo/fastapi/pull/5280) by [@​carltongibson](https://github.com/carltongibson).
- ✨ Add illustrations for Concurrent burgers and Parallel burgers. PR [#​5277](https://github.com/tiangolo/fastapi/pull/5277) by [@​tiangolo](https://github.com/tiangolo). Updated docs at: [Concurrency and Burgers](https://fastapi.tiangolo.com/async/#concurrency-and-burgers).
##### Translations
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/query-params.md`. PR [#​4775](https://github.com/tiangolo/fastapi/pull/4775) by [@​batlopes](https://github.com/batlopes).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/security/first-steps.md`. PR [#​4954](https://github.com/tiangolo/fastapi/pull/4954) by [@​FLAIR7](https://github.com/FLAIR7).
- 🌐 Add translation for `docs/zh/docs/advanced/response-cookies.md`. PR [#​4638](https://github.com/tiangolo/fastapi/pull/4638) by [@​zhangbo2012](https://github.com/zhangbo2012).
- 🌐 Add French translation for `docs/fr/docs/deployment/index.md`. PR [#​3689](https://github.com/tiangolo/fastapi/pull/3689) by [@​rjNemo](https://github.com/rjNemo).
- 🌐 Add Portuguese translation for `tutorial/handling-errors.md`. PR [#​4769](https://github.com/tiangolo/fastapi/pull/4769) by [@​frnsimoes](https://github.com/frnsimoes).
- 🌐 Add French translation for `docs/fr/docs/history-design-future.md`. PR [#​3451](https://github.com/tiangolo/fastapi/pull/3451) by [@​rjNemo](https://github.com/rjNemo).
- 🌐 Add Russian translation for `docs/ru/docs/tutorial/background-tasks.md`. PR [#​4854](https://github.com/tiangolo/fastapi/pull/4854) by [@​AdmiralDesu](https://github.com/AdmiralDesu).
- 🌐 Add Chinese translation for `docs/tutorial/security/first-steps.md`. PR [#​3841](https://github.com/tiangolo/fastapi/pull/3841) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Add Japanese translation for `docs/ja/docs/advanced/nosql-databases.md`. PR [#​4205](https://github.com/tiangolo/fastapi/pull/4205) by [@​sUeharaE4](https://github.com/sUeharaE4).
- 🌐 Add Indonesian translation for `docs/id/docs/tutorial/index.md`. PR [#​4705](https://github.com/tiangolo/fastapi/pull/4705) by [@​bas-baskara](https://github.com/bas-baskara).
- 🌐 Add Persian translation for `docs/fa/docs/index.md` and tweak right-to-left CSS. PR [#​2395](https://github.com/tiangolo/fastapi/pull/2395) by [@​mohsen-mahmoodi](https://github.com/mohsen-mahmoodi).
##### Internal
- 🔧 Update Jina sponsorship. PR [#​5283](https://github.com/tiangolo/fastapi/pull/5283) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update Jina sponsorship. PR [#​5272](https://github.com/tiangolo/fastapi/pull/5272) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, Striveworks badge. PR [#​5179](https://github.com/tiangolo/fastapi/pull/5179) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.79.0`](https://github.com/fastapi/fastapi/releases/tag/0.79.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.78.0...0.79.0)
##### Fixes - Breaking Changes
- 🐛 Fix removing body from status codes that do not support it. PR [#​5145](https://github.com/tiangolo/fastapi/pull/5145) by [@​tiangolo](https://github.com/tiangolo).
- Setting `status_code` to `204`, `304`, or any code below `200` (1xx) will remove the body from the response.
- This fixes an error in Uvicorn that otherwise would be thrown: `RuntimeError: Response content longer than Content-Length`.
- This removes `fastapi.openapi.constants.STATUS_CODES_WITH_NO_BODY`, it is replaced by a function in utils.
##### Translations
- 🌐 Start of Hebrew translation. PR [#​5050](https://github.com/tiangolo/fastapi/pull/5050) by [@​itay-raveh](https://github.com/itay-raveh).
- 🔧 Add config for Swedish translations notification. PR [#​5147](https://github.com/tiangolo/fastapi/pull/5147) by [@​tiangolo](https://github.com/tiangolo).
- 🌐 Start of Swedish translation. PR [#​5062](https://github.com/tiangolo/fastapi/pull/5062) by [@​MrRawbin](https://github.com/MrRawbin).
- 🌐 Add Japanese translation for `docs/ja/docs/advanced/index.md`. PR [#​5043](https://github.com/tiangolo/fastapi/pull/5043) by [@​wakabame](https://github.com/wakabame).
- 🌐🇵🇱 Add Polish translation for `docs/pl/docs/tutorial/first-steps.md`. PR [#​5024](https://github.com/tiangolo/fastapi/pull/5024) by [@​Valaraucoo](https://github.com/Valaraucoo).
##### Internal
- 🔧 Update translations notification for Hebrew. PR [#​5158](https://github.com/tiangolo/fastapi/pull/5158) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update Dependabot commit message. PR [#​5156](https://github.com/tiangolo/fastapi/pull/5156) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Bump actions/upload-artifact from 2 to 3. PR [#​5148](https://github.com/tiangolo/fastapi/pull/5148) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump actions/cache from 2 to 3. PR [#​5149](https://github.com/tiangolo/fastapi/pull/5149) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 🔧 Update sponsors badge configs. PR [#​5155](https://github.com/tiangolo/fastapi/pull/5155) by [@​tiangolo](https://github.com/tiangolo).
- 👥 Update FastAPI People. PR [#​5154](https://github.com/tiangolo/fastapi/pull/5154) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update Jina sponsor badges. PR [#​5151](https://github.com/tiangolo/fastapi/pull/5151) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Bump actions/checkout from 2 to 3. PR [#​5133](https://github.com/tiangolo/fastapi/pull/5133) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ \[pre-commit.ci] pre-commit autoupdate. PR [#​5030](https://github.com/tiangolo/fastapi/pull/5030) by [@​pre-commit-ci\[bot\]](https://github.com/apps/pre-commit-ci).
- ⬆ Bump nwtgck/actions-netlify from 1.1.5 to 1.2.3. PR [#​5132](https://github.com/tiangolo/fastapi/pull/5132) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump codecov/codecov-action from 2 to 3. PR [#​5131](https://github.com/tiangolo/fastapi/pull/5131) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump dawidd6/action-download-artifact from 2.9.0 to 2.21.1. PR [#​5130](https://github.com/tiangolo/fastapi/pull/5130) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- ⬆ Bump actions/setup-python from 2 to 4. PR [#​5129](https://github.com/tiangolo/fastapi/pull/5129) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- 👷 Add Dependabot. PR [#​5128](https://github.com/tiangolo/fastapi/pull/5128) by [@​tiangolo](https://github.com/tiangolo).
- ♻️ Move from `Optional[X]` to `Union[X, None]` for internal utils. PR [#​5124](https://github.com/tiangolo/fastapi/pull/5124) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, remove Dropbase, add Doist. PR [#​5096](https://github.com/tiangolo/fastapi/pull/5096) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, remove Classiq, add ImgWhale. PR [#​5079](https://github.com/tiangolo/fastapi/pull/5079) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.78.0`](https://github.com/fastapi/fastapi/releases/tag/0.78.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.77.1...0.78.0)
##### Features
- ✨ Add support for omitting `...` as default value when declaring required parameters with:
- `Path()`
- `Query()`
- `Header()`
- `Cookie()`
- `Body()`
- `Form()`
- `File()`
New docs at [Tutorial - Query Parameters and String Validations - Make it required](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#make-it-required). PR [#​4906](https://github.com/tiangolo/fastapi/pull/4906) by [@​tiangolo](https://github.com/tiangolo).
Up to now, declaring a required parameter while adding additional validation or metadata needed using `...` (Ellipsis).
For example:
```Python
from fastapi import Cookie, FastAPI, Header, Path, Query
app = FastAPI()
@​app.get("/items/{item_id}")
def main(
item_id: int = Path(default=..., gt=0),
query: str = Query(default=..., max_length=10),
session: str = Cookie(default=..., min_length=3),
x_trace: str = Header(default=..., title="Tracing header"),
):
return {"message": "Hello World"}
```
...all these parameters are required because the default value is `...` (Ellipsis).
But now it's possible and supported to just omit the default value, as would be done with Pydantic fields, and the parameters would still be required.
✨ For example, this is now supported:
```Python
from fastapi import Cookie, FastAPI, Header, Path, Query
app = FastAPI()
@​app.get("/items/{item_id}")
def main(
item_id: int = Path(gt=0),
query: str = Query(max_length=10),
session: str = Cookie(min_length=3),
x_trace: str = Header(title="Tracing header"),
):
return {"message": "Hello World"}
```
To declare parameters as optional (not required), you can set a default value as always, for example using `None`:
```Python
from typing import Union
from fastapi import Cookie, FastAPI, Header, Path, Query
app = FastAPI()
@​app.get("/items/{item_id}")
def main(
item_id: int = Path(gt=0),
query: Union[str, None] = Query(default=None, max_length=10),
session: Union[str, None] = Cookie(default=None, min_length=3),
x_trace: Union[str, None] = Header(default=None, title="Tracing header"),
):
return {"message": "Hello World"}
```
##### Docs
- 📝 Add docs recommending `Union` over `Optional` and migrate source examples. New docs at [Python Types Intro - Using `Union` or `Optional`](https://fastapi.tiangolo.com/python-types/#using-union-or-optional). PR [#​4908](https://github.com/tiangolo/fastapi/pull/4908) by [@​tiangolo](https://github.com/tiangolo).
- 🎨 Fix default value as set in tutorial for Path Operations Advanced Configurations. PR [#​4899](https://github.com/tiangolo/fastapi/pull/4899) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Add documentation for redefined path operations. PR [#​4864](https://github.com/tiangolo/fastapi/pull/4864) by [@​madkinsz](https://github.com/madkinsz).
- 📝 Updates links for Celery documentation. PR [#​4736](https://github.com/tiangolo/fastapi/pull/4736) by [@​sammyzord](https://github.com/sammyzord).
- ✏ Fix example code with sets in tutorial for body nested models. PR [#​3030](https://github.com/tiangolo/fastapi/pull/3030) by [@​hitrust](https://github.com/hitrust).
- ✏ Fix links to Pydantic docs. PR [#​4670](https://github.com/tiangolo/fastapi/pull/4670) by [@​kinuax](https://github.com/kinuax).
- 📝 Update docs about Swagger UI self-hosting with newer source links. PR [#​4813](https://github.com/tiangolo/fastapi/pull/4813) by [@​Kastakin](https://github.com/Kastakin).
- 📝 Add link to external article: Building the Poll App From Django Tutorial With FastAPI And React. PR [#​4778](https://github.com/tiangolo/fastapi/pull/4778) by [@​jbrocher](https://github.com/jbrocher).
- 📝 Add OpenAPI warning to "Body - Fields" docs with extra schema extensions. PR [#​4846](https://github.com/tiangolo/fastapi/pull/4846) by [@​ml-evs](https://github.com/ml-evs).
##### Translations
- 🌐 Fix code examples in Japanese translation for `docs/ja/docs/tutorial/testing.md`. PR [#​4623](https://github.com/tiangolo/fastapi/pull/4623) by [@​hirotoKirimaru](https://github.com/hirotoKirimaru).
##### Internal
- ♻ Refactor dict value extraction to minimize key lookups `fastapi/utils.py`. PR [#​3139](https://github.com/tiangolo/fastapi/pull/3139) by [@​ShahriyarR](https://github.com/ShahriyarR).
- ✅ Add tests for required nonable parameters and body fields. PR [#​4907](https://github.com/tiangolo/fastapi/pull/4907) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Fix installing Material for MkDocs Insiders in CI. PR [#​4897](https://github.com/tiangolo/fastapi/pull/4897) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Add pre-commit CI instead of custom GitHub Action. PR [#​4896](https://github.com/tiangolo/fastapi/pull/4896) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Add pre-commit GitHub Action workflow. PR [#​4895](https://github.com/tiangolo/fastapi/pull/4895) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Add dark mode auto switch to docs based on OS preference. PR [#​4869](https://github.com/tiangolo/fastapi/pull/4869) by [@​ComicShrimp](https://github.com/ComicShrimp).
- 🔥 Remove un-used old pending tests, already covered in other places. PR [#​4891](https://github.com/tiangolo/fastapi/pull/4891) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Add Python formatting hooks to pre-commit. PR [#​4890](https://github.com/tiangolo/fastapi/pull/4890) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Add pre-commit with first config and first formatting pass. PR [#​4888](https://github.com/tiangolo/fastapi/pull/4888) by [@​tiangolo](https://github.com/tiangolo).
- 👷 Disable CI installing Material for MkDocs in forks. PR [#​4410](https://github.com/tiangolo/fastapi/pull/4410) by [@​dolfinus](https://github.com/dolfinus).
### [`v0.77.1`](https://github.com/fastapi/fastapi/releases/tag/0.77.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.77.0...0.77.1)
##### Upgrades
- ⬆ Upgrade Starlette from 0.19.0 to 0.19.1. PR [#​4819](https://github.com/tiangolo/fastapi/pull/4819) by [@​Kludex](https://github.com/Kludex).
##### Docs
- 📝 Add link to german article: REST-API Programmieren mittels Python und dem FastAPI Modul. PR [#​4624](https://github.com/tiangolo/fastapi/pull/4624) by [@​fschuermeyer](https://github.com/fschuermeyer).
- 📝 Add external link: PyCharm Guide to FastAPI. PR [#​4512](https://github.com/tiangolo/fastapi/pull/4512) by [@​mukulmantosh](https://github.com/mukulmantosh).
- 📝 Add external link to article: Building an API with FastAPI and Supabase and Deploying on Deta. PR [#​4440](https://github.com/tiangolo/fastapi/pull/4440) by [@​aUnicornDev](https://github.com/aUnicornDev).
- ✏ Fix small typo in `docs/en/docs/tutorial/security/first-steps.md`. PR [#​4515](https://github.com/tiangolo/fastapi/pull/4515) by [@​KikoIlievski](https://github.com/KikoIlievski).
##### Translations
- 🌐 Add Polish translation for `docs/pl/docs/tutorial/index.md`. PR [#​4516](https://github.com/tiangolo/fastapi/pull/4516) by [@​MKaczkow](https://github.com/MKaczkow).
- ✏ Fix typo in deployment. PR [#​4629](https://github.com/tiangolo/fastapi/pull/4629) by [@​raisulislam541](https://github.com/raisulislam541).
- 🌐 Add Portuguese translation for `docs/pt/docs/help-fastapi.md`. PR [#​4583](https://github.com/tiangolo/fastapi/pull/4583) by [@​mateusjs](https://github.com/mateusjs).
##### Internal
- 🔧 Add notifications in issue for Uzbek translations. PR [#​4884](https://github.com/tiangolo/fastapi/pull/4884) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.77.0`](https://github.com/fastapi/fastapi/releases/tag/0.77.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.76.0...0.77.0)
##### Upgrades
- ⬆ Upgrade Starlette from 0.18.0 to 0.19.0. PR [#​4488](https://github.com/tiangolo/fastapi/pull/4488) by [@​Kludex](https://github.com/Kludex).
- When creating an explicit `JSONResponse` the `content` argument is now required.
##### Docs
- 📝 Add external link to article: Seamless FastAPI Configuration with ConfZ. PR [#​4414](https://github.com/tiangolo/fastapi/pull/4414) by [@​silvanmelchior](https://github.com/silvanmelchior).
- 📝 Add external link to article: 5 Advanced Features of FastAPI You Should Try. PR [#​4436](https://github.com/tiangolo/fastapi/pull/4436) by [@​kaustubhgupta](https://github.com/kaustubhgupta).
- ✏ Reword to improve legibility of docs about `TestClient`. PR [#​4389](https://github.com/tiangolo/fastapi/pull/4389) by [@​rgilton](https://github.com/rgilton).
- 📝 Add external link to blog post about Kafka, FastAPI, and Ably. PR [#​4044](https://github.com/tiangolo/fastapi/pull/4044) by [@​Ugbot](https://github.com/Ugbot).
- ✏ Fix typo in `docs/en/docs/tutorial/sql-databases.md`. PR [#​4875](https://github.com/tiangolo/fastapi/pull/4875) by [@​wpyoga](https://github.com/wpyoga).
- ✏ Fix typo in `docs/en/docs/async.md`. PR [#​4726](https://github.com/tiangolo/fastapi/pull/4726) by [@​Prezu](https://github.com/Prezu).
##### Translations
- 🌐 Update source example highlights for `docs/zh/docs/tutorial/query-params-str-validations.md`. PR [#​4237](https://github.com/tiangolo/fastapi/pull/4237) by [@​caimaoy](https://github.com/caimaoy).
- 🌐 Remove translation docs references to aiofiles as it's no longer needed since AnyIO. PR [#​3594](https://github.com/tiangolo/fastapi/pull/3594) by [@​alonme](https://github.com/alonme).
- ✏ 🌐 Fix typo in Portuguese translation for `docs/pt/docs/tutorial/path-params.md`. PR [#​4722](https://github.com/tiangolo/fastapi/pull/4722) by [@​CleoMenezesJr](https://github.com/CleoMenezesJr).
- 🌐 Fix live docs server for translations for some languages. PR [#​4729](https://github.com/tiangolo/fastapi/pull/4729) by [@​wakabame](https://github.com/wakabame).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/cookie-params.md`. PR [#​4112](https://github.com/tiangolo/fastapi/pull/4112) by [@​lbmendes](https://github.com/lbmendes).
- 🌐 Fix French translation for `docs/tutorial/body.md`. PR [#​4332](https://github.com/tiangolo/fastapi/pull/4332) by [@​Smlep](https://github.com/Smlep).
- 🌐 Add Japanese translation for `docs/ja/docs/advanced/conditional-openapi.md`. PR [#​2631](https://github.com/tiangolo/fastapi/pull/2631) by [@​sh0nk](https://github.com/sh0nk).
- 🌐 Fix Japanese translation of `docs/ja/docs/tutorial/body.md`. PR [#​3062](https://github.com/tiangolo/fastapi/pull/3062) by [@​a-takahashi223](https://github.com/a-takahashi223).
- 🌐 Add Portuguese translation for `docs/pt/docs/tutorial/background-tasks.md`. PR [#​2170](https://github.com/tiangolo/fastapi/pull/2170) by [@​izaguerreiro](https://github.com/izaguerreiro).
- 🌐 Add Portuguese translation for `docs/deployment/deta.md`. PR [#​4442](https://github.com/tiangolo/fastapi/pull/4442) by [@​lsglucas](https://github.com/lsglucas).
- 🌐 Add Russian translation for `docs/async.md`. PR [#​4036](https://github.com/tiangolo/fastapi/pull/4036) by [@​Winand](https://github.com/Winand).
- 🌐 Add Portuguese translation for `docs/tutorial/body.md`. PR [#​3960](https://github.com/tiangolo/fastapi/pull/3960) by [@​leandrodesouzadev](https://github.com/leandrodesouzadev).
- 🌐 Add Portuguese translation of `tutorial/extra-data-types.md`. PR [#​4077](https://github.com/tiangolo/fastapi/pull/4077) by [@​luccasmmg](https://github.com/luccasmmg).
- 🌐 Update German translation for `docs/features.md`. PR [#​3905](https://github.com/tiangolo/fastapi/pull/3905) by [@​jomue](https://github.com/jomue).
### [`v0.76.0`](https://github.com/fastapi/fastapi/releases/tag/0.76.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.75.2...0.76.0)
##### Upgrades
- ⬆ Upgrade Starlette from 0.17.1 to 0.18.0. PR [#​4483](https://github.com/tiangolo/fastapi/pull/4483) by [@​Kludex](https://github.com/Kludex).
##### Internal
- 👥 Update FastAPI People. PR [#​4847](https://github.com/tiangolo/fastapi/pull/4847) by [@​github-actions\[bot\]](https://github.com/apps/github-actions).
- 🔧 Add Budget Insight sponsor. PR [#​4824](https://github.com/tiangolo/fastapi/pull/4824) by [@​tiangolo](https://github.com/tiangolo).
- 🍱 Update sponsor, ExoFlare badge. PR [#​4822](https://github.com/tiangolo/fastapi/pull/4822) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update sponsors, enable Dropbase again, update TalkPython link. PR [#​4821](https://github.com/tiangolo/fastapi/pull/4821) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.75.2`](https://github.com/fastapi/fastapi/releases/tag/0.75.2)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.75.1...0.75.2)
This release includes upgrades to third-party packages that handle security issues. Although there's a chance these issues don't affect you in particular, please upgrade as soon as possible.
##### Fixes
- ✅ Fix new/recent tests with new fixed `ValidationError` JSON Schema. PR [#​4806](https://github.com/tiangolo/fastapi/pull/4806) by [@​tiangolo](https://github.com/tiangolo).
- 🐛 Fix JSON Schema for `ValidationError` at field `loc`. PR [#​3810](https://github.com/tiangolo/fastapi/pull/3810) by [@​dconathan](https://github.com/dconathan).
- 🐛 Fix support for prefix on APIRouter WebSockets. PR [#​2640](https://github.com/tiangolo/fastapi/pull/2640) by [@​Kludex](https://github.com/Kludex).
##### Upgrades
- ⬆️ Update ujson ranges for CVE-2021-45958. PR [#​4804](https://github.com/tiangolo/fastapi/pull/4804) by [@​tiangolo](https://github.com/tiangolo).
- ⬆️ Upgrade dependencies upper range for extras "all". PR [#​4803](https://github.com/tiangolo/fastapi/pull/4803) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Upgrade Swagger UI - swagger-ui-dist@4. This handles a security issue in Swagger UI itself where it could be possible to inject HTML into Swagger UI. Please upgrade as soon as you can, in particular if you expose your Swagger UI (`/docs`) publicly to non-expert users. PR [#​4347](https://github.com/tiangolo/fastapi/pull/4347) by [@​RAlanWright](https://github.com/RAlanWright).
##### Internal
- 🔧 Update sponsors, add: ExoFlare, Ines Course; remove: Dropbase, Vim.so, Calmcode; update: Striveworks, TalkPython and TestDriven.io. PR [#​4805](https://github.com/tiangolo/fastapi/pull/4805) by [@​tiangolo](https://github.com/tiangolo).
- ⬆️ Upgrade Codecov GitHub Action. PR [#​4801](https://github.com/tiangolo/fastapi/pull/4801) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.75.1`](https://github.com/fastapi/fastapi/releases/tag/0.75.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.75.0...0.75.1)
##### Translations
- 🌐 Start Dutch translations. PR [#​4703](https://github.com/tiangolo/fastapi/pull/4703) by [@​tiangolo](https://github.com/tiangolo).
- 🌐 Start Persian/Farsi translations. PR [#​4243](https://github.com/tiangolo/fastapi/pull/4243) by [@​aminalaee](https://github.com/aminalaee).
- ✏ Reword sentence about handling errors. PR [#​1993](https://github.com/tiangolo/fastapi/pull/1993) by [@​khuhroproeza](https://github.com/khuhroproeza).
##### Internal
- 👥 Update FastAPI People. PR [#​4752](https://github.com/tiangolo/fastapi/pull/4752) by [@​github-actions\[bot\]](https://github.com/apps/github-actions).
- ➖ Temporarily remove typer-cli from dependencies and upgrade Black to unblock Pydantic CI. PR [#​4754](https://github.com/tiangolo/fastapi/pull/4754) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Add configuration to notify Dutch translations. PR [#​4702](https://github.com/tiangolo/fastapi/pull/4702) by [@​tiangolo](https://github.com/tiangolo).
- 👥 Update FastAPI People. PR [#​4699](https://github.com/tiangolo/fastapi/pull/4699) by [@​github-actions\[bot\]](https://github.com/apps/github-actions).
- 🐛 Fix FastAPI People generation to include missing file in commit. PR [#​4695](https://github.com/tiangolo/fastapi/pull/4695) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Update Classiq sponsor links. PR [#​4688](https://github.com/tiangolo/fastapi/pull/4688) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Add Classiq sponsor. PR [#​4671](https://github.com/tiangolo/fastapi/pull/4671) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Add Jina's QA Bot to the docs to help people that want to ask quick questions. PR [#​4655](https://github.com/tiangolo/fastapi/pull/4655) by [@​tiangolo](https://github.com/tiangolo) based on original PR [#​4626](https://github.com/tiangolo/fastapi/pull/4626) by [@​hanxiao](https://github.com/hanxiao).
### [`v0.75.0`](https://github.com/fastapi/fastapi/releases/tag/0.75.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.74.1...0.75.0)
##### Features
- ✨ Add support for custom `generate_unique_id_function` and docs for generating clients. New docs: [Advanced - Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/). PR [#​4650](https://github.com/tiangolo/fastapi/pull/4650) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.74.1`](https://github.com/fastapi/fastapi/releases/tag/0.74.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.74.0...0.74.1)
##### Features
- ✨ Include route in scope to allow middleware and other tools to extract its information. PR [#​4603](https://github.com/tiangolo/fastapi/pull/4603) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.74.0`](https://github.com/fastapi/fastapi/releases/tag/0.74.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.73.0...0.74.0)
##### Breaking Changes
- ✨ Update internal `AsyncExitStack` to fix context for dependencies with `yield`. PR [#​4575](https://github.com/tiangolo/fastapi/pull/4575) by [@​tiangolo](https://github.com/tiangolo).
Dependencies with `yield` can now catch `HTTPException` and custom exceptions. For example:
```Python
async def get_database():
with Session() as session:
try:
yield session
except HTTPException:
session.rollback()
raise
finally:
session.close()
```
After the dependency with `yield` handles the exception (or not) the exception is raised again. So that any exception handlers can catch it, or ultimately the default internal `ServerErrorMiddleware`.
If you depended on exceptions not being received by dependencies with `yield`, and receiving an exception breaks the code after `yield`, you can use a block with `try` and `finally`:
```Python
async def do_something():
try:
yield something
finally:
some_cleanup()
```
...that way the `finally` block is run regardless of any exception that might happen.
##### Features
- The same PR [#​4575](https://github.com/tiangolo/fastapi/pull/4575) from above also fixes the `contextvars` context for the code before and after `yield`. This was the main objective of that PR.
This means that now, if you set a value in a context variable before `yield`, the value would still be available after `yield` (as you would intuitively expect). And it also means that you can reset the context variable with a token afterwards.
For example, this works correctly now:
```Python
from contextvars import ContextVar
from typing import Any, Dict, Optional
legacy_request_state_context_var: ContextVar[Optional[Dict[str, Any]]] = ContextVar(
"legacy_request_state_context_var", default=None
)
async def set_up_request_state_dependency():
request_state = {"user": "deadpond"}
contextvar_token = legacy_request_state_context_var.set(request_state)
yield request_state
legacy_request_state_context_var.reset(contextvar_token)
```
...before this change it would raise an error when resetting the context variable, because the `contextvars` context was different, because of the way it was implemented.
**Note**: You probably don't need `contextvars`, and you should probably avoid using them. But they are powerful and useful in some advanced scenarios, for example, migrating from code that used Flask's `g` semi-global variable.
**Technical Details**: If you want to know more of the technical details you can check out the PR description [#​4575](https://github.com/tiangolo/fastapi/pull/4575).
##### Internal
- 🔧 Add Striveworks sponsor. PR [#​4596](https://github.com/tiangolo/fastapi/pull/4596) by [@​tiangolo](https://github.com/tiangolo).
- 💚 Only build docs on push when on master to avoid duplicate runs from PRs. PR [#​4564](https://github.com/tiangolo/fastapi/pull/4564) by [@​tiangolo](https://github.com/tiangolo).
- 👥 Update FastAPI People. PR [#​4502](https://github.com/tiangolo/fastapi/pull/4502) by [@​github-actions\[bot\]](https://github.com/apps/github-actions).
### [`v0.73.0`](https://github.com/fastapi/fastapi/releases/tag/0.73.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.72.0...0.73.0)
##### Features
- ✨ Add support for declaring `UploadFile` parameters without explicit `File()`. PR [#​4469](https://github.com/tiangolo/fastapi/pull/4469) by [@​tiangolo](https://github.com/tiangolo). New docs: [Request Files - File Parameters with UploadFile](https://fastapi.tiangolo.com/tutorial/request-files/#file-parameters-with-uploadfile).
- ✨ Add support for tags with Enums. PR [#​4468](https://github.com/tiangolo/fastapi/pull/4468) by [@​tiangolo](https://github.com/tiangolo). New docs: [Path Operation Configuration - Tags with Enums](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags-with-enums).
- ✨ Allow hiding from OpenAPI (and Swagger UI) `Query`, `Cookie`, `Header`, and `Path` parameters. PR [#​3144](https://github.com/tiangolo/fastapi/pull/3144) by [@​astraldawn](https://github.com/astraldawn). New docs: [Query Parameters and String Validations - Exclude from OpenAPI](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi).
##### Docs
- 📝 Tweak and improve docs for Request Files. PR [#​4470](https://github.com/tiangolo/fastapi/pull/4470) by [@​tiangolo](https://github.com/tiangolo).
##### Fixes
- 🐛 Fix bug preventing to use OpenAPI when using tuples. PR [#​3874](https://github.com/tiangolo/fastapi/pull/3874) by [@​victorbenichoux](https://github.com/victorbenichoux).
- 🐛 Prefer custom encoder over defaults if specified in `jsonable_encoder`. PR [#​2061](https://github.com/tiangolo/fastapi/pull/2061) by [@​viveksunder](https://github.com/viveksunder).
- 💚 Duplicate PR to trigger CI. PR [#​4467](https://github.com/tiangolo/fastapi/pull/4467) by [@​tiangolo](https://github.com/tiangolo).
##### Internal
- 🐛 Fix docs dependencies cache, to get the latest Material for MkDocs. PR [#​4466](https://github.com/tiangolo/fastapi/pull/4466) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Add sponsor Dropbase. PR [#​4465](https://github.com/tiangolo/fastapi/pull/4465) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.72.0`](https://github.com/fastapi/fastapi/releases/tag/0.72.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.71.0...0.72.0)
##### Features
- ✨ Enable configuring Swagger UI parameters. Original PR [#​2568](https://github.com/tiangolo/fastapi/pull/2568) by [@​jmriebold](https://github.com/jmriebold). Here are the new docs: [Configuring Swagger UI](https://fastapi.tiangolo.com/advanced/extending-openapi/#configuring-swagger-ui).
##### Docs
- 📝 Update Python Types docs, add missing 3.6 / 3.9 example. PR [#​4434](https://github.com/tiangolo/fastapi/pull/4434) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- 🌐 Update Chinese translation for `docs/help-fastapi.md`. PR [#​3847](https://github.com/tiangolo/fastapi/pull/3847) by [@​jaystone776](https://github.com/jaystone776).
- 🌐 Fix Korean translation for `docs/ko/docs/index.md`. PR [#​4195](https://github.com/tiangolo/fastapi/pull/4195) by [@​kty4119](https://github.com/kty4119).
- 🌐 Add Polish translation for `docs/pl/docs/index.md`. PR [#​4245](https://github.com/tiangolo/fastapi/pull/4245) by [@​MicroPanda123](https://github.com/MicroPanda123).
- 🌐 Add Chinese translation for `docs\tutorial\path-operation-configuration.md`. PR [#​3312](https://github.com/tiangolo/fastapi/pull/3312) by [@​jaystone776](https://github.com/jaystone776).
##### Internal
- 🔧 Enable MkDocs Material Insiders' `content.tabs.link`. PR [#​4399](https://github.com/tiangolo/fastapi/pull/4399) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.71.0`](https://github.com/fastapi/fastapi/releases/tag/0.71.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.70.1...0.71.0)
##### Features
- ✨ Add docs and tests for Python 3.9 and Python 3.10. PR [#​3712](https://github.com/tiangolo/fastapi/pull/3712) by [@​tiangolo](https://github.com/tiangolo).
- You can start with [Python Types Intro](https://fastapi.tiangolo.com/python-types/), it explains what changes between different Python versions, in Python 3.9 and in Python 3.10.
- All the FastAPI docs are updated. Each code example in the docs that could use different syntax in Python 3.9 or Python 3.10 now has all the alternatives in tabs.
- ⬆️ Upgrade Starlette to 0.17.1. PR [#​4145](https://github.com/tiangolo/fastapi/pull/4145) by [@​simondale00](https://github.com/simondale00).
##### Internal
- 👥 Update FastAPI People. PR [#​4354](https://github.com/tiangolo/fastapi/pull/4354) by [@​github-actions\[bot\]](https://github.com/apps/github-actions).
- 🔧 Add FastAPI Trove Classifier for PyPI as now there's one 🤷😁. PR [#​4386](https://github.com/tiangolo/fastapi/pull/4386) by [@​tiangolo](https://github.com/tiangolo).
- ⬆ Upgrade MkDocs Material and configs. PR [#​4385](https://github.com/tiangolo/fastapi/pull/4385) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.70.1`](https://github.com/fastapi/fastapi/releases/tag/0.70.1)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.70.0...0.70.1)
There's nothing interesting in this particular FastAPI release. It is mainly to enable/unblock the release of the next version of Pydantic that comes packed with features and improvements. 🤩
##### Fixes
- 🐛 Fix JSON Schema for dataclasses, supporting the fixes in Pydantic 1.9. PR [#​4272](https://github.com/tiangolo/fastapi/pull/4272) by [@​PrettyWood](https://github.com/PrettyWood).
##### Translations
- 🌐 Add Korean translation for `docs/tutorial/request-forms-and-files.md`. PR [#​3744](https://github.com/tiangolo/fastapi/pull/3744) by [@​NinaHwang](https://github.com/NinaHwang).
- 🌐 Add Korean translation for `docs/tutorial/request-files.md`. PR [#​3743](https://github.com/tiangolo/fastapi/pull/3743) by [@​NinaHwang](https://github.com/NinaHwang).
- 🌐 Add portuguese translation for `docs/tutorial/query-params-str-validations.md`. PR [#​3965](https://github.com/tiangolo/fastapi/pull/3965) by [@​leandrodesouzadev](https://github.com/leandrodesouzadev).
- 🌐 Add Korean translation for `docs/tutorial/response-status-code.md`. PR [#​3742](https://github.com/tiangolo/fastapi/pull/3742) by [@​NinaHwang](https://github.com/NinaHwang).
- 🌐 Add Korean translation for Tutorial - JSON Compatible Encoder. PR [#​3152](https://github.com/tiangolo/fastapi/pull/3152) by [@​NEONKID](https://github.com/NEONKID).
- 🌐 Add Korean translation for Tutorial - Path Parameters and Numeric Validations. PR [#​2432](https://github.com/tiangolo/fastapi/pull/2432) by [@​hard-coders](https://github.com/hard-coders).
- 🌐 Add Korean translation for `docs/ko/docs/deployment/versions.md`. PR [#​4121](https://github.com/tiangolo/fastapi/pull/4121) by [@​DevDae](https://github.com/DevDae).
- 🌐 Fix Korean translation for `docs/ko/docs/tutorial/index.md`. PR [#​4193](https://github.com/tiangolo/fastapi/pull/4193) by [@​kimjaeyoonn](https://github.com/kimjaeyoonn).
- 🔧 Add CryptAPI sponsor. PR [#​4264](https://github.com/tiangolo/fastapi/pull/4264) by [@​tiangolo](https://github.com/tiangolo).
- 📝 Update `docs/tutorial/dependencies/classes-as-dependencies`: Add type of query parameters in a description of `Classes as dependencies`. PR [#​4015](https://github.com/tiangolo/fastapi/pull/4015) by [@​0417taehyun](https://github.com/0417taehyun).
- 🌐 Add French translation for Tutorial - First steps. PR [#​3455](https://github.com/tiangolo/fastapi/pull/3455) by [@​Smlep](https://github.com/Smlep).
- 🌐 Add French translation for `docs/tutorial/path-params.md`. PR [#​3548](https://github.com/tiangolo/fastapi/pull/3548) by [@​Smlep](https://github.com/Smlep).
- 🌐 Add French translation for `docs/tutorial/query-params.md`. PR [#​3556](https://github.com/tiangolo/fastapi/pull/3556) by [@​Smlep](https://github.com/Smlep).
- 🌐 Add Turkish translation for `docs/python-types.md`. PR [#​3926](https://github.com/tiangolo/fastapi/pull/3926) by [@​BilalAlpaslan](https://github.com/BilalAlpaslan).
##### Internal
- 👥 Update FastAPI People. PR [#​4274](https://github.com/tiangolo/fastapi/pull/4274) by [@​github-actions\[bot\]](https://github.com/apps/github-actions).
### [`v0.70.0`](https://github.com/fastapi/fastapi/releases/tag/0.70.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.69.0...0.70.0)
This release just upgrades Starlette to the latest version, `0.16.0`, which includes several bug fixes and some small breaking changes.
These last **three consecutive releases** are independent so that you can **migrate gradually**:
- First to FastAPI `0.68.2`, with no breaking changes, but upgrading all the sub-dependencies.
- Next to FastAPI `0.69.0`, which upgrades Starlette to `0.15.0`, with AnyIO support, and a higher chance of having breaking changes in your code.
- Finally to FastAPI `0.70.0`, just upgrading Starlette to the latest version `0.16.0` with additional bug fixes.
This way, in case there was a breaking change for your code in one of the releases, you can still benefit from the previous upgrades. ✨
##### Breaking Changes - Upgrade
- ⬆️ Upgrade Starlette to 0.16.0. PR [#​4016](https://github.com/tiangolo/fastapi/pull/4016) by [@​tiangolo](https://github.com/tiangolo).
Also upgrades the ranges of optional dependencies:
- `"jinja2 >=2.11.2,<4.0.0"`
- `"itsdangerous >=1.1.0,<3.0.0"`
### [`v0.69.0`](https://github.com/fastapi/fastapi/releases/tag/0.69.0)
[Compare Source](https://github.com/fastapi/fastapi/compare/0.68.2...0.69.0)
##### Breaking Changes - Upgrade
This release adds support for [Trio](https://trio.readthedocs.io/en/stable/). ✨
It upgrades the version of Starlette to `0.15.0`, now based on [AnyIO](https://anyio.readthedocs.io/en/stable/), and the internal async components in **FastAPI** are now based on AnyIO as well, making it compatible with both **asyncio** and **Trio**.
You can read the docs about running [FastAPI with Trio using Hypercorn](https://fastapi.tiangolo.com/deployment/manually/#hypercorn-with-trio).
This release also removes `graphene` as an optional dependency for GraphQL. If you need to work with GraphQL, the recommended library now is [Strawberry](https://strawberry.rocks/). You can read the new [FastAPI with GraphQL docs](https://fastapi.tiangolo.com/advanced/graphql/).
##### Features
- ✨ Add support for Trio via AnyIO, upgrading Starlette to `0.15.0`. PR [#​3372](https://github.com/tiangolo/fastapi/pull/3372) by [@​graingert](https://github.com/graingert).
- ➖ Remove `graphene` as an optional dependency. PR [#​4007](https://github.com/tiangolo/fastapi/pull/4007) by [@​tiangolo](https://github.com/tiangolo).
##### Docs
- 📝 Add docs for using Trio with Hypercorn. PR [#​4014](https://github.com/tiangolo/fastapi/pull/4014) by [@​tiangolo](https://github.com/tiangolo).
- ✏ Fix typos in Deployment Guide. PR [#​3975](https://github.com/tiangolo/fastapi/pull/3975) by [@​ghandic](https://github.com/ghandic).
- 📝 Update docs with pip install calls when using extras with brackets, use quotes for compatibility with Zsh. PR [#​3131](https://github.com/tiangolo/fastapi/pull/3131) by [@​tomwei7](https://github.com/tomwei7).
- 📝 Add external link to article: Deploying ML Models as API Using FastAPI and Heroku. PR [#​3904](https://github.com/tiangolo/fastapi/pull/3904) by [@​kaustubhgupta](https://github.com/kaustubhgupta).
- ✏ Fix typo in file paths in `docs/en/docs/contributing.md`. PR [#​3752](https://github.com/tiangolo/fastapi/pull/3752) by [@​NinaHwang](https://github.com/NinaHwang).
- ✏ Fix a typo in `docs/en/docs/advanced/path-operation-advanced-configuration.md` and `docs/en/docs/release-notes.md`. PR [#​3750](https://github.com/tiangolo/fastapi/pull/3750) by [@​saintmalik](https://github.com/saintmalik).
- ✏️ Add a missing comma in the security tutorial. PR [#​3564](https://github.com/tiangolo/fastapi/pull/3564) by [@​jalvaradosegura](https://github.com/jalvaradosegura).
- ✏ Fix typo in `docs/en/docs/help-fastapi.md`. PR [#​3760](https://github.com/tiangolo/fastapi/pull/3760) by [@​jaystone776](https://github.com/jaystone776).
- ✏ Fix typo about file path in `docs/en/docs/tutorial/bigger-applications.md`. PR [#​3285](https://github.com/tiangolo/fastapi/pull/3285) by [@​HolyDorus](https://github.com/HolyDorus).
- ✏ Re-word to clarify test client in `docs/en/docs/tutorial/testing.md`. PR [#​3382](https://github.com/tiangolo/fastapi/pull/3382) by [@​Bharat123rox](https://github.com/Bharat123rox).
- 📝 Fix incorrect highlighted code. PR [#​3325](https://github.com/tiangolo/fastapi/pull/3325) by [@​paxcodes](https://github.com/paxcodes).
- 📝 Add external link to article: How-to deploy FastAPI app to Heroku. PR [#​3241](https://github.com/tiangolo/fastapi/pull/3241) by [@​Jarmos-san](https://github.com/Jarmos-san).
- ✏ Fix typo (mistranslation) in `docs/en/docs/advanced/templates.md`. PR [#​3211](https://github.com/tiangolo/fastapi/pull/3211) by [@​oerpli](https://github.com/oerpli).
- 📝 Remove note about (now supported) feature from Swagger UI in `docs/en/docs/tutorial/request-files.md`. PR [#​2803](https://github.com/tiangolo/fastapi/pull/2803) by [@​gsganden](https://github.com/gsganden).
- ✏ Fix typo re-word in `docs/tutorial/handling-errors.md`. PR [#​2700](https://github.com/tiangolo/fastapi/pull/2700) by [@​graue70](https://github.com/graue70).
##### Translations
- 🌐 Initialize Azerbaijani translations. PR [#​3941](https://github.com/tiangolo/fastapi/pull/3941) by [@​madatbay](https://github.com/madatbay).
- 🌐 Add Turkish translation for `docs/fastapi-people.md`. PR [#​3848](https://github.com/tiangolo/fastapi/pull/3848) by [@​BilalAlpaslan](https://github.com/BilalAlpaslan).
##### Internal
- 📝 Add supported Python versions badge. PR [#​2794](https://github.com/tiangolo/fastapi/pull/2794) by [@​hramezani](https://github.com/hramezani).
- ✏ Fix link in Japanese docs for `docs/ja/docs/deployment/docker.md`. PR [#​3245](https://github.com/tiangolo/fastapi/pull/3245) by [@​utamori](https://github.com/utamori).
- 🔧 Correct DeprecationWarning config and comment in pytest settings. PR [#​4008](https://github.com/tiangolo/fastapi/pull/4008) by [@​graingert](https://github.com/graingert).
- 🔧 Swap light/dark theme button icon. PR [#​3246](https://github.com/tiangolo/fastapi/pull/3246) by [@​eddsalkield](https://github.com/eddsalkield).
- 🔧 Lint only in Python 3.7 and above. PR [#​4006](https://github.com/tiangolo/fastapi/pull/4006) by [@​tiangolo](https://github.com/tiangolo).
- 🔧 Add GitHub Action notify-translations config for Azerbaijani. PR [#​3995](https://github.com/tiangolo/fastapi/pull/3995) by [@​tiangolo](https://github.com/tiangolo).
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4xOC4xMSIsInVwZGF0ZWRJblZlciI6IjM4LjI0LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
==0.68.2->==0.112.1Release Notes
fastapi/fastapi (fastapi)
v0.112.1Compare Source
Upgrades
>=0.37.2,<0.39.0. PR #11876 by @musicinmybrain.Docs
Translations
docs/pt/docs/tutorial/bigger-applications.md. PR #11971 by @marcelomarkus.docs/pt/docs/advanced/testing-websockets.md. PR #11994 by @ceb10n.docs/pt/docs/advanced/testing-dependencies.md. PR #11995 by @ceb10n.docs/pt/docs/advanced/using-request-directly.md. PR #11956 by @ceb10n.docs/fr/docs/tutorial/body-multiple-params.md. PR #11796 by @pe-brian.docs/zh/docs/tutorial/query-params.md. PR #11557 by @caomingpei.docs/zh/docs/advanced/testing-dependencies.md. PR #11944 by @bestony.docs/pt/docs/advanced/sub-applications.mdanddocs/pt/docs/advanced/behind-a-proxy.md. PR #11856 by @marcelomarkus.docs/pt/docs/tutorial/cors.mdanddocs/pt/docs/tutorial/middleware.md. PR #11916 by @wesinalves.docs/fr/docs/tutorial/path-params-numeric-validations.md. PR #11788 by @pe-brian.Internal
pyproject.toml, shows in PyPI. PR #11152 by @Pierre-VF.deploy_docs_status.pyto account for deploy URLs with or without trailing slash. PR #11965 by @tiangolo.v0.112.0Compare Source
Breaking Changes
pip install "fastapi[standard]"with standard dependencies andpython -m fastapi. PR #11935 by @tiangolo.Summary
Install with:
Other Changes
fastapi-cli[standard] >=0.0.5.Technical Details
Before this,
fastapiwould include the standard dependencies, with Uvicorn and thefastapi-cli, etc.And
fastapi-slimwould not include those standard dependencies.Now
fastapidoesn't include those standard dependencies unless you install withpip install "fastapi[standard]".Before, you would install
pip install fastapi, now you should include thestandardoptional dependencies (unless you want to exclude one of those):pip install "fastapi[standard]".This change is because having the standard optional dependencies installed by default was being inconvenient to several users, and having to install instead
fastapi-slimwas not being a feasible solution.Discussed here: #11522 and here: #11525
Docs
Translations
docs/pt/docs/alternatives.md. PR #11931 by @ceb10n.docs/ru/docs/tutorial/dependencies/sub-dependencies.md. PR #10515 by @AlertRED.docs/pt/docs/advanced/response-change-status-code.md. PR #11863 by @ceb10n.docs/pt/docs/reference/background.md. PR #11849 by @lucasbalieiro.docs/pt/docs/tutorial/dependencies/dependencies-with-yield.md. PR #11848 by @Joao-Pedro-P-Holanda.docs/pt/docs/reference/apirouter.md. PR #11843 by @lucasbalieiro.Internal
approved-1. PR #11907 by @tiangolo.v0.111.1Compare Source
Upgrades
orjsonandujsonfrom default dependencies. PR #11842 by @tiangolo.pip install "fastapi[all]". But they not included inpip install fastapi.Docs
docs/en/docs/fastapi-cli.md. PR #11716 by @alejsdev.docs/en/docs/fastapi-cli.md. PR #11715 by @alejsdev.docs/en/docs/tutorial/body-multiple-params.md. PR #11698 by @mwb-u.security/first-steps.md. PR #11674 by @alejsdev.security/first-steps.md. PR #11673 by @alejsdev.path-params-numeric-validations.md. PR #11672 by @alejsdev.AnnotatedandQuery()params. PR #11664 by @tiangolo.fastapi/applications.py. PR #11593 by @petarmaric.fastapi-cli.md. PR #11524 by @svlandeg.Translations
docs/es/docs/how-to/graphql.md. PR #11697 by @camigomezdev.docs/pt/docs/reference/index.md. PR #11840 by @lucasbalieiro.docs/pt/docs/tutorial/dependencies/sub-dependencies.md. PR #11792 by @Joao-Pedro-P-Holanda.docs/tr/docs/tutorial/request-forms.md. PR #11553 by @hasansezertasan.docs/pt/docs/reference/exceptions.md. PR #11834 by @lucasbalieiro.docs/pt/docs/tutorial/dependencies/global-dependencies.md. PR #11826 by @Joao-Pedro-P-Holanda.docs/pt/docs/how-to/general.md. PR #11825 by @lucasbalieiro.docs/pt/docs/advanced/async-tests.md. PR #11808 by @ceb10n.docs/uk/docs/tutorial/first-steps.md. PR #11809 by @vkhoroshchak.docs/pt/docs/tutorial/dependencies/dependencies-in-path-operation-operators.md. PR #11804 by @Joao-Pedro-P-Holanda.docs/zh/docs/fastapi-cli.md. PR #11786 by @logan2d5.docs/pt/docs/advanced/openapi-webhooks.md. PR #11791 by @ceb10n.docs/tutorial/security/oauth2-jwt.md. PR #11781 by @logan2d5.docs/fr/docs/async.md. PR #11787 by @pe-brian.docs/pt/docs/advanced/advanced-dependencies.md. PR #11775 by @ceb10n.docs/pt/docs/tutorial/dependencies/classes-as-dependencies.md. PR #11768 by @Joao-Pedro-P-Holanda.docs/pt/docs/advanced/additional-status-codes.md. PR #11753 by @ceb10n.docs/pt/docs/tutorial/dependencies/index.md. PR #11757 by @Joao-Pedro-P-Holanda.docs/pt/docs/advanced/settings.md. PR #11739 by @Joao-Pedro-P-Holanda.docs/fr/docs/learn/index.md. PR #11712 by @benjaminvandammeholberton.docs/pt/docs/how-to/index.md. PR #11731 by @vhsenna.docs/pt/docs/advanced/additional-responses.md. PR #11736 by @ceb10n.docs/pt/docs/advanced/benchmarks.md. PR #11713 by @ceb10n.docs/ko/docs/tutorial/response-status-code.md. PR #11718 by @nayeonkinn.docs/ko/docs/tutorial/extra-data-types.md. PR #11711 by @nayeonkinn.docs/ko/docs/tutorial/body-nested-models.md. PR #11710 by @nayeonkinn.docs/pt/docs/advanced/fastapi-cli.md. PR #11641 by @ayr-ton.docs/zh-hant/docs/fastapi-people.md. PR #11639 by @hsuanchi.docs/tr/docs/advanced/index.md. PR #11606 by @hasansezertasan.docs/tr/docs/deployment/cloud.md. PR #11610 by @hasansezertasan.docs/tr/docs/advanced/security/index.md. PR #11609 by @hasansezertasan.docs/tr/docs/advanced/testing-websockets.md. PR #11608 by @hasansezertasan.docs/tr/docs/how-to/general.md. PR #11607 by @hasansezertasan.docs/zh/docs/advanced/templates.md. PR #11620 by @chaoless.docs/tr/docs/deployment/index.md. PR #11605 by @hasansezertasan.docs/tr/docs/tutorial/static-files.md. PR #11599 by @hasansezertasan.docs/pl/docs/fastapi-people.md. PR #10196 by @isulim.docs/tr/docs/advanced/wsgi.md. PR #11575 by @hasansezertasan.docs/tr/docs/tutorial/cookie-params.md. PR #11561 by @hasansezertasan.docs/ru/docs/about/index.md. PR #10961 by @s111d.docs/zh/docs/tutorial/sql-databases.md. PR #11539 by @chaoless.docs/zh/docs/how-to/configure-swagger-ui.md. PR #11501 by @Lucas-lyh./docs/advanced/security/http-basic-auth.md. PR #11512 by @nick-cjyx9.Internal
v0.111.0Compare Source
Features
fastapicommand. PR #11522 by @tiangolo.Try it out with:
Refactors
fastapi-slimincluding optional extrasfastapi-slim[standard], andfastapiincluding by default the samestandardextras. PR #11503 by @tiangolo.v0.110.3Compare Source
Latest Changes
Docs
fastapi/security/api_key.py. PR #11481 by @ch33zer.security/http.py. PR #11455 by @omarmoo5.Translations
docs/zh-hant/benchmarks.md. PR #11484 by @KNChiu.docs/zh/docs/fastapi-people.md. PR #11476 by @billzhong.docs/zh/docs/how-to/index.mdanddocs/zh/docs/how-to/general.md. PR #11443 by @billzhong.docs/es/docs/tutorial/cookie-params.md. PR #11410 by @fabianfalon.Internal
v0.110.2Compare Source
Fixes
UndefinedType. PR #9929 by @arjwilliams.Refactors
fastapi/openapi/models.py. PR #10886 by @JoeTanto2.Docs
docs_src/extra_data_types. PR #10535 by @nilslindemann.docs/es/docs/async.md. PR #11400 by @fabianfalon.@hey-api/openapi-ts. PR #11339 by @jordanshatford.Translations
docs/zh/docs/index.html. PR #11430 by @waketzheng.docs/ru/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md. PR #11411 by @anton2yakovlev.learn/index.mdresources/index.mdhelp/index.mdabout/index.md. PR #10807 by @nazarepiedady.docs/bn/docs/python-types.md. PR #11376 by @imtiaz101325.docs/ko/docs/tutorial/security/simple-oauth2.md. PR #5744 by @KdHyeon0661.docs/ko/docs/help-fastapi.md. PR #4139 by @kty4119.docs/ko/docs/advanced/events.md. PR #5087 by @pers0n4.docs/ja/docs/tutorial/path-operation-configuration.md. PR #1954 by @SwftAlpc.docs/ja/docs/tutorial/request-forms-and-files.md. PR #1946 by @SwftAlpc.docs/ru/docs/tutorial/dependencies/dependencies-with-yield.md. PR #10532 by @AlertRED.docs/ko/docs/tutorial/debugging.md. PR #5695 by @JungWooGeon.Internal
v0.110.1Compare Source
Fixes
Depends()with generics. PR #9479 by @nzig.Refactors
fastapi/applications.py. PR #11335 by @igeni.Upgrades
Docs
fastapi/security/oauth2.py. PR #11368 by @shandongbinzhou.docs/en/docs/tutorial/extra-models.md. PR #11329 by @alejsdev.project-generation.md. PR #11326 by @alejsdev.python-multipartGitHub link in all docs fromhttps://andrew-d.github.io/python-multipart/tohttps://github.com/Kludex/python-multipart. PR #11239 by @joshjhans.Translations
docs/de/docs/tutorial/response-status-code.md. PR #10357 by @nilslindemann.docs/zh/docs/tutorial/query-params.md. PR #3480 by @jaystone776.docs/zh/docs/tutorial/body.md. PR #3481 by @jaystone776.docs/zh/docs/tutorial/path-params.md. PR #3479 by @jaystone776.docs/tutorial/body-fields.md. PR #3496 by @jaystone776.docs/tutorial/extra-models.md. PR #3497 by @jaystone776.docs/ja/docs/tutorial/metadata.md. PR #2667 by @tokusumi.docs/de/docs/contributing.md. PR #10487 by @nilslindemann.docs/ja/docs/tutorial/query-params.md. PR #10808 by @urushio.docs/zh/docs/tutorial/security/get-current-user.md. PR #3842 by @jaystone776.docs/zh/docs/advanced/openapi-callbacks.md. PR #3825 by @jaystone776.docs/zh/docs/advanced/extending-openapi.md. PR #3823 by @jaystone776.docs/zh/docs/advanced/testing-dependencies.md. PR #3819 by @jaystone776.docs/zh/docs/advanced/custom-request-and-route.md. PR #3816 by @jaystone776.docs/zh/docs/external-links.md. PR #3833 by @jaystone776.docs/zh/docs/advanced/templates.md. PR #3812 by @jaystone776.docs/zh/docs/advanced/sub-applications.md. PR #3811 by @jaystone776.docs/zh/docs/advanced/async-sql-databases.md. PR #3805 by @jaystone776.docs/zh/docs/advanced/middleware.md. PR #3804 by @jaystone776.docs/zh/docs/advanced/dataclasses.md. PR #3803 by @jaystone776.docs/zh/docs/advanced/using-request-directly.md. PR #3802 by @jaystone776.docs/zh/docs/advanced/security/http-basic-auth.md. PR #3801 by @jaystone776.docs/zh/docs/advanced/security/oauth2-scopes.md. PR #3800 by @jaystone776.docs/zh/docs/tutorial/cookie-params.md. PR #3486 by @jaystone776.docs/zh/docs/tutorial/header-params.md. PR #3487 by @jaystone776.docs/tutorial/response-status-code.md. PR #3498 by @jaystone776.docs/de/docs/tutorial/security/first-steps.md. PR #10432 by @nilslindemann.docs/de/docs/advanced/events.md. PR #10693 by @nilslindemann.docs/de/docs/deployment/cloud.md. PR #10746 by @nilslindemann.docs/de/docs/advanced/behind-a-proxy.md. PR #10675 by @nilslindemann.docs/de/docs/help-fastapi.md. PR #10455 by @nilslindemann.docs/de/docs/python-types.md. PR #10287 by @nilslindemann.docs/de/docs/tutorial/path-params.md. PR #10290 by @nilslindemann.docs/de/docs/tutorial/handling-errors.md. PR #10379 by @nilslindemann.docs/de/docs/index.md. PR #10283 by @nilslindemann.docs/de/docs/advanced/security/http-basic-auth.md. PR #10651 by @nilslindemann.docs/de/docs/tutorial/bigger-applications.md. PR #10554 by @nilslindemann.docs/de/docs/advanced/path-operation-advanced-configuration.md. PR #10612 by @nilslindemann.docs/de/docs/tutorial/static-files.md. PR #10584 by @nilslindemann.docs/de/docs/tutorial/security/oauth2-jwt.md. PR #10522 by @nilslindemann.docs/de/docs/tutorial/response-model.md. PR #10345 by @nilslindemann.docs/de/docs/tutorial/extra-models.md. PR #10351 by @nilslindemann.docs/de/docs/tutorial/body-updates.md. PR #10396 by @nilslindemann.docs/de/docs/alternatives.md. PR #10855 by @nilslindemann.docs/de/docs/advanced/templates.md. PR #10678 by @nilslindemann.docs/de/docs/advanced/security/oauth2-scopes.md. PR #10643 by @nilslindemann.docs/de/docs/advanced/async-tests.md. PR #10708 by @nilslindemann.docs/de/docs/tutorial/metadata.md. PR #10581 by @nilslindemann.docs/de/docs/tutorial/testing.md. PR #10586 by @nilslindemann.docs/de/docs/tutorial/schema-extra-example.md. PR #10597 by @nilslindemann.docs/de/docs/advanced/index.md. PR #10611 by @nilslindemann.docs/de/docs/advanced/response-directly.md. PR #10618 by @nilslindemann.docs/de/docs/advanced/additional-responses.md. PR #10626 by @nilslindemann.docs/de/docs/advanced/response-cookies.md. PR #10627 by @nilslindemann.docs/de/docs/advanced/response-headers.md. PR #10628 by @nilslindemann.docs/de/docs/advanced/response-change-status-code.md. PR #10632 by @nilslindemann.docs/de/docs/advanced/advanced-dependencies.md. PR #10633 by @nilslindemann.docs/de/docs/advanced/security/index.md. PR #10635 by @nilslindemann.docs/de/docs/advanced/using-request-directly.md. PR #10653 by @nilslindemann.docs/de/docs/advanced/dataclasses.md. PR #10667 by @nilslindemann.docs/de/docs/advanced/middleware.md. PR #10668 by @nilslindemann.docs/de/docs/advanced/sub-applications.md. PR #10671 by @nilslindemann.docs/de/docs/advanced/websockets.md. PR #10687 by @nilslindemann.docs/de/docs/advanced/testing-websockets.md. PR #10703 by @nilslindemann.docs/de/docs/advanced/testing-events.md. PR #10704 by @nilslindemann.docs/de/docs/advanced/testing-dependencies.md. PR #10706 by @nilslindemann.docs/de/docs/advanced/openapi-callbacks.md. PR #10710 by @nilslindemann.docs/de/docs/advanced/settings.md. PR #10709 by @nilslindemann.docs/de/docs/advanced/wsgi.md. PR #10713 by @nilslindemann.docs/de/docs/deployment/index.md. PR #10733 by @nilslindemann.docs/de/docs/deployment/https.md. PR #10737 by @nilslindemann.docs/de/docs/deployment/manually.md. PR #10738 by @nilslindemann.docs/de/docs/deployment/concepts.md. PR #10744 by @nilslindemann.docs/de/docs/features.md. PR #10284 by @nilslindemann.docs/de/docs/deployment/server-workers.md. PR #10747 by @nilslindemann.docs/de/docs/deployment/docker.md. PR #10759 by @nilslindemann.docs/de/docs/how-to/index.md. PR #10769 by @nilslindemann.docs/de/docs/how-to/general.md. PR #10770 by @nilslindemann.docs/de/docs/how-to/graphql.md. PR #10788 by @nilslindemann.docs/de/docs/how-to/custom-request-and-route.md. PR #10789 by @nilslindemann.docs/de/docs/how-to/conditional-openapi.md. PR #10790 by @nilslindemann.docs/de/docs/how-to/separate-openapi-schemas.md. PR #10796 by @nilslindemann.docs/de/docs/how-to/configure-swagger-ui.md. PR #10804 by @nilslindemann.docs/de/docs/how-to/custom-docs-ui-assets.md. PR #10803 by @nilslindemann.docs/de/docs/reference/parameters.md. PR #10814 by @nilslindemann.docs/de/docs/reference/status.md. PR #10815 by @nilslindemann.docs/de/docs/reference/uploadfile.md. PR #10816 by @nilslindemann.docs/de/docs/reference/exceptions.md. PR #10817 by @nilslindemann.docs/de/docs/reference/dependencies.md. PR #10818 by @nilslindemann.docs/de/docs/reference/apirouter.md. PR #10819 by @nilslindemann.docs/de/docs/reference/websockets.md. PR #10822 by @nilslindemann.docs/de/docs/reference/httpconnection.md. PR #10823 by @nilslindemann.docs/de/docs/reference/response.md. PR #10824 by @nilslindemann.docs/de/docs/reference/middleware.md. PR #10837 by @nilslindemann.docs/de/docs/reference/openapi/*.md. PR #10838 by @nilslindemann.docs/de/docs/reference/security/index.md. PR #10839 by @nilslindemann.docs/de/docs/reference/staticfiles.md. PR #10841 by @nilslindemann.docs/de/docs/reference/testclient.md. PR #10843 by @nilslindemann.docs/de/docs/project-generation.md. PR #10851 by @nilslindemann.docs/de/docs/history-design-future.md. PR #10865 by @nilslindemann.docs/de/docs/tutorial/dependencies/dependencies-with-yield.md. PR #10422 by @nilslindemann.docs/de/docs/tutorial/dependencies/global-dependencies.md. PR #10420 by @nilslindemann.docs/de/docs/fastapi-people.md. PR #10285 by @nilslindemann.docs/de/docs/tutorial/dependencies/sub-dependencies.md. PR #10409 by @nilslindemann.docs/de/docs/tutorial/security/index.md. PR #10429 by @nilslindemann.docs/de/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md. PR #10411 by @nilslindemann.docs/de/docs/tutorial/extra-data-types.md. PR #10534 by @nilslindemann.docs/de/docs/tutorial/security/simple-oauth2.md. PR #10504 by @nilslindemann.docs/de/docs/tutorial/security/get-current-user.md. PR #10439 by @nilslindemann.docs/de/docs/tutorial/request-forms-and-files.md. PR #10368 by @nilslindemann.docs/de/docs/tutorial/encoder.md. PR #10385 by @nilslindemann.docs/de/docs/tutorial/request-forms.md. PR #10361 by @nilslindemann.docs/de/docs/deployment/versions.md. PR #10491 by @nilslindemann.docs/de/docs/async.md. PR #10449 by @nilslindemann.docs/de/docs/tutorial/cookie-params.md. PR #10323 by @nilslindemann.docs/de/docs/tutorial/dependencies/classes-as-dependencies.md. PR #10407 by @nilslindemann.docs/de/docs/tutorial/dependencies/index.md. PR #10399 by @nilslindemann.docs/de/docs/tutorial/header-params.md. PR #10326 by @nilslindemann.docs/de/docs/tutorial/path-params-numeric-validations.md. PR #10307 by @nilslindemann.docs/de/docs/tutorial/query-params-str-validations.md. PR #10304 by @nilslindemann.docs/de/docs/tutorial/request-files.md. PR #10364 by @nilslindemann.docs/pt/docs/advanced/templates.md. PR #11338 by @SamuelBFavarin.docs/bn/docs/learn/index.md. PR #11337 by @imtiaz101325.docs/ko/docs/index.md. PR #11296 by @choi-haram.docs/ko/docs/about/index.md. PR #11299 by @choi-haram.docs/ko/docs/advanced/index.md. PR #9613 by @ElliottLarsen.docs/de/docs/how-to/extending-openapi.md. PR #10794 by @nilslindemann.docs/zh/docs/tutorial/metadata.md. PR #11286 by @jackleeio.docs/zh/docs/contributing.md. PR #10887 by @Aruelius.docs/az/docs/fastapi-people.md. PR #11195 by @vusallyv.docs/ru/docs/tutorial/dependencies/index.md. PR #11223 by @kohiry.docs/zh/docs/tutorial/query-params.md. PR #11242 by @jackleeio.docs/az/learn/index.md. PR #11192 by @vusallyv.Internal
v0.110.0Compare Source
Breaking Changes
yieldandexceptto require raising again as in regular Python. PR #11191 by @tiangolo.yield, usedexceptin those dependencies, and didn't raise again.yieldandexcept.In short, if you had dependencies that looked like:
Now you need to make sure you raise again after
except, just as you would in regular Python:Docs
docs/ko/docs/. PR #11126 by @KaniKim.fastapi/applications.py. PR #11099 by @JacobHayes.Translations
docs/de/docs/reference/background.md. PR #10820 by @nilslindemann.docs/de/docs/reference/templating.md. PR #10842 by @nilslindemann.docs/de/docs/external-links.md. PR #10852 by @nilslindemann.docs/tr/docs/tutorial/query-params.md. PR #11162 by @hasansezertasan.docs/de/docs/reference/encoders.md. PR #10840 by @nilslindemann.docs/de/docs/reference/responses.md. PR #10825 by @nilslindemann.docs/de/docs/reference/request.md. PR #10821 by @nilslindemann.docs/tr/docs/tutorial/query-params.md. PR #11078 by @emrhnsyts.docs/de/docs/reference/fastapi.md. PR #10813 by @nilslindemann.docs/de/docs/newsletter.md. PR #10853 by @nilslindemann.docs/zh-hant/docs/learn/index.md. PR #11142 by @hsuanchi./docs/ko/docs/tutorial/dependencies/global-dependencies.md. PR #11123 by @riroan./docs/ko/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md. PR #11124 by @riroan./docs/ko/docs/tutorial/schema-extra-example.md. PR #11121 by @KaniKim./docs/ko/docs/tutorial/body-fields.md. PR #11112 by @KaniKim./docs/ko/docs/tutorial/cookie-params.md. PR #11118 by @riroan./docs/ko/docs/dependencies/index.md. PR #11114 by @KaniKim./docs/ko/docs/deployment/docker.md. PR #11113 by @KaniKim.docs/tr/docs/tutorial/first-steps.md. PR #11094 by @hasansezertasan.docs/es/docs/advanced/security/index.md. PR #2278 by @Xaraxx.docs/es/docs/advanced/response-headers.md. PR #2276 by @Xaraxx.docs/es/docs/deployment/index.mdand~/deployment/versions.md. PR #9669 by @pabloperezmoya.docs/es/docs/benchmarks.md. PR #10928 by @pablocm83.docs/es/docs/advanced/response-change-status-code.md. PR #11100 by @alejsdev.v0.109.2Compare Source
Upgrades
>= 0.36.3. PR #11086 by @tiangolo.Translations
docs/tr/docs/fastapi-people.md. PR #10547 by @alperiox.Internal
v0.109.1Compare Source
Security fixes
python-multipartto>=0.0.7to fix a vulnerability when using form data with a ReDos attack. You can also simply upgradepython-multipart.Read more in the advisory: Content-Type Header ReDoS.
Features
Refactors
fastapi/utils.py. PR #10576 by @eukub.tests/test_tutorial/test_header_params/test_tutorial003.pyafter fix in Starlette. PR #10904 by @ooknimm.Docs
help-fastapi.md. PR #11040 by @tiangolo.fastapi/security/oauth2.py. PR #10972 by @RafalSkolasinski.HTTPExceptiondetails indocs/en/docs/tutorial/handling-errors.md. PR #5418 by @papb.docs/de/docs/tutorial/first-steps.md. PR #10959 by @nilslindemann.docs/en/docs/advanced/async-tests.md. PR #10960 by @nilslindemann.docs/tutorial/sql-databases.mdin several languages. PR #10716 by @theoohoho.external_links.yml. PR #10943 by @Torabek.url_for. PR #5937 by @EzzEddin.docs/en/docs/tutorial/bigger-applications.md. PR #5490 by @papb.docs/en/docs/tutorial/static-files.md. PR #10243 by @hungtsetse.en/docs/contributing.md. PR #10480 by @nilslindemann.tutorial/bigger-applications.md. PR #10552 by @nilslindemann.docs/en/docs/advanced/path-operation-advanced-configuration.md. PR #10826 by @ahmedabdou14.Translations
docs/es/docs/external-links.md. PR #10933 by @pablocm83.docs/ko/docs/tutorial/first-steps.md,docs/ko/docs/tutorial/index.md,docs/ko/docs/tutorial/path-params.md, anddocs/ko/docs/tutorial/query-params.md. PR #4218 by @SnowSuno.docs/zh/docs/tutorial/dependencies/dependencies-with-yield.md. PR #10870 by @zhiquanchi.docs/zh/docs/deployment/concepts.md. PR #10282 by @xzmeng.docs/az/docs/index.md. PR #11047 by @aykhans.docs/ko/docs/tutorial/middleware.md. PR #2829 by @JeongHyeongKim.docs/de/docs/tutorial/body-nested-models.md. PR #10313 by @nilslindemann.docs/fa/docs/tutorial/middleware.md. PR #9695 by @mojtabapaso.docs/fa/docs/index.md. PR #10216 by @theonlykingpin.docs/de/docs/tutorial/body-fields.md. PR #10310 by @nilslindemann.docs/de/docs/tutorial/body.md. PR #10295 by @nilslindemann.docs/de/docs/tutorial/body-multiple-params.md. PR #10308 by @nilslindemann.docs/ja/docs/tutorial/security/get-current-user.md. PR #2681 by @sh0nk.docs/zh/docs/advanced/advanced-dependencies.md. PR #3798 by @jaystone776.docs/zh/docs/advanced/events.md. PR #3815 by @jaystone776.docs/zh/docs/advanced/behind-a-proxy.md. PR #3820 by @jaystone776.docs/zh/docs/advanced/testing-events.md. PR #3818 by @jaystone776.docs/zh/docs/advanced/testing-websockets.md. PR #3817 by @jaystone776.docs/zh/docs/advanced/testing-database.md. PR #3821 by @jaystone776.docs/zh/docs/deployment/deta.md. PR #3837 by @jaystone776.docs/zh/docs/history-design-future.md. PR #3832 by @jaystone776.docs/zh/docs/project-generation.md. PR #3831 by @jaystone776.docs/zh/docs/deployment/docker.md. PR #10296 by @xzmeng.docs/es/docs/features.md. PR #10884 by @pablocm83.docs/es/docs/newsletter.md. PR #10922 by @pablocm83.docs/ko/docs/tutorial/background-tasks.md. PR #5910 by @junah201.docs/tr/docs/alternatives.md. PR #10502 by @alperiox.docs/ko/docs/tutorial/dependencies/index.md. PR #10989 by @KaniKim./docs/ko/docs/tutorial/body.md. PR #11000 by @KaniKim.docs/pt/docs/tutorial/schema-extra-example.md. PR #4065 by @luccasmmg.docs/tr/docs/history-design-future.md. PR #11012 by @hasansezertasan.docs/tr/docs/resources/index.md. PR #11020 by @hasansezertasan.docs/tr/docs/how-to/index.md. PR #11021 by @hasansezertasan.docs/de/docs/tutorial/query-params.md. PR #10293 by @nilslindemann.docs/de/docs/benchmarks.md. PR #10866 by @nilslindemann.docs/tr/docs/learn/index.md. PR #11014 by @hasansezertasan.docs/fa/docs/tutorial/security/index.md. PR #9945 by @mojtabapaso.docs/tr/docs/help/index.md. PR #11013 by @hasansezertasan.docs/tr/docs/about/index.md. PR #11006 by @hasansezertasan.docs/tr/docs/benchmarks.md. PR #11005 by @hasansezertasan.docs/it/docs/index.md. PR #5233 by @matteospanio.docs/ko/docs/help/index.md. PR #10983 by @KaniKim.docs/ko/docs/features.md. PR #10976 by @KaniKim.docs/ko/docs/tutorial/security/get-current-user.md. PR #5737 by @KdHyeon0661.docs/ru/docs/tutorial/security/first-steps.md. PR #10541 by @AlertRED.docs/ru/docs/tutorial/handling-errors.md. PR #10375 by @AlertRED.docs/ru/docs/tutorial/encoder.md. PR #10374 by @AlertRED.docs/ru/docs/tutorial/body-updates.md. PR #10373 by @AlertRED.fastapi-people.md.. PR #10255 by @NiKuma0.docs/ja/docs/tutorial/security/index.md. PR #5798 by @3w36zj6.docs/de/docs/advanced/generate-clients.md. PR #10725 by @nilslindemann.docs/de/docs/advanced/openapi-webhooks.md. PR #10712 by @nilslindemann.docs/de/docs/advanced/custom-response.md. PR #10624 by @nilslindemann.docs/de/docs/advanced/additional-status-codes.md. PR #10617 by @nilslindemann.docs/de/docs/tutorial/middleware.md. PR #10391 by @JohannesJungbluth.docs/ja/docs/tutorial/encoder.md. PR #1955 by @SwftAlpc.docs/ja/docs/tutorial/extra-data-types.md. PR #1932 by @SwftAlpc.docs/tr/docs/async.md. PR #5191 by @BilalAlpaslan.docs/tr/docs/project-generation.md. PR #5192 by @BilalAlpaslan.docs/ko/docs/deployment/docker.md. PR #5657 by @nearnear.docs/ko/docs/deployment/server-workers.md. PR #4935 by @jujumilk3.docs/ko/docs/deployment/index.md. PR #4561 by @jujumilk3.docs/ko/docs/tutorial/path-operation-configuration.md. PR #3639 by @jungsu-kwon.zh- Traditional Chinese. PR #10889 by @cherinyy.docs/ko/docs/tutorial/static-files.md. PR #2957 by @jeesang7.docs/ko/docs/tutorial/response-model.md. PR #2766 by @hard-coders.docs/ko/docs/tutorial/body-multiple-params.md. PR #2461 by @PandaHun.docs/ko/docs/tutorial/query-params-str-validations.md. PR #2415 by @hard-coders.docs/ko/docs/python-types.md. PR #2267 by @jrim.docs/ko/docs/tutorial/body-nested-models.md. PR #2506 by @hard-coders.docs/ko/docs/learn/index.md. PR #10977 by @KaniKim.docs/de/docs/tutorial/index.md. PR #10962 by @nilslindemann.docs/ko/docs/tutorial/path-params.md. PR #10758 by @2chanhaeng.docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md. PR #1961 by @SwftAlpc.docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md. PR #1960 by @SwftAlpc.docs/ja/docs/tutorial/dependencies/sub-dependencies.md. PR #1959 by @SwftAlpc.docs/ja/docs/tutorial/background-tasks.md. PR #2668 by @tokusumi.docs/ja/docs/tutorial/dependencies/index.mdanddocs/ja/docs/tutorial/dependencies/classes-as-dependencies.md. PR #1958 by @SwftAlpc.docs/ja/docs/tutorial/response-model.md. PR #1938 by @SwftAlpc.docs/ja/docs/tutorial/body-multiple-params.md. PR #1903 by @SwftAlpc.docs/ja/docs/tutorial/path-params-numeric-validations.md. PR #1902 by @SwftAlpc.docs/ja/docs/python-types.md. PR #1899 by @SwftAlpc.docs/ja/docs/tutorial/handling-errors.md. PR #1953 by @SwftAlpc.docs/ja/docs/tutorial/response-status-code.md. PR #1942 by @SwftAlpc.docs/ja/docs/tutorial/extra-models.md. PR #1941 by @SwftAlpc.docs/ja/docs/tutorial/schema-extra-example.md. PR #1931 by @SwftAlpc.docs/ja/docs/tutorial/body-nested-models.md. PR #1930 by @SwftAlpc.docs/ja/docs/tutorial/body-fields.md. PR #1923 by @SwftAlpc.docs/de/docs/tutorial/index.md. PR #9502 by @fhabers21.docs/de/docs/tutorial/background-tasks.md. PR #10566 by @nilslindemann.docs/ru/docs/index.md. PR #10672 by @Delitel-WEB.docs/zh/docs/tutorial/extra-data-types.md. PR #10727 by @HiemalBeryl.docs/ru/docs/tutorial/dependencies/classes-as-dependencies.md. PR #10410 by @AlertRED.Internal
mkdocs.yml. PR #11016 by @alejsdev.mkdocs.ymllanguages in CI, updatedocs.py. PR #11009 by @tiangolo.label-approved.ymlto accept translations with 1 reviewer. PR #11007 by @alejsdev.zh-hant. PR #10950 by @tiangolo.v0.109.0Compare Source
Features
Upgrades
>=0.29.0,<0.33.0, update docs and usage of templates with new Starlette arguments. Remove pin of AnyIO>=3.7.1,<4.0.0, add support for AnyIO 4.x.x. PR #10846 by @tiangolo.Docs
docs/en/docs/alternatives.md. PR #10931 by @s111d.emailwithusernameindocs_src/security/tutorial007code examples. PR #10649 by @nilslindemann..model_dump(). PR #10929 by @tiangolo.docs/en/docs/tutorial/sql-databases.md. PR #10765 by @HurSungYun.docs/en/docs/alternatives.mdanddocs/en/docs/tutorial/dependencies/index.md. PR #10906 by @s111d.docs/en/docs/tutorial/dependencies/dependencies-with-yield.md. PR #10834 by @Molkree.AsyncClient. PR #4167 by @andrew-chang-dewitt./docs/reference/exceptions.mdand/en/docs/reference/status.md. PR #10809 by @clarencepenz.openapi-callbacks.md. PR #10673 by @kayjan.fastapi/routing.py. PR #10520 by @sepsh.create_itemwithupdate_itemwhen appropriate. PR #5913 by @OttoAndrey.Translations
docs/bn/docs/index.md. PR #9177 by @Fahad-Md-Kamal.index.mdin several languages. PR #10711 by @tamago3keran.docs/ru/docs/tutorial/request-forms-and-files.md. PR #10347 by @AlertRED.docs/uk/docs/index.md. PR #10362 by @rostik1410.docs/ko/docs/index.md. PR #10680 by @Eeap.docs/fa/docs/features.md. PR #5887 by @amirilf.docs/zh/docs/advanced/additional-responses.md. PR #10325 by @ShuibeiC.docs/ru/docs/tutorial/background-tasks.md,docs/ru/docs/tutorial/body-nested-models.md,docs/ru/docs/tutorial/debugging.md,docs/ru/docs/tutorial/testing.md. PR #10311 by @AlertRED.docs/ru/docs/tutorial/request-files.md. PR #10332 by @AlertRED.docs/zh/docs/deployment/server-workers.md. PR #10292 by @xzmeng.docs/zh/docs/deployment/cloud.md. PR #10291 by @xzmeng.docs/zh/docs/deployment/manually.md. PR #10279 by @xzmeng.docs/zh/docs/deployment/https.md. PR #10277 by @xzmeng.docs/zh/docs/deployment/index.md. PR #10275 by @xzmeng.docs/de/docs/tutorial/first-steps.md. PR #9530 by @fhabers21.docs/tr/docs/index.md. PR #10444 by @hasansezertasan.docs/zh/docs/learn/index.md. PR #10479 by @KAZAMA-DREAM.docs/ru/docs/learn/index.md. PR #10539 by @AlertRED.docs/zh/docs/tutorial/sql-databases.md. PR #9712 by @Royc30ne.docs/tr/docs/external-links.md. PR #10549 by @hasansezertasan.docs/es/docs/learn/index.md. PR #10885 by @pablocm83.docs/uk/docs/tutorial/body-fields.md. PR #10670 by @ArtemKhymenko./docs/hu/docs/index.md. PR #10812 by @takacs.docs/tr/docs/newsletter.md. PR #10550 by @hasansezertasan.docs/es/docs/help/index.md. PR #10907 by @pablocm83.docs/es/docs/about/index.md. PR #10908 by @pablocm83.docs/es/docs/resources/index.md. PR #10909 by @pablocm83.Internal
v0.108.0Compare Source
Upgrades
>=0.29.0,<0.33.0, update docs and usage of templates with new Starlette arguments. PR #10846 by @tiangolo.v0.107.0Compare Source
Upgrades
Docs
v0.106.0Compare Source
Breaking Changes
Using resources from dependencies with
yieldin background tasks is no longer supported.This change is what supports the new features, read below. 🤓
Dependencies with
yield,HTTPExceptionand Background TasksDependencies with
yieldnow can raiseHTTPExceptionand other exceptions afteryield. 🎉Read the new docs here: Dependencies with
yieldandHTTPException.Before FastAPI 0.106.0, raising exceptions after
yieldwas not possible, the exit code in dependencies withyieldwas executed after the response was sent, so Exception Handlers would have already run.This was designed this way mainly to allow using the same objects "yielded" by dependencies inside of background tasks, because the exit code would be executed after the background tasks were finished.
Nevertheless, as this would mean waiting for the response to travel through the network while unnecessarily holding a resource in a dependency with yield (for example a database connection), this was changed in FastAPI 0.106.0.
Additionally, a background task is normally an independent set of logic that should be handled separately, with its own resources (e.g. its own database connection).
If you used to rely on this behavior, now you should create the resources for background tasks inside the background task itself, and use internally only data that doesn't depend on the resources of dependencies with
yield.For example, instead of using the same database session, you would create a new database session inside of the background task, and you would obtain the objects from the database using this new session. And then instead of passing the object from the database as a parameter to the background task function, you would pass the ID of that object and then obtain the object again inside the background task function.
The sequence of execution before FastAPI 0.106.0 was like the diagram in the Release Notes for FastAPI 0.106.0.
The new execution flow can be found in the docs: Execution of dependencies with
yield.v0.105.0Compare Source
Features
Annotated[str, Field(), Query()]. PR #10773 by @tiangolo.Refactors
Docs
Internal
v0.104.1Compare Source
Fixes
Docs
docs/en/docs/tutorial/metadata.md. PR #10433 by @worldworm.docs/en/docs/tutorial/path-params.md. PR #10043 by @giuliowaitforitdavide.docs/en/docs/reference/dependencies.md. PR #10465 by @suravshresth.docs/en/docs/tutorial/body-nested-models.md. PR #10468 by @yogabonito.pydantic.Requiredindocs/en/docs/tutorial/query-params-str-validations.md. PR #10469 by @yogabonito.docs/en/docs/reference/index.md. PR #10467 by @tarsil.Internal
docs/en/docs/async.mdanddocs/zh/docs/async.mdto make them relative. PR #10498 by @hasnatsajid.docs/em/docs/async.md. PR #10507 by @hasnatsajid.docs/em/docs/index.md, Python 3.8. PR #10521 by @kerriop.CITATION.cfffile for academic citations. PR #10496 by @tiangolo.v0.104.0Compare Source
Features
BackgroundTasks, refactor docs structure. PR #10392 by @tiangolo. New docs at FastAPI Reference - Code API.Upgrades
Internal
v0.103.2Compare Source
Refactors
Translations
docs/uk/docs/tutorial/extra-data-types.md. PR #10132 by @ArtemKhymenko.docs/fr/docs/advanced/path-operation-advanced-configuration.md,docs/fr/docs/alternatives.md,docs/fr/docs/async.md,docs/fr/docs/features.md,docs/fr/docs/help-fastapi.md,docs/fr/docs/index.md,docs/fr/docs/python-types.md,docs/fr/docs/tutorial/body.md,docs/fr/docs/tutorial/first-steps.md,docs/fr/docs/tutorial/query-params.md. PR #10154 by @s-rigaud.docs/zh/docs/async.md. PR #5591 by @mkdir700.docs/tutorial/security/simple-oauth2.md. PR #3844 by @jaystone776.docs/ko/docs/deployment/cloud.md. PR #10191 by @Sion99.docs/ja/docs/deployment/https.md. PR #10298 by @tamtam-fitness.docs/ru/docs/tutorial/body-fields.md. PR #10224 by @AlertRED.docs/pl/docs/help-fastapi.md. PR #10121 by @romabozhanovgithub.docs/ru/docs/tutorial/header-params.md. PR #10226 by @AlertRED.docs/zh/docs/deployment/versions.md. PR #10276 by @xzmeng.Internal
v0.103.1Compare Source
Fixes
Docs
regextopattern. PR #10085 by @pablodorrio.docs/en/docs/deployment/server-workers.md. PR #10066 by @tamtam-fitness.docs/en/docs/tutorial/extra-data-types.md. PR #10155 by @hasnatsajid.docs/en/docs/tutorial/handling-errors.md. PR #10170 by @poupapaa.docs/en/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md. PR #10172 by @ragul-kachiappan.Translations
docs/pt/docs/tutorial/path-params.md. PR #10126 by @LecoOliveira.docs/yo/docs/index.md. PR #10033 by @AfolabiOlaoluwa.docs/uk/docs/python-types.md. PR #10080 by @rostik1410.docs/vi/docs/tutorial/first-steps.mdanddocs/vi/docs/tutorial/index.md. PR #10088 by @magiskboy.docs/uk/docs/alternatives.md. PR #10060 by @whysage.docs/uk/docs/tutorial/index.md. PR #10079 by @rostik1410.docs/en/docs/how-to/separate-openapi-schemas.mdanddocs/en/docs/tutorial/schema-extra-example.md. PR #10189 by @xzmeng.docs/zh/docs/advanced/generate-clients.md. PR #9883 by @funny-cat-happy.Refactors
fastapi/applications.py. PR #10045 by @AhsanSheraz.Internal
v0.103.0Compare Source
Features
openapi_examplesin all FastAPI parameters. PR #10152 by @tiangolo.Docs
v0.102.0Compare Source
Features
separate_input_output_schemas=False. PR #10145 by @tiangolo.Refactors
Docs
Internal
v0.101.1Compare Source
Fixes
ResponseValidationErrorprintable details, to show up in server error logs. PR #10078 by @tiangolo.Refactors
fastapi/params.py. PR #9854 by @russbiggs.fastapi/concurrency.pyandfastapi/routing.py. PR #9590 by @ElliottLarsen.Docs
docs/en/docs/contributing.md. PR #9878 by @VicenteMerino.docs/en/docs/tutorial/bigger-applications.md. PR #9806 by @theonlykingpin.Translations
docs/ja/docs/deployment/concepts.md. PR #10062 by @tamtam-fitness.docs/ja/docs/deployment/server-workers.md. PR #10064 by @tamtam-fitness.docs/ja/docs/deployment/docker.md. PR #10073 by @tamtam-fitness.docs/uk/docs/fastapi-people.md. PR #10059 by @rostik1410.docs/uk/docs/tutorial/cookie-params.md. PR #10032 by @rostik1410.docs/ru/docs/deployment/docker.md. PR #9971 by @Xewus.docs/vi/docs/python-types.md. PR #10047 by @magiskboy.docs/ru/docs/tutorial/dependencies/global-dependencies.md. PR #9970 by @dudyaosuplayer.docs/ur/docs/benchmarks.md. PR #9974 by @AhsanSheraz.Internal
v0.101.0Compare Source
Features
computed_field, better OpenAPI for response models, proper required attributes, better generated clients. PR #10011 by @tiangolo.Refactors
jsonable_encoder. PR #9840 by @iudeen.Upgrades
Translations
docs/ru/docs/tutorial/security/index.md. PR #9963 by @eVery1337.Internal
v0.100.1Compare Source
Fixes
MultHostUrltoAnyUrlfor compatibility with older versions of Pydantic v1. PR #9852 by @Kludex.Docs
Translations
docs/uk/docs/tutorial/body.md. PR #4574 by @ss-o-furda.docs/vi/docs/features.mdanddocs/vi/docs/index.md. PR #3006 by @magiskboy.docs/ko/docs/async.md. PR #4179 by @NinaHwang.docs/zh/docs/tutorial/background-tasks.md. PR #9812 by @wdh99.docs/fr/docs/tutorial/query-params-str-validations.md. PR #4075 by @Smlep.docs/fr/docs/tutorial/index.md. PR #2234 by @JulianMaurin.docs/fr/docs/contributing.md. PR #2132 by @JulianMaurin.docs/fr/docs/benchmarks.md. PR #2155 by @clemsau.docs/ru/docs/tutorial/request-forms.md. PR #9841 by @dedkot01.docs/zh/docs/tutorial/handling-errors.md. PR #9485 by @Creat55.Internal
v0.100.0Compare Source
✨ Support for Pydantic v2 ✨
Pydantic version 2 has the core re-written in Rust and includes a lot of improvements and features, for example:
...all this while keeping the same Python API. In most of the cases, for simple models, you can simply upgrade the Pydantic version and get all the benefits. 🚀
In some cases, for pure data validation and processing, you can get performance improvements of 20x or more. This means 2,000% or more. 🤯
When you use FastAPI, there's a lot more going on, processing the request and response, handling dependencies, executing your own code, and particularly, waiting for the network. But you will probably still get some nice performance improvements just from the upgrade.
The focus of this release is compatibility with Pydantic v1 and v2, to make sure your current apps keep working. Later there will be more focus on refactors, correctness, code improvements, and then performance improvements. Some third-party early beta testers that ran benchmarks on the beta releases of FastAPI reported improvements of 2x - 3x. Which is not bad for just doing
pip install --upgrade fastapi pydantic. This was not an official benchmark and I didn't check it myself, but it's a good sign.Migration
Check out the Pydantic migration guide.
For the things that need changes in your Pydantic models, the Pydantic team built
bump-pydantic.A command line tool that will process your code and update most of the things automatically for you. Make sure you have your code in git first, and review each of the changes to make sure everything is correct before committing the changes.
Pydantic v1
This version of FastAPI still supports Pydantic v1. And although Pydantic v1 will be deprecated at some point, ti will still be supported for a while.
This means that you can install the new Pydantic v2, and if something fails, you can install Pydantic v1 while you fix any problems you might have, but having the latest FastAPI.
There are tests for both Pydantic v1 and v2, and test coverage is kept at 100%.
Changes
There are new parameter fields supported by Pydantic
Field()for:Path()Query()Header()Cookie()Body()Form()File()The new parameter fields are:
default_factoryalias_priorityvalidation_aliasserialization_aliasdiscriminatorstrictmultiple_ofallow_inf_nanmax_digitsdecimal_placesjson_schema_extra...you can read about them in the Pydantic docs.
The parameter
regexhas been deprecated and replaced bypattern.New Pydantic models use an improved and simplified attribute
model_configthat takes a simple dict instead of an internal classConfigfor their configuration.The attribute
schema_extrafor the internal classConfighas been replaced by the keyjson_schema_extrain the newmodel_configdict.When you install
"fastapi[all]"it now also includes:pydantic-settings- for settings management.pydantic-extra-types- for extra types to be used with Pydantic.Now Pydantic Settings is an additional optional package (included in
"fastapi[all]"). To use settings you should now importfrom pydantic_settings import BaseSettingsinstead of importing frompydanticdirectly.PR #9816 by @tiangolo, included all the work done (in multiple PRs) on the beta branch (
main-pv2).v0.99.1Compare Source
Fixes
additionalProperties: false. PR #9781 by @tiangolo.Docs
v0.99.0Compare Source
Note: this is the last release before supporting Pydantic v2. You can try out the beta with support for Pydantic v2 now, a new beta supporting Pydantic v2 with these same changes from this release will be available in the next hours/days. And the final version (0.100.0) with support for Pydantic v2 will be released in the next days (next week).
Now, back to this release (this one doesn't include the beta support for Pydantic v2).
This release has ✨ OpenAPI 3.1.0 ✨ 🎉
Features
✨ Add support for OpenAPI 3.1.0. PR #9770 by @tiangolo.
examplesfield inQuery(),Cookie(),Body(), etc. based on the latest JSON Schema and OpenAPI. Now it takes a list of examples and they are included directly in the JSON Schema, not outside. Read more about it (including the historical technical details) in the updated docs: Tutorial: Declare Request Example Data.✨ Add support for
dequeobjects and children injsonable_encoder. PR #9433 by @cranium.Docs
Translations
docs/fa/docs/advanced/sub-applications.md. PR #9692 by @mojtabapaso.docs/ru/docs/tutorial/response-model.md. PR #9675 by @glsglsgls.Internal
v0.98.0Compare Source
Note: please also help me try out the beta with support for Pydantic v2: https://github.com/tiangolo/fastapi/releases/tag/0.100.0-beta1
Now, back to this release (this one doesn't include the beta support for Pydantic v2).
Features
redirect_slashesat the FastAPI app level. PR #3432 by @cyberlis.Docs
docs/en/docs/tutorial/debugging.md. PR #9581 by @ivan-abc.docs/en/docs/tutorial/security/index.md. PR #9561 by @jyothish-mohan.Annotatednotes indocs/en/docs/tutorial/schema-extra-example.md. PR #9620 by @Alexandrhub.Annotation->Annotatedindocs/en/docs/tutorial/query-params-str-validations.md. PR #9625 by @mccricardo.Translations
docs/ru/docs/tutorial/metadata.md. PR #9681 by @TabarakoAkula.docs/es/docs/tutorial/first-steps.md. PR #9571 by @lilidl-nft.docs/tutorial/path-operation-configuration.md. PR #9696 by @TabarakoAkula.docs/zh/docs/advanced/security/index.md. PR #9666 by @lordqyxz.docs/zh/docs/advanced/settings.md. PR #9652 by @ChoyeonChern.docs/zh/docs/advanced/websockets.md. PR #9651 by @ChoyeonChern.docs/zh/docs/tutorial/testing.md. PR #9641 by @wdh99.docs/tutorial/extra-models.md. PR #9619 by @ivan-abc.docs/tutorial/cors.md. PR #9608 by @ivan-abc.docs/pl/docs/features.md. PR #5348 by @mbroton.docs/ru/docs/tutorial/body-nested-models.md. PR #9605 by @Alexandrhub.Internal
v0.97.0Compare Source
Features
dependenciesin WebSocket routes. PR #4534 by @paulo-raca.WebSocketRequestValidationError(which also allows to override it). PR #6030 by @kristjanvalur.Refactors
AsyncExitStackMiddlewareas without Python 3.6AsyncExitStackis always available. PR #9657 by @tiangolo.Upgrades
Internal
v0.96.1Compare Source
Fixes
HTTPExceptionheader type annotations. PR #9648 by @tiangolo.gtetoge. PR #9635 by @tiangolo.Upgrades
Refactors
media_typefromORJSONResponseas it's inherited from the parent class. PR #5805 by @Kludex.HTTPExceptiononly when needed, optimization refactor. PR #5356 by @pawamoy.Docs
Translations
docs/id/docs/tutorial/index.md. PR #5635 by @purwowd.docs/ru/docs/tutorial/index.md. PR #5896 by @Wilidon.docs/zh/docs/advanced/response-change-status-code.mdanddocs/zh/docs/advanced/response-headers.md. PR #9544 by @ChoyeonChern.docs/ru/docs/tutorial/schema-extra-example.md. PR #9621 by @Alexandrhub.Internal
v0.96.0Compare Source
Features
create_cloned_fieldto use a global cache and improve startup performance. PR #4645 by @madkinsz and previous original PR by @huonw.Docs
Translations
docs/tutorial/body.md. PR #3885 by @solomein-sv.docs/ru/docs/tutorial/static-files.md. PR #9580 by @Alexandrhub.docs/ru/docs/tutorial/query-params.md. PR #9584 by @Alexandrhub.docs/ru/docs/tutorial/first-steps.md. PR #9471 by @AGolicyn.docs/ru/docs/tutorial/debugging.md. PR #9579 by @Alexandrhub.docs/ru/docs/tutorial/path-params.md. PR #9519 by @AGolicyn.docs/zh/docs/tutorial/static-files.md. PR #9436 by @wdh99.docs/es/docs/async.md. PR #9483 by @andresbermeoq.docs/ru/docs/tutorial/path-params-numeric-validations.md. PR #9563 by @ivan-abc.docs/ru/docs/deployment/concepts.md. PR #9577 by @Xewus.docs/ru/docs/tutorial/body-multiple-params.md. PR #9586 by @Alexandrhub.Internal
v0.95.2Compare Source
>=0.27.0for a security release. PR #9541 by @tiangolo. Details on Starlette's security advisory.Translations
docs/pt/docs/advanced/events.md. PR #9326 by @oandersonmagalhaes.docs/ru/docs/deployment/manually.md. PR #9417 by @Xewus.docs/ru/docs/tutorial/testing.md. PR #9403 by @Xewus.docs/ru/docs/deployment/https.md. PR #9428 by @Xewus.docs/fr/docs/advanced/response-directly.md. PR #9415 by @axel584.docs/pt/docs/index.md. PR #9337 by @lucasbalieiro.docs/ru/docs/tutorial/response-status-code.md. PR #9370 by @nadia3373.Internal
flask.escapewarning for internal tests. PR #9468 by @samuelcolvin.v0.95.1Compare Source
Fixes
Annotatedin routers or path operations decorated multiple times. PR #9315 by @sharonyogev.Docs
Annotated. PR #9298 by @grdworkin.docs/en/docs/advanced/behind-a-proxy.md. PR #5681 by @Leommjr.docs/fa/docs/index.md. PR #6083 by @Kimiaattaei.docs/en/docs/help-fastapi.md. PR #9249 by @armgabrielyan.docs/en/docs/tutorial/query-params-str-validations.md. PR #9272 by @nicornk.docs/en/docs/tutorial/query-params-str-validations.md. PR #9273 by @tim-habitat.docs/en/docs/tutorial/path-params-numeric-validations.md. PR #9282 by @aadarsh977.docs/en/docs/tutorial/query-params-str-validations.md. PR #9380 by @dasstyxx.Translations
docs/fr/docs/advanced/index.md. PR #5673 by @axel584.docs/pt/docs/tutorial/body-nested-models.md. PR #4053 by @luccasmmg.docs/ru/docs/alternatives.md. PR #5994 by @Xewus.docs/pt/docs/tutorial/extra-models.md. PR #5912 by @LorhanSohaky.docs/pt/docs/tutorial/path-operation-configuration.md. PR #5936 by @LorhanSohaky.docs/ru/docs/contributing.md. PR #6002 by @stigsanek.docs/tutorial/dependencies/classes-as-dependencies.md. PR #9176 by @sehwan505.docs/ru/docs/project-generation.md. PR #9243 by @Xewus.docs/fr/docs/index.md. PR #9265 by @frabc.docs/ru/docs/tutorial/query-params-str-validations.md. PR #9267 by @dedkot01.docs/ru/docs/benchmarks.md. PR #9271 by @Xewus.Internal
v0.95.0Compare Source
Highlights
This release adds support for dependencies and parameters using
Annotatedand recommends its usage. ✨This has several benefits, one of the main ones is that now the parameters of your functions with
Annotatedwould not be affected at all.If you call those functions in other places in your code, the actual default values will be kept, your editor will help you notice missing required arguments, Python will require you to pass required arguments at runtime, you will be able to use the same functions for different things and with different libraries (e.g. Typer will soon support
Annotatedtoo, then you could use the same function for an API and a CLI), etc.Because
Annotatedis standard Python, you still get all the benefits from editors and tools, like autocompletion, inline errors, etc.One of the biggest benefits is that now you can create
Annotateddependencies that are then shared by multiple path operation functions, this will allow you to reduce a lot of code duplication in your codebase, while keeping all the support from editors and tools.For example, you could have code like this:
There's a bit of code duplication for the dependency:
...the bigger the codebase, the more noticeable it is.
Now you can create an annotated dependency once, like this:
And then you can reuse this
Annotateddependency:...and
CurrentUserhas all the typing information asUser, so your editor will work as expected (autocompletion and everything), and FastAPI will be able to understand the dependency defined inAnnotated. 😎Roughly all the docs have been rewritten to use
Annotatedas the main way to declare parameters and dependencies. All the examples in the docs now include a version withAnnotatedand a version without it, for each of the specific Python versions (when there are small differences/improvements in more recent versions). There were around 23K new lines added between docs, examples, and tests. 🚀The key updated docs are:
AnnotatedAnnotatedAnnotateddependenciesSpecial thanks to @nzig for the core implementation and to @adriangb for the inspiration and idea with Xpresso! 🚀
Features
Annotatedfor specifying dependencies and parameters. PR #4871 by @nzig.Docs
Annotatedin docs. PR #9270 by @tiangolo.Annotatedas the main recommendation, with new examples and tests. PR #9268 by @tiangolo.v0.94.1Compare Source
Fixes
v0.94.0Compare Source
Upgrades
lifespanwith state. PR #9239 by @tiangolo.Docs
Translations
docs/ru/docs/history-design-future.md. PR #5986 by @Xewus.Internal
pydanticto PyPI classifiers. PR #5914 by @yezz123.v0.93.0Compare Source
Features
lifespanasync context managers (supersedingstartupandshutdownevents). Initial PR #2944 by @uSpike.Now, instead of using independent
startupandshutdownevents, you can define that logic in a single function withyielddecorated with@asynccontextmanager(an async context manager).For example:
Note: This is the recommended way going forward, instead of using
startupandshutdownevents.Read more about it in the new docs: Advanced User Guide: Lifespan Events.
Docs
docs/en/docs/tutorial/metadata.mdforReDoc. PR #6005 by @eykamp.Translations
docs/fr/docs/advanced/path-operation-advanced-configuration.md. PR #9221 by @axel584.docs/tutorial/debugging.md. PR #9175 by @frabc.deployment/manually.md. PR #3693 by @rjNemo.Internal
v0.92.0Compare Source
🚨 This is a security fix. Please upgrade as soon as possible.
Upgrades
v0.91.0Compare Source
Upgrades
0.24.0and refactor internals for compatibility. PR #5985 by @tiangolo.0.24.0, a new instance of each middleware class would be created when a new middleware was added. That normally was not a problem, unless the middleware class expected to be created only once, with only one instance, that happened in some cases. This upgrade would solve those cases (thanks @adriangb! Starlette PR #2017). Now the middleware class instances are created once, right before the first request (the first time the app is called).v0.90.1Compare Source
Upgrades
Docs
docs/en/docs/project-generation.md. PR #5930 by @chandra-deb.Translations
docs/ru/docs/tutorial/cookie-params.md. PR #5890 by @bnzone.Internal
zip-docs.shinternal script, remove extra space. PR #5931 by @JuanPerdomo00.v0.90.0Compare Source
Upgrades
Docs
Translations
docs/ru/docs/tutorial/body-fields.md. PR #5898 by @simatheone.docs/ru/docs/help-fastapi.md. PR #5970 by @tiangolo.docs/pt/docs/tutorial/static-files.md. PR #5858 by @batlopes.docs/pt/docs/tutorial/encoder.md. PR #5525 by @felipebpl.docs/ru/docs/contributing.md. PR #5870 by @Xewus.Internal
v0.89.1Compare Source
Fixes
Docs
Translations
docs/tr/docs/tutorial/first_steps.md. PR #5691 by @Kadermiyanyedi.v0.89.0Compare Source
Features
response_model. Initial PR #1436 by @uriyyo.Now you can declare the return type /
response_modelin the function return type annotation:FastAPI will use the return type annotation to perform:
Before this version it was only supported via the
response_modelparameter.Read more about it in the new docs: Response Model - Return Type.
Docs
docs/en/docs/async.md. PR #5785 by @Kingdageek.docs/en/docs/deployment/concepts.md. PR #5824 by @kelbyfaessler.Translations
docs/ru/docs/fastapi-people.md. PR #5577 by @Xewus.docs/zh/docs/benchmarks.md. PR #4269 by @15027668g.docs/tutorial/cors.md. PR #3764 by @NinaHwang.Internal
v0.88.0Compare Source
Upgrades
0.22.0to fix bad encoding for query parameters in newTestClient. PR #5659 by @azogue.Docs
docs/en/docs/advanced/middleware.md. PR #5376 by @rifatrakib.Translations
docs/pt/docs/deployment/docker.md. PR #5663 by @ayr-ton.Internal
setup-pythonaction in tests to use new caching feature. PR #5680 by @madkinsz.v0.87.0Compare Source
Highlights of this release:
TestClientis based on HTTPX instead of Requests. 🚀TestClientusage, but @Kludex built bump-testclient to help you automatize migrating your tests. Make sure you are using Git and that you can undo any unnecessary changes (false positive changes, etc) before usingbump-testclient.all(including new Uvicorn version), when you install"fastapi[all]".Features
WebSocketExceptionand add it to docs. PR #5629 by @tiangolo.0.21.0, including the newTestClientbased on HTTPX. PR #5471 by @pawelrubin.Docs
Translations
docs/tutorial/query-params.md. PR #2969 by @ftnext.docs/fr/docs/advanced/additional-status-code.md. PR #5477 by @axel584.docs/pt/docs/tutorial/request-forms-and-files.md. PR #5579 by @batlopes.docs/ja/docs/advanced/websockets.md. PR #4983 by @xryuseix.Internal
v0.86.0Compare Source
Features
Fixes
Docs
docs/en/docs/tutorial/security/oauth2-jwt.md. PR #5584 by @vivekashok1221.Translations
docs/zh/docs/python-types.md. PR #5416 by @supercaizehua.docs/ru/docs/deployment/index.md. PR #5336 by @Xewus.docs/tutorial/security/oauth2-jwt.md. PR #3846 by @jaystone776.Internal
test_starlette_exception.py. PR #5379 by @iudeen.v0.85.2Compare Source
Note: this release doesn't affect final users, it's mainly internal. It unlocks Pydanitc work with the integration that runs FastAPI's tests in Pydantic's CI.
Docs
docs/en/docs/async.md. PR #5432 by @pamelafox.alternatives.md. PR #5455 by @su-shubham.pipin Zsh. PR #5523 by @zhangbo2012.Translations
docs/pt/docs/tutorial/request-forms.md. PR #4934 by @batlopes.docs/zh/docs/tutorial/dependencies/classes-as-dependencies.md. PR #4971 by @Zssaer.deployment/deta.md. PR #3692 by @rjNemo.docs/zh/docs/tutorial/query-params-str-validations.md. PR #5255 by @hjlarry.docs/zh/docs/tutorial/sql-databases.md. PR #4999 by @Zssaer.docs/zh/docs/advanced/wsgi.md. PR #4505 by @ASpathfinder.docs/pt/docs/tutorial/body-multiple-params.md. PR #4111 by @lbmendes.docs/pt/docs/tutorial/path-params-numeric-validations.md. PR #4099 by @lbmendes.deployment/versions.md. PR #3690 by @rjNemo.docs/fr/docs/help-fastapi.md. PR #2233 by @JulianMaurin.docs/zh/docs/tutorial/security/first-steps.md. PR #5530 by @yuki1sntSnow.docs/pt/docs/tutorial/response-status-code.md. PR #4922 by @batlopes.Internal
mkdocsfor languages as a subprocess to fix/enable MkDocs Material search plugin. PR #5501 by @tiangolo.v0.85.1Compare Source
Fixes
default,1XX,2XX,3XX,4XX,5XX. PR #5187 by @JarroVGIT.Docs
Internal
v0.85.0Compare Source
Features
0.19.1to0.20.4. Initial PR #4820 by @Kludex.>=0.12.0,<0.18.0to>=0.12.0,<0.19.0. PR #5401 by @tiangolo.Internal
v0.84.0Compare Source
Breaking Changes
This version of FastAPI drops support for Python 3.6. 🔥 Please upgrade to a supported version of Python (3.7 or above), Python 3.6 reached the end-of-life a long time ago. 😅☠
v0.83.0Compare Source
🚨 This is probably the last release (or one of the last releases) to support Python 3.6. 🔥
Python 3.6 reached the end-of-life and is no longer supported by Python since around a year ago.
You hopefully updated to a supported version of Python a while ago. If you haven't, you really should.
Features
jsonable_encoderfor include and exclude with dataclasses. PR #4923 by @DCsunset.Fixes
RuntimeErrorraised whenHTTPExceptionhas a status code with no content. PR #5365 by @iudeen.status_codeis empty but the aResponseparameter withresponse.status_codeis set. PR #5360 by @tmeckel.Docs
SECURITY.md. PR #5377 by @Kludex.Internal
v0.82.0Compare Source
🚨 This is probably the last release (or one of the last releases) to support Python 3.6. 🔥
Python 3.6 reached the end-of-life and is no longer supported by Python since around a year ago.
You hopefully updated to a supported version of Python a while ago. If you haven't, you really should.
Features
WebSocketStateinfastapi.websockets. PR #4376 by @matiuszka.ORJSONResponseto support nonstrkeys and serializing Numpy arrays. PR #3892 by @baby5.Fixes
yieldto always execute, by removing capacity limiter for them, to e.g. allow closing DB connections without deadlocks. PR #5122 by @adriangb.Docs
docs/en/docs/advanced/dataclasses.md. PR #3698 by @pfackeldey.X | Yoperator in explanation about Response Models. PR #5307 by @MendyLanda.ORJSONResponsewith details about improving performance. PR #2615 by @falkben.Translations
docs/ru/docs/features.md. PR #5315 by @Xewus.docs/zh/docs/tutorial/request-files.md. PR #4529 by @ASpathfinder.docs/zh/docs/tutorial/encoder.md. PR #4969 by @Zssaer.background-task.md. PR #5242 by @ComicShrimp.Internal
operation_idparameter position in delete method for consistency with the code. PR #4474 by @hiel.v0.81.0Compare Source
Features
<noscript>warning when JS is disabled. PR #5074 by @evroon.FrozenSetin parameters (e.g. query). PR #2938 by @juntatalor.HTTPExceptions and propagate them. PR #2036 by @ghandic.json.JSONDecodeErrorinformation when handling invalid JSON in request body, to support custom exception handlers that use its information. PR #4057 by @UKnowWhoIm.Fixes
jsonable_encoderfor dataclasses with pydantic-compatible fields. PR #3607 by @himbeles.openapi_extraswith parameter lists. PR #4267 by @orilevari.Docs
docs/en/docs/python-types.md. PR #5193 by @GlitchingCore.tests/test_schema_extra_examples.py. PR #5126 by @supraaxdd.docs/en/docs/tutorial/path-params-numeric-validations.md. PR #5142 by @invisibleroads.docs/en/docs/contributing.md. PR #5181 by @edisnake.docs/en/docs/tutorial/body-nested-models.md. PR #5169 by @papb.docs/en/docs/features.md. PR #5206 by @OtherBarry.docs/en/docs/async.md. PR #5125 by @Ksenofanex.else. PR #4693 by @adriangb.docs/en/docs/python-types.md. PR #4886 by @MicaelJarniac.typo-fix-path-params-numeric-validations.md. PR #3219 by @ccrenfroe.secrets.compare_digest()to account for non-ASCII characters. PR #3536 by @lewoudar.Translations
docs/ru/docs/index.md. PR #5289 by @impocode.docs/ru/docs/deployment/versions.md. PR #4985 by @emp7yhead.docs/pt/docs/tutorial/header-params.md. PR #4921 by @batlopes.ko/mkdocs.ymlfor a missing link. PR #5020 by @dalinaum.Internal
tests/test_tutorial/test_sql_databases/test_sql_databases.py. PR #5040 by @raccoonyy.fastapi/utils.py. PR #5057 by @pylounge.auto_errorwhich does not need to beOptional[bool]. PR #4933 by @DavidKimDY.strict = trueinstead of manual configs. PR #4605 by @michaeloliverx.dict()for{}infastapi/utils.py. PR #3138 by @ShahriyarR.jsonable_encoderto put related code closer. PR #4560 by @GuilleQP.fastapi/dependencies/utils.py. PR #4597 by @cikay.flake8 >=3.8.3,<6.0.0. PR #4097 by @jamescurtin.v0.80.0Compare Source
Breaking Changes - Fixes
response_modelnot invalidatingNone. PR #2725 by @hukkin.If you are using
response_modelwith some type that doesn't includeNonebut the function is returningNone, it will now raise an internal server error, because you are returning invalid data that violates the contract inresponse_model. Before this release it would allow breaking that contract returningNone.For example, if you have an app like this:
...calling the path
/items/invalidnonewill raise an error, becauseNoneis not a valid type for theresponse_modeldeclared withItem.You could also be implicitly returning
Nonewithout realizing, for example:If you have path operations using
response_modelthat need to be allowed to returnNone, make it explicit inresponse_modelusingUnion[Something, None]:This way the data will be correctly validated, you won't have an internal server error, and the documentation will also reflect that this path operation could return
None(ornullin JSON).Fixes
oauth2-redirect.htmlto include fixes for flavors of authorization code flows in Swagger UI. PR #3439 initial PR by @koonpeng.Security()and other places (e.g.Depends()) with different OAuth2 scopes. PR #2945 by @laggardkernel.response_model, allow things likeUnion[str, None]. PR #5294 by @tiangolo.Translations
docs/de/docs/features.md. PR #4533 by @0xflotus.encoder.mdin Korean translation. PR #5238 by @joonas-yoon.v0.79.1Compare Source
Fixes
jsonable_encoderusingincludeandexcludeparameters for non-Pydantic objects. PR #2606 by @xaviml.Docs
python-types.md. PR #5116 by @Kludex.docs/en/docs/python-types.md. PR #5007 by @atiabbz.Translations
docs/pt/docs/tutorial/query-params.md. PR #4775 by @batlopes.docs/pt/docs/tutorial/security/first-steps.md. PR #4954 by @FLAIR7.docs/zh/docs/advanced/response-cookies.md. PR #4638 by @zhangbo2012.docs/fr/docs/deployment/index.md. PR #3689 by @rjNemo.tutorial/handling-errors.md. PR #4769 by @frnsimoes.docs/fr/docs/history-design-future.md. PR #3451 by @rjNemo.docs/ru/docs/tutorial/background-tasks.md. PR #4854 by @AdmiralDesu.docs/tutorial/security/first-steps.md. PR #3841 by @jaystone776.docs/ja/docs/advanced/nosql-databases.md. PR #4205 by @sUeharaE4.docs/id/docs/tutorial/index.md. PR #4705 by @bas-baskara.docs/fa/docs/index.mdand tweak right-to-left CSS. PR #2395 by @mohsen-mahmoodi.Internal
v0.79.0Compare Source
Fixes - Breaking Changes
status_codeto204,304, or any code below200(1xx) will remove the body from the response.RuntimeError: Response content longer than Content-Length.fastapi.openapi.constants.STATUS_CODES_WITH_NO_BODY, it is replaced by a function in utils.Translations
docs/ja/docs/advanced/index.md. PR #5043 by @wakabame.docs/pl/docs/tutorial/first-steps.md. PR #5024 by @Valaraucoo.Internal
Optional[X]toUnion[X, None]for internal utils. PR #5124 by @tiangolo.v0.78.0Compare Source
Features
✨ Add support for omitting
...as default value when declaring required parameters with:Path()Query()Header()Cookie()Body()Form()File()New docs at Tutorial - Query Parameters and String Validations - Make it required. PR #4906 by @tiangolo.
Up to now, declaring a required parameter while adding additional validation or metadata needed using
...(Ellipsis).For example:
...all these parameters are required because the default value is
...(Ellipsis).But now it's possible and supported to just omit the default value, as would be done with Pydantic fields, and the parameters would still be required.
✨ For example, this is now supported:
To declare parameters as optional (not required), you can set a default value as always, for example using
None:Docs
UnionoverOptionaland migrate source examples. New docs at Python Types Intro - UsingUnionorOptional. PR #4908 by @tiangolo.Translations
docs/ja/docs/tutorial/testing.md. PR #4623 by @hirotoKirimaru.Internal
fastapi/utils.py. PR #3139 by @ShahriyarR.v0.77.1Compare Source
Upgrades
Docs
docs/en/docs/tutorial/security/first-steps.md. PR #4515 by @KikoIlievski.Translations
docs/pl/docs/tutorial/index.md. PR #4516 by @MKaczkow.docs/pt/docs/help-fastapi.md. PR #4583 by @mateusjs.Internal
v0.77.0Compare Source
Upgrades
JSONResponsethecontentargument is now required.Docs
TestClient. PR #4389 by @rgilton.docs/en/docs/tutorial/sql-databases.md. PR #4875 by @wpyoga.docs/en/docs/async.md. PR #4726 by @Prezu.Translations
docs/zh/docs/tutorial/query-params-str-validations.md. PR #4237 by @caimaoy.docs/pt/docs/tutorial/path-params.md. PR #4722 by @CleoMenezesJr.docs/pt/docs/tutorial/cookie-params.md. PR #4112 by @lbmendes.docs/tutorial/body.md. PR #4332 by @Smlep.docs/ja/docs/advanced/conditional-openapi.md. PR #2631 by @sh0nk.docs/ja/docs/tutorial/body.md. PR #3062 by @a-takahashi223.docs/pt/docs/tutorial/background-tasks.md. PR #2170 by @izaguerreiro.docs/deployment/deta.md. PR #4442 by @lsglucas.docs/async.md. PR #4036 by @Winand.docs/tutorial/body.md. PR #3960 by @leandrodesouzadev.tutorial/extra-data-types.md. PR #4077 by @luccasmmg.docs/features.md. PR #3905 by @jomue.v0.76.0Compare Source
Upgrades
Internal
v0.75.2Compare Source
This release includes upgrades to third-party packages that handle security issues. Although there's a chance these issues don't affect you in particular, please upgrade as soon as possible.
Fixes
ValidationErrorJSON Schema. PR #4806 by @tiangolo.ValidationErrorat fieldloc. PR #3810 by @dconathan.Upgrades
/docs) publicly to non-expert users. PR #4347 by @RAlanWright.Internal
v0.75.1Compare Source
Translations
Internal
v0.75.0Compare Source
Features
generate_unique_id_functionand docs for generating clients. New docs: Advanced - Generate Clients. PR #4650 by @tiangolo.v0.74.1Compare Source
Features
v0.74.0Compare Source
Breaking Changes
AsyncExitStackto fix context for dependencies withyield. PR #4575 by @tiangolo.Dependencies with
yieldcan now catchHTTPExceptionand custom exceptions. For example:After the dependency with
yieldhandles the exception (or not) the exception is raised again. So that any exception handlers can catch it, or ultimately the default internalServerErrorMiddleware.If you depended on exceptions not being received by dependencies with
yield, and receiving an exception breaks the code afteryield, you can use a block withtryandfinally:...that way the
finallyblock is run regardless of any exception that might happen.Features
contextvarscontext for the code before and afteryield. This was the main objective of that PR.This means that now, if you set a value in a context variable before
yield, the value would still be available afteryield(as you would intuitively expect). And it also means that you can reset the context variable with a token afterwards.For example, this works correctly now:
...before this change it would raise an error when resetting the context variable, because the
contextvarscontext was different, because of the way it was implemented.Note: You probably don't need
contextvars, and you should probably avoid using them. But they are powerful and useful in some advanced scenarios, for example, migrating from code that used Flask'sgsemi-global variable.Technical Details: If you want to know more of the technical details you can check out the PR description #4575.
Internal
v0.73.0Compare Source
Features
UploadFileparameters without explicitFile(). PR #4469 by @tiangolo. New docs: Request Files - File Parameters with UploadFile.Query,Cookie,Header, andPathparameters. PR #3144 by @astraldawn. New docs: Query Parameters and String Validations - Exclude from OpenAPI.Docs
Fixes
jsonable_encoder. PR #2061 by @viveksunder.Internal
v0.72.0Compare Source
Features
Docs
Translations
docs/help-fastapi.md. PR #3847 by @jaystone776.docs/ko/docs/index.md. PR #4195 by @kty4119.docs/pl/docs/index.md. PR #4245 by @MicroPanda123.docs\tutorial\path-operation-configuration.md. PR #3312 by @jaystone776.Internal
content.tabs.link. PR #4399 by @tiangolo.v0.71.0Compare Source
Features
Internal
v0.70.1Compare Source
There's nothing interesting in this particular FastAPI release. It is mainly to enable/unblock the release of the next version of Pydantic that comes packed with features and improvements. 🤩
Fixes
Translations
docs/tutorial/request-forms-and-files.md. PR #3744 by @NinaHwang.docs/tutorial/request-files.md. PR #3743 by @NinaHwang.docs/tutorial/query-params-str-validations.md. PR #3965 by @leandrodesouzadev.docs/tutorial/response-status-code.md. PR #3742 by @NinaHwang.docs/ko/docs/deployment/versions.md. PR #4121 by @DevDae.docs/ko/docs/tutorial/index.md. PR #4193 by @kimjaeyoonn.docs/tutorial/dependencies/classes-as-dependencies: Add type of query parameters in a description ofClasses as dependencies. PR #4015 by @0417taehyun.docs/tutorial/path-params.md. PR #3548 by @Smlep.docs/tutorial/query-params.md. PR #3556 by @Smlep.docs/python-types.md. PR #3926 by @BilalAlpaslan.Internal
v0.70.0Compare Source
This release just upgrades Starlette to the latest version,
0.16.0, which includes several bug fixes and some small breaking changes.These last three consecutive releases are independent so that you can migrate gradually:
0.68.2, with no breaking changes, but upgrading all the sub-dependencies.0.69.0, which upgrades Starlette to0.15.0, with AnyIO support, and a higher chance of having breaking changes in your code.0.70.0, just upgrading Starlette to the latest version0.16.0with additional bug fixes.This way, in case there was a breaking change for your code in one of the releases, you can still benefit from the previous upgrades. ✨
Breaking Changes - Upgrade
Also upgrades the ranges of optional dependencies:
"jinja2 >=2.11.2,<4.0.0""itsdangerous >=1.1.0,<3.0.0"v0.69.0Compare Source
Breaking Changes - Upgrade
This release adds support for Trio. ✨
It upgrades the version of Starlette to
0.15.0, now based on AnyIO, and the internal async components in FastAPI are now based on AnyIO as well, making it compatible with both asyncio and Trio.You can read the docs about running FastAPI with Trio using Hypercorn.
This release also removes
grapheneas an optional dependency for GraphQL. If you need to work with GraphQL, the recommended library now is Strawberry. You can read the new FastAPI with GraphQL docs.Features
0.15.0. PR #3372 by @graingert.grapheneas an optional dependency. PR #4007 by @tiangolo.Docs
docs/en/docs/contributing.md. PR #3752 by @NinaHwang.docs/en/docs/advanced/path-operation-advanced-configuration.mdanddocs/en/docs/release-notes.md. PR #3750 by @saintmalik.docs/en/docs/help-fastapi.md. PR #3760 by @jaystone776.docs/en/docs/tutorial/bigger-applications.md. PR #3285 by @HolyDorus.docs/en/docs/tutorial/testing.md. PR #3382 by @Bharat123rox.docs/en/docs/advanced/templates.md. PR #3211 by @oerpli.docs/en/docs/tutorial/request-files.md. PR #2803 by @gsganden.docs/tutorial/handling-errors.md. PR #2700 by @graue70.Translations
docs/fastapi-people.md. PR #3848 by @BilalAlpaslan.Internal
docs/ja/docs/deployment/docker.md. PR #3245 by @utamori.Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.
a81352ad3bto09c365bef6Update dependency fastapi to v0.112.0to Update dependency fastapi to v0.112.1