fastapi/fastapi (fastapi)
### [`v0.114.0`](https://redirect.github.com/fastapi/fastapi/releases/tag/0.114.0)
[Compare Source](https://redirect.github.com/fastapi/fastapi/compare/0.113.0...0.114.0)
You can restrict form fields to only include those declared in a Pydantic model and forbid any extra field sent in the request using Pydantic's `model_config = {"extra": "forbid"}`:
```python
from typing import Annotated
from fastapi import FastAPI, Form
from pydantic import BaseModel
app = FastAPI()
class FormData(BaseModel):
username: str
password: str
model_config = {"extra": "forbid"}
@app.post("/login/")
async def login(data: Annotated[FormData, Form()]):
return data
```
Read the new docs: [Form Models - Forbid Extra Form Fields](https://fastapi.tiangolo.com/tutorial/request-form-models/#forbid-extra-form-fields).
##### Features
- āØ Add support for forbidding extra form fields with Pydantic models. PR [#12134](https://redirect.github.com/fastapi/fastapi/pull/12134) by [@tiangolo](https://redirect.github.com/tiangolo).
##### Docs
- š Update docs, Form Models section title, to match config name. PR [#12152](https://redirect.github.com/fastapi/fastapi/pull/12152) by [@tiangolo](https://redirect.github.com/tiangolo).
##### Internal
- ā Update internal tests for latest Pydantic, including CI tweaks to install the latest Pydantic. PR [#12147](https://redirect.github.com/fastapi/fastapi/pull/12147) by [@tiangolo](https://redirect.github.com/tiangolo).
### [`v0.113.0`](https://redirect.github.com/fastapi/fastapi/releases/tag/0.113.0)
[Compare Source](https://redirect.github.com/fastapi/fastapi/compare/0.112.4...0.113.0)
Now you can declare form fields with Pydantic models:
```python
from typing import Annotated
from fastapi import FastAPI, Form
from pydantic import BaseModel
app = FastAPI()
class FormData(BaseModel):
username: str
password: str
@app.post("/login/")
async def login(data: Annotated[FormData, Form()]):
return data
```
Read the new docs: [Form Models](https://fastapi.tiangolo.com/tutorial/request-form-models/).
##### Features
- āØ Add support for Pydantic models in `Form` parameters. PR [#12129](https://redirect.github.com/fastapi/fastapi/pull/12129) by [@tiangolo](https://redirect.github.com/tiangolo).
##### Internal
- š§ Update sponsors: Coherence link. PR [#12130](https://redirect.github.com/fastapi/fastapi/pull/12130) by [@tiangolo](https://redirect.github.com/tiangolo).
### [`v0.112.4`](https://redirect.github.com/fastapi/fastapi/releases/tag/0.112.4)
[Compare Source](https://redirect.github.com/fastapi/fastapi/compare/0.112.3...0.112.4)
This release is mainly a big internal refactor to enable adding support for Pydantic models for `Form` fields, but that feature comes in the next release.
This release shouldn't affect apps using FastAPI in any way. You don't even have to upgrade to this version yet. It's just a checkpoint. š¤
##### Refactors
- ā»ļø Refactor deciding if `embed` body fields, do not overwrite fields, compute once per router, refactor internals in preparation for Pydantic models in `Form`, `Query` and others. PR [#12117](https://redirect.github.com/fastapi/fastapi/pull/12117) by [@tiangolo](https://redirect.github.com/tiangolo).
##### Internal
- āŖļø Temporarily revert "āØ Add support for Pydantic models in `Form` parameters" to make a checkpoint release. PR [#12128](https://redirect.github.com/fastapi/fastapi/pull/12128) by [@tiangolo](https://redirect.github.com/tiangolo).
- āØ Add support for Pydantic models in `Form` parameters. PR [#12127](https://redirect.github.com/fastapi/fastapi/pull/12127) by [@tiangolo](https://redirect.github.com/tiangolo). Reverted to make a checkpoint release with only refactors.
### [`v0.112.3`](https://redirect.github.com/fastapi/fastapi/releases/tag/0.112.3)
[Compare Source](https://redirect.github.com/fastapi/fastapi/compare/0.112.2...0.112.3)
This release is mainly internal refactors, it shouldn't affect apps using FastAPI in any way. You don't even have to upgrade to this version yet. There are a few bigger releases coming right after. š
##### Refactors
- ā»ļø Refactor internal `check_file_field()`, rename to `ensure_multipart_is_installed()` to clarify its purpose. PR [#12106](https://redirect.github.com/fastapi/fastapi/pull/12106) by [@tiangolo](https://redirect.github.com/tiangolo).
- ā»ļø Rename internal `create_response_field()` to `create_model_field()` as it's used for more than response models. PR [#12103](https://redirect.github.com/fastapi/fastapi/pull/12103) by [@tiangolo](https://redirect.github.com/tiangolo).
- ā»ļø Refactor and simplify internal data from `solve_dependencies()` using dataclasses. PR [#12100](https://redirect.github.com/fastapi/fastapi/pull/12100) by [@tiangolo](https://redirect.github.com/tiangolo).
- ā»ļø Refactor and simplify internal `analyze_param()` to structure data with dataclasses instead of tuple. PR [#12099](https://redirect.github.com/fastapi/fastapi/pull/12099) by [@tiangolo](https://redirect.github.com/tiangolo).
- ā»ļø Refactor and simplify dependencies data structures with dataclasses. PR [#12098](https://redirect.github.com/fastapi/fastapi/pull/12098) by [@tiangolo](https://redirect.github.com/tiangolo).
##### Docs
- š Add External Link: Techniques and applications of SQLAlchemy global filters in FastAPI. PR [#12109](https://redirect.github.com/fastapi/fastapi/pull/12109) by [@TheShubhendra](https://redirect.github.com/TheShubhendra).
- š Add note about `time.perf_counter()` in middlewares. PR [#12095](https://redirect.github.com/fastapi/fastapi/pull/12095) by [@tiangolo](https://redirect.github.com/tiangolo).
- š Tweak middleware code sample `time.time()` to `time.perf_counter()`. PR [#11957](https://redirect.github.com/fastapi/fastapi/pull/11957) by [@domdent](https://redirect.github.com/domdent).
- š§ Update sponsors: Coherence. PR [#12093](https://redirect.github.com/fastapi/fastapi/pull/12093) by [@tiangolo](https://redirect.github.com/tiangolo).
- š Fix async test example not to trigger DeprecationWarning. PR [#12084](https://redirect.github.com/fastapi/fastapi/pull/12084) by [@marcinsulikowski](https://redirect.github.com/marcinsulikowski).
- š Update `docs_src/path_params_numeric_validations/tutorial006.py`. PR [#11478](https://redirect.github.com/fastapi/fastapi/pull/11478) by [@MuhammadAshiqAmeer](https://redirect.github.com/MuhammadAshiqAmeer).
- š Update comma in `docs/en/docs/async.md`. PR [#12062](https://redirect.github.com/fastapi/fastapi/pull/12062) by [@Alec-Gillis](https://redirect.github.com/Alec-Gillis).
- š Update docs about serving FastAPI: ASGI servers, Docker containers, etc.. PR [#12069](https://redirect.github.com/fastapi/fastapi/pull/12069) by [@tiangolo](https://redirect.github.com/tiangolo).
- š Clarify `response_class` parameter, validations, and returning a response directly. PR [#12067](https://redirect.github.com/fastapi/fastapi/pull/12067) by [@tiangolo](https://redirect.github.com/tiangolo).
- š Fix minor typos and issues in the documentation. PR [#12063](https://redirect.github.com/fastapi/fastapi/pull/12063) by [@svlandeg](https://redirect.github.com/svlandeg).
- š Add note in Docker docs about ensuring graceful shutdowns and lifespan events with `CMD` exec form. PR [#11960](https://redirect.github.com/fastapi/fastapi/pull/11960) by [@GPla](https://redirect.github.com/GPla).
##### Translations
- š Add Dutch translation for `docs/nl/docs/features.md`. PR [#12101](https://redirect.github.com/fastapi/fastapi/pull/12101) by [@maxscheijen](https://redirect.github.com/maxscheijen).
- š Add Portuguese translation for `docs/pt/docs/advanced/testing-events.md`. PR [#12108](https://redirect.github.com/fastapi/fastapi/pull/12108) by [@ceb10n](https://redirect.github.com/ceb10n).
- š Add Portuguese translation for `docs/pt/docs/advanced/security/index.md`. PR [#12114](https://redirect.github.com/fastapi/fastapi/pull/12114) by [@ceb10n](https://redirect.github.com/ceb10n).
- š Add Dutch translation for `docs/nl/docs/index.md`. PR [#12042](https://redirect.github.com/fastapi/fastapi/pull/12042) by [@svlandeg](https://redirect.github.com/svlandeg).
- š Update Chinese translation for `docs/zh/docs/how-to/index.md`. PR [#12070](https://redirect.github.com/fastapi/fastapi/pull/12070) by [@synthpop123](https://redirect.github.com/synthpop123).
##### Internal
- ā¬ \[pre-commit.ci] pre-commit autoupdate. PR [#12115](https://redirect.github.com/fastapi/fastapi/pull/12115) by [@pre-commit-ci\[bot\]](https://redirect.github.com/apps/pre-commit-ci).
- ā¬ Bump pypa/gh-action-pypi-publish from 1.10.0 to 1.10.1. PR [#12120](https://redirect.github.com/fastapi/fastapi/pull/12120) by [@dependabot\[bot\]](https://redirect.github.com/apps/dependabot).
- ā¬ Bump pillow from 10.3.0 to 10.4.0. PR [#12105](https://redirect.github.com/fastapi/fastapi/pull/12105) by [@dependabot\[bot\]](https://redirect.github.com/apps/dependabot).
- š Set `include-hidden-files` to `True` when using the `upload-artifact` GH action. PR [#12118](https://redirect.github.com/fastapi/fastapi/pull/12118) by [@svlandeg](https://redirect.github.com/svlandeg).
- ā¬ Bump pypa/gh-action-pypi-publish from 1.9.0 to 1.10.0. PR [#12112](https://redirect.github.com/fastapi/fastapi/pull/12112) by [@dependabot\[bot\]](https://redirect.github.com/apps/dependabot).
- š§ Update sponsors link: Coherence. PR [#12097](https://redirect.github.com/fastapi/fastapi/pull/12097) by [@tiangolo](https://redirect.github.com/tiangolo).
- š§ Update labeler config to handle sponsorships data. PR [#12096](https://redirect.github.com/fastapi/fastapi/pull/12096) by [@tiangolo](https://redirect.github.com/tiangolo).
- š§ Update sponsors, remove Kong. PR [#12085](https://redirect.github.com/fastapi/fastapi/pull/12085) by [@tiangolo](https://redirect.github.com/tiangolo).
- ā¬ \[pre-commit.ci] pre-commit autoupdate. PR [#12076](https://redirect.github.com/fastapi/fastapi/pull/12076) by [@pre-commit-ci\[bot\]](https://redirect.github.com/apps/pre-commit-ci).
- š· Update `latest-changes` GitHub Action. PR [#12073](https://redirect.github.com/fastapi/fastapi/pull/12073) by [@tiangolo](https://redirect.github.com/tiangolo).
Configuration
š Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
š¦ Automerge: Enabled.
ā» Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
š Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
==0.112.2
->==0.114.0
Release Notes
fastapi/fastapi (fastapi)
### [`v0.114.0`](https://redirect.github.com/fastapi/fastapi/releases/tag/0.114.0) [Compare Source](https://redirect.github.com/fastapi/fastapi/compare/0.113.0...0.114.0) You can restrict form fields to only include those declared in a Pydantic model and forbid any extra field sent in the request using Pydantic's `model_config = {"extra": "forbid"}`: ```python from typing import Annotated from fastapi import FastAPI, Form from pydantic import BaseModel app = FastAPI() class FormData(BaseModel): username: str password: str model_config = {"extra": "forbid"} @app.post("/login/") async def login(data: Annotated[FormData, Form()]): return data ``` Read the new docs: [Form Models - Forbid Extra Form Fields](https://fastapi.tiangolo.com/tutorial/request-form-models/#forbid-extra-form-fields). ##### Features - āØ Add support for forbidding extra form fields with Pydantic models. PR [#12134](https://redirect.github.com/fastapi/fastapi/pull/12134) by [@tiangolo](https://redirect.github.com/tiangolo). ##### Docs - š Update docs, Form Models section title, to match config name. PR [#12152](https://redirect.github.com/fastapi/fastapi/pull/12152) by [@tiangolo](https://redirect.github.com/tiangolo). ##### Internal - ā Update internal tests for latest Pydantic, including CI tweaks to install the latest Pydantic. PR [#12147](https://redirect.github.com/fastapi/fastapi/pull/12147) by [@tiangolo](https://redirect.github.com/tiangolo). ### [`v0.113.0`](https://redirect.github.com/fastapi/fastapi/releases/tag/0.113.0) [Compare Source](https://redirect.github.com/fastapi/fastapi/compare/0.112.4...0.113.0) Now you can declare form fields with Pydantic models: ```python from typing import Annotated from fastapi import FastAPI, Form from pydantic import BaseModel app = FastAPI() class FormData(BaseModel): username: str password: str @app.post("/login/") async def login(data: Annotated[FormData, Form()]): return data ``` Read the new docs: [Form Models](https://fastapi.tiangolo.com/tutorial/request-form-models/). ##### Features - āØ Add support for Pydantic models in `Form` parameters. PR [#12129](https://redirect.github.com/fastapi/fastapi/pull/12129) by [@tiangolo](https://redirect.github.com/tiangolo). ##### Internal - š§ Update sponsors: Coherence link. PR [#12130](https://redirect.github.com/fastapi/fastapi/pull/12130) by [@tiangolo](https://redirect.github.com/tiangolo). ### [`v0.112.4`](https://redirect.github.com/fastapi/fastapi/releases/tag/0.112.4) [Compare Source](https://redirect.github.com/fastapi/fastapi/compare/0.112.3...0.112.4) This release is mainly a big internal refactor to enable adding support for Pydantic models for `Form` fields, but that feature comes in the next release. This release shouldn't affect apps using FastAPI in any way. You don't even have to upgrade to this version yet. It's just a checkpoint. š¤ ##### Refactors - ā»ļø Refactor deciding if `embed` body fields, do not overwrite fields, compute once per router, refactor internals in preparation for Pydantic models in `Form`, `Query` and others. PR [#12117](https://redirect.github.com/fastapi/fastapi/pull/12117) by [@tiangolo](https://redirect.github.com/tiangolo). ##### Internal - āŖļø Temporarily revert "āØ Add support for Pydantic models in `Form` parameters" to make a checkpoint release. PR [#12128](https://redirect.github.com/fastapi/fastapi/pull/12128) by [@tiangolo](https://redirect.github.com/tiangolo). - āØ Add support for Pydantic models in `Form` parameters. PR [#12127](https://redirect.github.com/fastapi/fastapi/pull/12127) by [@tiangolo](https://redirect.github.com/tiangolo). Reverted to make a checkpoint release with only refactors. ### [`v0.112.3`](https://redirect.github.com/fastapi/fastapi/releases/tag/0.112.3) [Compare Source](https://redirect.github.com/fastapi/fastapi/compare/0.112.2...0.112.3) This release is mainly internal refactors, it shouldn't affect apps using FastAPI in any way. You don't even have to upgrade to this version yet. There are a few bigger releases coming right after. š ##### Refactors - ā»ļø Refactor internal `check_file_field()`, rename to `ensure_multipart_is_installed()` to clarify its purpose. PR [#12106](https://redirect.github.com/fastapi/fastapi/pull/12106) by [@tiangolo](https://redirect.github.com/tiangolo). - ā»ļø Rename internal `create_response_field()` to `create_model_field()` as it's used for more than response models. PR [#12103](https://redirect.github.com/fastapi/fastapi/pull/12103) by [@tiangolo](https://redirect.github.com/tiangolo). - ā»ļø Refactor and simplify internal data from `solve_dependencies()` using dataclasses. PR [#12100](https://redirect.github.com/fastapi/fastapi/pull/12100) by [@tiangolo](https://redirect.github.com/tiangolo). - ā»ļø Refactor and simplify internal `analyze_param()` to structure data with dataclasses instead of tuple. PR [#12099](https://redirect.github.com/fastapi/fastapi/pull/12099) by [@tiangolo](https://redirect.github.com/tiangolo). - ā»ļø Refactor and simplify dependencies data structures with dataclasses. PR [#12098](https://redirect.github.com/fastapi/fastapi/pull/12098) by [@tiangolo](https://redirect.github.com/tiangolo). ##### Docs - š Add External Link: Techniques and applications of SQLAlchemy global filters in FastAPI. PR [#12109](https://redirect.github.com/fastapi/fastapi/pull/12109) by [@TheShubhendra](https://redirect.github.com/TheShubhendra). - š Add note about `time.perf_counter()` in middlewares. PR [#12095](https://redirect.github.com/fastapi/fastapi/pull/12095) by [@tiangolo](https://redirect.github.com/tiangolo). - š Tweak middleware code sample `time.time()` to `time.perf_counter()`. PR [#11957](https://redirect.github.com/fastapi/fastapi/pull/11957) by [@domdent](https://redirect.github.com/domdent). - š§ Update sponsors: Coherence. PR [#12093](https://redirect.github.com/fastapi/fastapi/pull/12093) by [@tiangolo](https://redirect.github.com/tiangolo). - š Fix async test example not to trigger DeprecationWarning. PR [#12084](https://redirect.github.com/fastapi/fastapi/pull/12084) by [@marcinsulikowski](https://redirect.github.com/marcinsulikowski). - š Update `docs_src/path_params_numeric_validations/tutorial006.py`. PR [#11478](https://redirect.github.com/fastapi/fastapi/pull/11478) by [@MuhammadAshiqAmeer](https://redirect.github.com/MuhammadAshiqAmeer). - š Update comma in `docs/en/docs/async.md`. PR [#12062](https://redirect.github.com/fastapi/fastapi/pull/12062) by [@Alec-Gillis](https://redirect.github.com/Alec-Gillis). - š Update docs about serving FastAPI: ASGI servers, Docker containers, etc.. PR [#12069](https://redirect.github.com/fastapi/fastapi/pull/12069) by [@tiangolo](https://redirect.github.com/tiangolo). - š Clarify `response_class` parameter, validations, and returning a response directly. PR [#12067](https://redirect.github.com/fastapi/fastapi/pull/12067) by [@tiangolo](https://redirect.github.com/tiangolo). - š Fix minor typos and issues in the documentation. PR [#12063](https://redirect.github.com/fastapi/fastapi/pull/12063) by [@svlandeg](https://redirect.github.com/svlandeg). - š Add note in Docker docs about ensuring graceful shutdowns and lifespan events with `CMD` exec form. PR [#11960](https://redirect.github.com/fastapi/fastapi/pull/11960) by [@GPla](https://redirect.github.com/GPla). ##### Translations - š Add Dutch translation for `docs/nl/docs/features.md`. PR [#12101](https://redirect.github.com/fastapi/fastapi/pull/12101) by [@maxscheijen](https://redirect.github.com/maxscheijen). - š Add Portuguese translation for `docs/pt/docs/advanced/testing-events.md`. PR [#12108](https://redirect.github.com/fastapi/fastapi/pull/12108) by [@ceb10n](https://redirect.github.com/ceb10n). - š Add Portuguese translation for `docs/pt/docs/advanced/security/index.md`. PR [#12114](https://redirect.github.com/fastapi/fastapi/pull/12114) by [@ceb10n](https://redirect.github.com/ceb10n). - š Add Dutch translation for `docs/nl/docs/index.md`. PR [#12042](https://redirect.github.com/fastapi/fastapi/pull/12042) by [@svlandeg](https://redirect.github.com/svlandeg). - š Update Chinese translation for `docs/zh/docs/how-to/index.md`. PR [#12070](https://redirect.github.com/fastapi/fastapi/pull/12070) by [@synthpop123](https://redirect.github.com/synthpop123). ##### Internal - ā¬ \[pre-commit.ci] pre-commit autoupdate. PR [#12115](https://redirect.github.com/fastapi/fastapi/pull/12115) by [@pre-commit-ci\[bot\]](https://redirect.github.com/apps/pre-commit-ci). - ā¬ Bump pypa/gh-action-pypi-publish from 1.10.0 to 1.10.1. PR [#12120](https://redirect.github.com/fastapi/fastapi/pull/12120) by [@dependabot\[bot\]](https://redirect.github.com/apps/dependabot). - ā¬ Bump pillow from 10.3.0 to 10.4.0. PR [#12105](https://redirect.github.com/fastapi/fastapi/pull/12105) by [@dependabot\[bot\]](https://redirect.github.com/apps/dependabot). - š Set `include-hidden-files` to `True` when using the `upload-artifact` GH action. PR [#12118](https://redirect.github.com/fastapi/fastapi/pull/12118) by [@svlandeg](https://redirect.github.com/svlandeg). - ā¬ Bump pypa/gh-action-pypi-publish from 1.9.0 to 1.10.0. PR [#12112](https://redirect.github.com/fastapi/fastapi/pull/12112) by [@dependabot\[bot\]](https://redirect.github.com/apps/dependabot). - š§ Update sponsors link: Coherence. PR [#12097](https://redirect.github.com/fastapi/fastapi/pull/12097) by [@tiangolo](https://redirect.github.com/tiangolo). - š§ Update labeler config to handle sponsorships data. PR [#12096](https://redirect.github.com/fastapi/fastapi/pull/12096) by [@tiangolo](https://redirect.github.com/tiangolo). - š§ Update sponsors, remove Kong. PR [#12085](https://redirect.github.com/fastapi/fastapi/pull/12085) by [@tiangolo](https://redirect.github.com/tiangolo). - ā¬ \[pre-commit.ci] pre-commit autoupdate. PR [#12076](https://redirect.github.com/fastapi/fastapi/pull/12076) by [@pre-commit-ci\[bot\]](https://redirect.github.com/apps/pre-commit-ci). - š· Update `latest-changes` GitHub Action. PR [#12073](https://redirect.github.com/fastapi/fastapi/pull/12073) by [@tiangolo](https://redirect.github.com/tiangolo).Configuration
š Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
š¦ Automerge: Enabled.
ā» Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
š Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.