Releases: fastapi/fastapi
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'smodel_config = { "extra": "forbid" }
:
fromtypingimportAnnotated
fromfastapiimportFastAPI,Form
frompydanticimportBaseModel
app=FastAPI()
classFormData(BaseModel):
username:str
password:str
model_config={"extra":"forbid"}
@app.post("/login/")
asyncdeflogin(data:Annotated[FormData,Form()]):
returndata
Read the new docs:Form Models - Forbid Extra Form Fields.
Features
Docs
Internal
0.113.0
Now you can declare form fields with Pydantic models:
fromtypingimportAnnotated
fromfastapiimportFastAPI,Form
frompydanticimportBaseModel
app=FastAPI()
classFormData(BaseModel):
username:str
password:str
@app.post("/login/")
asyncdeflogin(data:Annotated[FormData,Form()]):
returndata
Read the new docs:Form Models.
Features
Internal
0.112.4
This release is mainly a big internal refactor to enable adding support for Pydantic models forForm
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 inForm
,Query
and others. PR#12117by@tiangolo.
Internal
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 toensure_multipart_is_installed()
to clarify its purpose. PR#12106by@tiangolo. - ♻️ Rename internal
create_response_field()
tocreate_model_field()
as it's used for more than response models. PR#12103by@tiangolo. - ♻️ Refactor and simplify internal data from
solve_dependencies()
using dataclasses. PR#12100by@tiangolo. - ♻️ Refactor and simplify internal
analyze_param()
to structure data with dataclasses instead of tuple. PR#12099by@tiangolo. - ♻️ Refactor and simplify dependencies data structures with dataclasses. PR#12098by@tiangolo.
Docs
- 📝 Add External Link: Techniques and applications of SQLAlchemy global filters in FastAPI. PR#12109by@TheShubhendra.
- 📝 Add note about
time.perf_counter()
in middlewares. PR#12095by@tiangolo. - 📝 Tweak middleware code sample
time.time()
totime.perf_counter()
.PR#11957by@domdent. - 🔧 Update sponsors: Coherence. PR#12093by@tiangolo.
- 📝 Fix async test example not to trigger DeprecationWarning. PR#12084by@marcinsulikowski.
- 📝 Update
docs_src/path_params_numeric_validations/tutorial006.py
.PR#11478by@MuhammadAshiqAmeer. - 📝 Update comma in
docs/en/docs/async.md
.PR#12062by@Alec-Gillis. - 📝 Update docs about serving FastAPI: ASGI servers, Docker containers, etc.. PR#12069by@tiangolo.
- 📝 Clarify
response_class
parameter, validations, and returning a response directly. PR#12067by@tiangolo. - 📝 Fix minor typos and issues in the documentation. PR#12063by@svlandeg.
- 📝 Add note in Docker docs about ensuring graceful shutdowns and lifespan events with
CMD
exec form. PR#11960by@GPla.
Translations
- 🌐 Add Dutch translation for
docs/nl/docs/features.md
.PR#12101by@maxscheijen. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/testing-events.md
.PR#12108by@ceb10n. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/security/index.md
.PR#12114by@ceb10n. - 🌐 Add Dutch translation for
docs/nl/docs/index.md
.PR#12042by@svlandeg. - 🌐 Update Chinese translation for
docs/zh/docs/how-to/index.md
.PR#12070by@synthpop123.
Internal
- ⬆ [pre-commit.ci] pre-commit autoupdate. PR#12115by@pre-commit-ci[bot].
- ⬆ Bump pypa/gh-action-pypi-publish from 1.10.0 to 1.10.1. PR#12120by@dependabot[bot].
- ⬆ Bump pillow from 10.3.0 to 10.4.0. PR#12105by@dependabot[bot].
- 💚 Set
include-hidden-files
toTrue
when using theupload-artifact
GH action. PR#12118by@svlandeg. - ⬆ Bump pypa/gh-action-pypi-publish from 1.9.0 to 1.10.0. PR#12112by@dependabot[bot].
- 🔧 Update sponsors link: Coherence. PR#12097by@tiangolo.
- 🔧 Update labeler config to handle sponsorships data. PR#12096by@tiangolo.
- 🔧 Update sponsors, remove Kong. PR#12085by@tiangolo.
- ⬆ [pre-commit.ci] pre-commit autoupdate. PR#12076by@pre-commit-ci[bot].
- 👷 Update
latest-changes
GitHub Action. PR#12073by@tiangolo.
0.112.2
Fixes
- 🐛 Fix
allow_inf_nan
option for Param and Body classes. PR#11867by@giunio-prc. - 🐛 Ensure that
app.include_router
merges nested lifespans. PR#9630by@Lancetnik.
Refactors
- 🎨 Fix typing annotation for semi-internal
FastAPI.add_api_route()
.PR#10240by@ordinary-jamie. - ⬆️ Upgrade version of Ruff and reformat. PR#12032by@tiangolo.
Docs
- 📝 Fix a typo in
docs/en/docs/virtual-environments.md
.PR#12064by@aymenkrifa. - 📝 Add docs about Environment Variables and Virtual Environments. PR#12054by@tiangolo.
- 📝 Add Asyncer mention in async docs. PR#12037by@tiangolo.
- 📝 Move the Features docs to the top level to improve the main page menu. PR#12036by@tiangolo.
- ✏️ Fix import typo in reference example for
Security
.PR#11168by@0shah0. - 📝 Highlight correct line in tutorial
docs/en/docs/tutorial/body-multiple-params.md
.PR#11978by@svlandeg. - 🔥 Remove Sentry link from Advanced Middleware docs. PR#12031by@alejsdev.
- 📝 Clarify management tasks for translations, multiples files in one PR. PR#12030by@tiangolo.
- 📝 Edit the link to the OpenAPI "Responses Object" and "Response Object" sections in the "Additional Responses in OpenAPI" section. PR#11996by@VaitoSoi.
- 🔨 Specify
email-validator
dependency with dash. PR#11515by@jirikuncar. - 🌐 Add Spanish translation for
docs/es/docs/project-generation.md
.PR#11947by@alejsdev. - 📝 Fix minor typo. PR#12026by@MicaelJarniac.
- 📝 Several docs improvements, tweaks, and clarifications. PR#11390by@nilslindemann.
- 📝 Add missing
compresslevel
parameter on docs forGZipMiddleware
.PR#11350by@junah201. - 📝 Fix inconsistent response code when item already exists in docs for testing. PR#11818by@lokomilo.
- 📝 Update
docs/en/docs/tutorial/body.md
with Python 3.10 union type example. PR#11415by@rangzen.
Translations
- 🌐 Add Portuguese translation for
docs/pt/docs/tutorial/request_file.md
.PR#12018by@Joao-Pedro-P-Holanda. - 🌐 Add Japanese translation for
docs/ja/docs/learn/index.md
.PR#11592by@ukwhatn. - 📝 Update Spanish translation docs for consistency. PR#12044by@alejsdev.
- 🌐 Update Chinese translation for
docs/zh/docs/tutorial/dependencies/dependencies-with-yield.md
.PR#12028by@xuvjso. - 📝 Update FastAPI People, do not translate to have the most recent info. PR#12034by@tiangolo.
- 🌐 Update Urdu translation for
docs/ur/docs/benchmarks.md
.PR#10046by@AhsanSheraz.
Internal
- ⬆ [pre-commit.ci] pre-commit autoupdate. PR#12046by@pre-commit-ci[bot].
- 🔧 Update coverage config files. PR#12035by@tiangolo.
- 🔨 Standardize shebang across shell scripts. PR#11942by@gitworkflows.
- ⬆ Update sqlalchemy requirement from <1.4.43,>=1.3.18 to >=1.3.18,<2.0.33. PR#11979by@dependabot[bot].
- 🔊 Remove old ignore warnings. PR#11950by@tiangolo.
- ⬆️ Upgrade griffe-typingdoc for the docs. PR#12029by@tiangolo.
- 🙈 Add.coverage* to
.gitignore
.PR#11940by@gitworkflows. - ⚙️ Record and show test coverage contexts (what test covers which line). PR#11518by@slafs.
0.112.1
Upgrades
- ⬆️ Allow Starlette 0.38.x, update the pin to
>=0.37.2,<0.39.0
.PR#11876by@musicinmybrain.
Docs
- 📝 Update docs section about "Don't Translate these Pages". PR#12022by@tiangolo.
- 📝 Add documentation for non-translated pages and scripts to verify them. PR#12020by@tiangolo.
- 📝 Update docs about discussions questions. PR#11985by@tiangolo.
Translations
- 🌐 Add Portuguese translation for
docs/pt/docs/tutorial/bigger-applications.md
.PR#11971by@marcelomarkus. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/testing-websockets.md
.PR#11994by@ceb10n. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/testing-dependencies.md
.PR#11995by@ceb10n. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/using-request-directly.md
.PR#11956by@ceb10n. - 🌐 Add French translation for
docs/fr/docs/tutorial/body-multiple-params.md
.PR#11796by@pe-brian. - 🌐 Update Chinese translation for
docs/zh/docs/tutorial/query-params.md
.PR#11557by@caomingpei. - 🌐 Update typo in Chinese translation for
docs/zh/docs/advanced/testing-dependencies.md
.PR#11944by@bestony. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/sub-applications.md
anddocs/pt/docs/advanced/behind-a-proxy.md
.PR#11856by@marcelomarkus. - 🌐 Add Portuguese translation for
docs/pt/docs/tutorial/cors.md
anddocs/pt/docs/tutorial/middleware.md
.PR#11916by@wesinalves. - 🌐 Add French translation for
docs/fr/docs/tutorial/path-params-numeric-validations.md
.PR#11788by@pe-brian.
Internal
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.14 to 1.9.0. PR#11727by@dependabot[bot].
- 🔧 Add changelog URL to
pyproject.toml
,shows in PyPI. PR#11152by@Pierre-VF. - 👷 Do not sync labels as it overrides manually added labels. PR#12024by@tiangolo.
- 👷🏻 Update Labeler GitHub Actions. PR#12019by@tiangolo.
- 🔧 Update configs for MkDocs for languages and social cards. PR#12016by@tiangolo.
- 👷 Update permissions and config for labeler GitHub Action. PR#12008by@tiangolo.
- 👷🏻 Add GitHub Action label-checker. PR#12005by@tiangolo.
- 👷 Add label checker GitHub Action. PR#12004by@tiangolo.
- 👷 Update GitHub Action add-to-project. PR#12002by@tiangolo.
- 🔧 Update labeler GitHub Action. PR#12001by@tiangolo.
- 👷 Add GitHub Action labeler. PR#12000by@tiangolo.
- 👷 Add GitHub Action add-to-project. PR#11999by@tiangolo.
- 📝 Update admonitions in docs missing. PR#11998by@tiangolo.
- 🔨 Update docs.py script to enable dirty reload conditionally. PR#11986by@tiangolo.
- 🔧 Update MkDocs instant previews. PR#11982by@tiangolo.
- 🐛 Fix deploy docs previews script to handle mkdocs.yml files. PR#11984by@tiangolo.
- 💡 Add comment about custom Termynal line-height. PR#11976by@tiangolo.
- 👷 Add alls-green for test-redistribute. PR#11974by@tiangolo.
- 👷 Update docs-previews to handle no docs changes. PR#11975by@tiangolo.
- 🔨 Refactor script
deploy_docs_status.py
to account for deploy URLs with or without trailing slash. PR#11965by@tiangolo. - 🔒️ Update permissions for deploy-docs action. PR#11964by@tiangolo.
- 👷🏻 Add deploy docs status and preview links to PRs. PR#11961by@tiangolo.
- 🔧 Update docs setup with latest configs and plugins. PR#11953by@tiangolo.
- 🔇 Ignore warning from attrs in Trio. PR#11949by@tiangolo.
0.112.0
Breaking Changes
- ♻️ Add support for
pip install "fastapi[standard]"
with standard dependencies andpython -m fastapi
.PR#11935by@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 thefastapi-cli
,etc.
Andfastapi-slim
would not include those standard dependencies.
Nowfastapi
doesn't include those standard dependencies unless you install withpip install "fastapi[standard]"
.
Before, you would installpip install fastapi
,now you should include thestandard
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 insteadfastapi-slim
was not being a feasible solution.
Discussed here:#11522and here:#11525
Docs
- ✏️ Fix typos in docs. PR#11926by@jianghuyiyuan.
- 📝 Tweak management docs. PR#11918by@tiangolo.
- 🚚 Rename GitHub links from tiangolo/fastapi to fastapi/fastapi. PR#11913by@tiangolo.
- 📝 Add docs about FastAPI team and project management. PR#11908by@tiangolo.
- 📝 Re-structure docs main menu. PR#11904by@tiangolo.
- 📝 Update Speakeasy URL. PR#11871by@ndimares.
Translations
- 🌐 Update Portuguese translation for
docs/pt/docs/alternatives.md
.PR#11931by@ceb10n. - 🌐 Add Russian translation for
docs/ru/docs/tutorial/dependencies/sub-dependencies.md
.PR#10515by@AlertRED. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/response-change-status-code.md
.PR#11863by@ceb10n. - 🌐 Add Portuguese translation for
docs/pt/docs/reference/background.md
.PR#11849by@lucasbalieiro. - 🌐 Add Portuguese translation for
docs/pt/docs/tutorial/dependencies/dependencies-with-yield.md
.PR#11848by@Joao-Pedro-P-Holanda. - 🌐 Add Portuguese translation for
docs/pt/docs/reference/apirouter.md
.PR#11843by@lucasbalieiro.
Internal
- 🔧 Update sponsors: add liblab. PR#11934by@tiangolo.
- 👷 Update GitHub Action label-approved permissions. PR#11933by@tiangolo.
- 👷 Refactor GitHub Action to comment docs deployment URLs and update token. PR#11925by@tiangolo.
- 👷 Update tokens for GitHub Actions. PR#11924by@tiangolo.
- 👷 Update token permissions to comment deployment URL in docs. PR#11917by@tiangolo.
- 👷 Update token permissions for GitHub Actions. PR#11915by@tiangolo.
- 👷 Update GitHub Actions token usage. PR#11914by@tiangolo.
- 👷 Update GitHub Action to notify translations with label
approved-1
.PR#11907by@tiangolo. - 🔧 Update sponsors, remove Reflex. PR#11875by@tiangolo.
- 🔧 Update sponsors: remove TalkPython. PR#11861by@tiangolo.
- 🔨 Update docs Termynal scripts to not include line nums for local dev. PR#11854by@tiangolo.
0.111.1
Upgrades
- ➖ Remove
orjson
andujson
from default dependencies. PR#11842by@tiangolo.- These dependencies are still installed when you install with
pip install "fastapi[all]"
.But they not included inpip install fastapi
.
- These dependencies are still installed when you install with
- 📝 Restored Swagger-UI links to use the latest version possible. PR#11459by@UltimateLobster.
Docs
- ✏️ Rewording in
docs/en/docs/fastapi-cli.md
.PR#11716by@alejsdev. - 📝 Update Hypercorn links in all the docs. PR#11744by@kittydoor.
- 📝 Update docs with Ariadne reference from Starlette to FastAPI. PR#11797by@DamianCzajkowski.
- 📝 Update fastapi instrumentation external link. PR#11317by@softwarebloat.
- ✏️ Fix links to alembic example repo in docs. PR#11628by@augiwan.
- ✏️ Update
docs/en/docs/fastapi-cli.md
.PR#11715by@alejsdev. - 📝 Update External Links. PR#11500by@devon2018.
- 📝 Add External Link: Tutorial de FastAPI, ¿el mejor framework de Python?. PR#11618by@EduardoZepeda.
- 📝 Fix typo in
docs/en/docs/tutorial/body-multiple-params.md
.PR#11698by@mwb-u. - 📝 Add External Link: Deploy a Serverless FastAPI App with Neon Postgres and AWS App Runner at any scale. PR#11633by@ananis25.
- 📝 Update
security/first-steps.md
.PR#11674by@alejsdev. - 📝 Update
security/first-steps.md
.PR#11673by@alejsdev. - 📝 Update note in
path-params-numeric-validations.md
.PR#11672by@alejsdev. - 📝 Tweak intro docs about
Annotated
andQuery()
params. PR#11664by@tiangolo. - 📝 Update JWT auth documentation to use PyJWT instead of pyhon-jose. PR#11589by@estebanx64.
- 📝 Update docs. PR#11603by@alejsdev.
- ✏️ Fix typo: convert every 're-use' to 'reuse'.. PR#11598by@hasansezertasan.
- ✏️ Fix typo in
fastapi/applications.py
.PR#11593by@petarmaric. - ✏️ Fix link in
fastapi-cli.md
.PR#11524by@svlandeg.
Translations
- 🌐 Add Spanish translation for
docs/es/docs/how-to/graphql.md
.PR#11697by@camigomezdev. - 🌐 Add Portuguese translation for
docs/pt/docs/reference/index.md
.PR#11840by@lucasbalieiro. - 🌐 Fix link in German translation. PR#11836by@anitahammer.
- 🌐 Add Portuguese translation for
docs/pt/docs/tutorial/dependencies/sub-dependencies.md
.PR#11792by@Joao-Pedro-P-Holanda. - 🌐 Add Turkish translation for
docs/tr/docs/tutorial/request-forms.md
.PR#11553by@hasansezertasan. - 🌐 Add Portuguese translation for
docs/pt/docs/reference/exceptions.md
.PR#11834by@lucasbalieiro. - 🌐 Add Portuguese translation for
docs/pt/docs/tutorial/dependencies/global-dependencies.md
.PR#11826by@Joao-Pedro-P-Holanda. - 🌐 Add Portuguese translation for
docs/pt/docs/how-to/general.md
.PR#11825by@lucasbalieiro. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/async-tests.md
.PR#11808by@ceb10n. - 🌐 Add Ukrainian translation for
docs/uk/docs/tutorial/first-steps.md
.PR#11809by@vkhoroshchak. - 🌐 Add Portuguese translation for
docs/pt/docs/tutorial/dependencies/dependencies-in-path-operation-operators.md
.PR#11804by@Joao-Pedro-P-Holanda. - 🌐 Add Chinese translation for
docs/zh/docs/fastapi-cli.md
.PR#11786by@logan2d5. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/openapi-webhooks.md
.PR#11791by@ceb10n. - 🌐 Update Chinese translation for
docs/tutorial/security/oauth2-jwt.md
.PR#11781by@logan2d5. - 📝 Fix image missing in French translation for
docs/fr/docs/async.md
.PR#11787by@pe-brian. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/advanced-dependencies.md
.PR#11775by@ceb10n. - 🌐 Add Portuguese translation for
docs/pt/docs/tutorial/dependencies/classes-as-dependencies.md
.PR#11768by@Joao-Pedro-P-Holanda. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/additional-status-codes.md
.PR#11753by@ceb10n. - 🌐 Add Portuguese translation for
docs/pt/docs/tutorial/dependencies/index.md
.PR#11757by@Joao-Pedro-P-Holanda. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/settings.md
.PR#11739by@Joao-Pedro-P-Holanda. - 🌐 Add French translation for
docs/fr/docs/learn/index.md
.PR#11712by@benjaminvandammeholberton. - 🌐 Add Portuguese translation for
docs/pt/docs/how-to/index.md
.PR#11731by@vhsenna. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/additional-responses.md
.PR#11736by@ceb10n. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/benchmarks.md
.PR#11713by@ceb10n. - 🌐 Fix Korean translation for
docs/ko/docs/tutorial/response-status-code.md
.PR#11718by@nayeonkinn. - 🌐 Add Korean translation for
docs/ko/docs/tutorial/extra-data-types.md
.PR#11711by@nayeonkinn. - 🌐 Fix Korean translation for
docs/ko/docs/tutorial/body-nested-models.md
.PR#11710by@nayeonkinn. - 🌐 Add Portuguese translation for
docs/pt/docs/advanced/fastapi-cli.md
.PR#11641by@ayr-ton. - 🌐 Add Traditional Chinese translation for
docs/zh-hant/docs/fastapi-people.md
.PR#11639by@hsuanchi. - 🌐 Add Turkish translation for
docs/tr/docs/advanced/index.md
.PR#11606by@hasansezertasan. - 🌐 Add Turkish translation for
docs/tr/docs/deployment/cloud.md
.PR#11610by@hasansezertasan. - 🌐 Add Turkish translation for
docs/tr/docs/advanced/security/index.md
.PR#11609by@hasansezertasan. - 🌐 Add Turkish translation for
docs/tr/docs/advanced/testing-websockets.md
.PR#11608by@hasansezertasan. - 🌐 Add Turkish translation for
docs/tr/docs/how-to/general.md
.PR [#11607](h...
0.111.0
Features
- ✨ Add FastAPI CLI, the new
fastapi
command. PR#11522by@tiangolo.- New docs:FastAPI CLI.
Try it out with:
$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
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#11496by@tiangolo.
- ✏️ Fix typo in
fastapi/security/api_key.py
.PR#11481by@ch33zer. - ✏️ Fix typo in
security/http.py
.PR#11455by@omarmoo5.
Translations
- 🌐 Add Traditional Chinese translation for
docs/zh-hant/benchmarks.md
.PR#11484by@KNChiu. - 🌐 Update Chinese translation for
docs/zh/docs/fastapi-people.md
.PR#11476by@billzhong. - 🌐 Add Chinese translation for
docs/zh/docs/how-to/index.md
anddocs/zh/docs/how-to/general.md
.PR#11443by@billzhong. - 🌐 Add Spanish translation for cookie-params
docs/es/docs/tutorial/cookie-params.md
.PR#11410by@fabianfalon.
Internal
- ⬆ Bump mkdocstrings[python] from 0.23.0 to 0.24.3. PR#11469by@dependabot[bot].
- 🔨 Update internal scripts and remove unused ones. PR#11499by@tiangolo.
- 🔧 Migrate from Hatch to PDM for the internal build. PR#11498by@tiangolo.
- ⬆️ Upgrade MkDocs Material and re-enable cards. PR#11466by@tiangolo.
- ⬆ Bump pillow from 10.2.0 to 10.3.0. PR#11403by@dependabot[bot].
- 🔧 Ungroup dependabot updates. PR#11465by@tiangolo.