diff --git a/.github/workflows/add-to-project.yml b/.github/workflows/add-to-project.yml
index 01a0824449..318c3c2fb0 100644
--- a/.github/workflows/add-to-project.yml
+++ b/.github/workflows/add-to-project.yml
@@ -14,7 +14,7 @@ jobs:
name: Add to project
runs-on: ubuntu-latest
steps:
- - uses: actions/add-to-project@244f685bbc3b7adfa8466e08b698b5577571133e # v1.0.2
+ - uses: actions/add-to-project@5afcf98fcd03f1c2f92c3c83f58ae24323cc57fd # v2.0.0
with:
project-url: https://github.com/orgs/fastapi/projects/2
github-token: ${{ secrets.PROJECTS_TOKEN }} # zizmor: ignore[secrets-outside-env]
diff --git a/.github/workflows/guard-dependencies.yml b/.github/workflows/guard-dependencies.yml
new file mode 100644
index 0000000000..c3f97c3752
--- /dev/null
+++ b/.github/workflows/guard-dependencies.yml
@@ -0,0 +1,52 @@
+name: Guard Dependencies
+
+on:
+ pull_request_target: # zizmor: ignore[dangerous-triggers] -- This workflow only reads context.payload metadata, never checks out PR code
+ branches: [master]
+ paths:
+ - pyproject.toml
+ - uv.lock
+
+permissions:
+ contents: read
+ issues: write
+ pull-requests: write
+
+jobs:
+ check-author:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check if author is org member or allowed bot
+ uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
+ with:
+ script: |
+ const pr = context.payload.pull_request;
+ const author = pr.user.login;
+ const assoc = pr.author_association;
+
+ const botAllowlist = new Set(['dependabot[bot]']);
+ const orgAuthorAssociations = new Set(['MEMBER', 'OWNER']);
+
+ const allowed =
+ botAllowlist.has(author) ||
+ (assoc != null && orgAuthorAssociations.has(assoc));
+
+ if (!allowed) {
+ await github.rest.issues.createComment({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ issue_number: context.payload.pull_request.number,
+ body: `This PR modifies dependency files (\`pyproject.toml\` or \`uv.lock\`), which is restricted to members of the **${context.repo.owner}** organization on GitHub.\n\nIf you need a dependency change, please [open a discussion](https://github.com/${context.repo.owner}/${context.repo.repo}/discussions/new) describing what you need and why.\n\nClosing this PR automatically.`
+ });
+
+ await github.rest.pulls.update({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ pull_number: context.payload.pull_request.number,
+ state: 'closed'
+ });
+
+ core.setFailed('Dependency changes are restricted to organization members.');
+ } else {
+ console.log(`Author ${author} (author_association=${assoc}) is allowed to make dependency changes.`);
+ }
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
index 58c6892375..2072a3f0b9 100644
--- a/.github/workflows/labeler.yml
+++ b/.github/workflows/labeler.yml
@@ -18,7 +18,7 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- - uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
+ - uses: actions/labeler@f27b608878404679385c85cfa523b85ccb86e213 # v6.1.0
if: ${{ github.event.action != 'labeled' && github.event.action != 'unlabeled' }}
- run: echo "Done adding labels"
# Run this after labeler applied labels
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 1b1daf36be..7380cb75e9 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -178,7 +178,7 @@ jobs:
- name: Install Dependencies
run: uv sync --no-dev --group tests --extra all
- name: CodSpeed benchmarks
- uses: CodSpeedHQ/action@1c8ae4843586d3ba879736b7f6b7b0c990757fab # v4.12.1
+ uses: CodSpeedHQ/action@658a901452bb54c799643e060733b7afe9121b8d # v4.14.0
with:
mode: simulation
run: uv run --no-sync pytest tests/benchmarks --codspeed
diff --git a/.github/workflows/translate.yml b/.github/workflows/translate.yml
index 22fd7e4f15..87023623ed 100644
--- a/.github/workflows/translate.yml
+++ b/.github/workflows/translate.yml
@@ -79,6 +79,8 @@ jobs:
if: github.repository_owner == 'fastapi'
needs: langs
runs-on: ubuntu-latest
+ permissions:
+ contents: write
strategy:
matrix:
lang: ${{ fromJson(needs.langs.outputs.langs) }}
@@ -91,7 +93,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- persist-credentials: false
+ persist-credentials: true # Required for `git push` in `translate.py`
- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 7913c813ac..d304b78e8c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -14,6 +14,12 @@ repos:
- id: end-of-file-fixer
- id: trailing-whitespace
+ - repo: https://github.com/crate-ci/typos
+ rev: bbaefadf97b0ec5fdc942684b647f1a6ab250274 # v1.46.0
+ hooks:
+ - id: typos
+ args: [--force-exclude]
+
- repo: local
hooks:
- id: local-ruff-check
diff --git a/README.md b/README.md
index 9ed338a1bb..eb0368762b 100644
--- a/README.md
+++ b/README.md
@@ -49,7 +49,7 @@ The key features are:
-### Gold and Silver Sponsors
+### Gold Sponsors
@@ -61,12 +61,16 @@ The key features are:
+
+### Silver Sponsors
+
+
@@ -74,6 +78,10 @@ The key features are:
## Opinions
+
+
+
## FastAPI mini documentary
There's a [FastAPI mini documentary](https://www.youtube.com/watch?v=mpR8ngthqiE) released at the end of 2025, you can watch it online:
-
+
## **Typer**, the FastAPI of CLIs
diff --git a/docs/en/data/contributors.yml b/docs/en/data/contributors.yml
index e003b3a42a..10bb2be968 100644
--- a/docs/en/data/contributors.yml
+++ b/docs/en/data/contributors.yml
@@ -1,21 +1,21 @@
tiangolo:
login: tiangolo
- count: 935
+ count: 942
avatarUrl: https://avatars.githubusercontent.com/u/1326112?u=cb5d06e73a9e1998141b1641aa88e443c6717651&v=4
url: https://github.com/tiangolo
dependabot:
login: dependabot
- count: 157
+ count: 189
avatarUrl: https://avatars.githubusercontent.com/in/29110?v=4
url: https://github.com/apps/dependabot
YuriiMotov:
login: YuriiMotov
- count: 66
+ count: 70
avatarUrl: https://avatars.githubusercontent.com/u/109919500?u=bc48be95c429989224786106b027f3c5e40cc354&v=4
url: https://github.com/YuriiMotov
alejsdev:
login: alejsdev
- count: 53
+ count: 56
avatarUrl: https://avatars.githubusercontent.com/u/90076947?u=0facffe3abf87f57a1f05fa773d1119cc5c2f6a5&v=4
url: https://github.com/alejsdev
pre-commit-ci:
@@ -35,7 +35,7 @@ Kludex:
url: https://github.com/Kludex
svlandeg:
login: svlandeg
- count: 21
+ count: 23
avatarUrl: https://avatars.githubusercontent.com/u/8796347?u=556c97650c27021911b0b9447ec55e75987b0e8a&v=4
url: https://github.com/svlandeg
dmontagu:
@@ -556,7 +556,7 @@ chailandau:
DanielKusyDev:
login: DanielKusyDev
count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/36250676?u=2ea6114ff751fc48b55f231987a0e2582c6b1bd2&v=4
+ avatarUrl: https://avatars.githubusercontent.com/u/36250676?u=411f1f5923596480b896d160e23c908318f39003&v=4
url: https://github.com/DanielKusyDev
Viicos:
login: Viicos
diff --git a/docs/en/data/people.yml b/docs/en/data/people.yml
index 01c01d06b0..cde0c9633b 100644
--- a/docs/en/data/people.yml
+++ b/docs/en/data/people.yml
@@ -1,19 +1,19 @@
maintainers:
- login: tiangolo
- answers: 1922
+ answers: 1927
avatarUrl: https://avatars.githubusercontent.com/u/1326112?u=cb5d06e73a9e1998141b1641aa88e443c6717651&v=4
url: https://github.com/tiangolo
experts:
- login: tiangolo
- count: 1922
+ count: 1927
avatarUrl: https://avatars.githubusercontent.com/u/1326112?u=cb5d06e73a9e1998141b1641aa88e443c6717651&v=4
url: https://github.com/tiangolo
- login: YuriiMotov
- count: 1156
+ count: 1164
avatarUrl: https://avatars.githubusercontent.com/u/109919500?u=bc48be95c429989224786106b027f3c5e40cc354&v=4
url: https://github.com/YuriiMotov
- login: github-actions
- count: 769
+ count: 770
avatarUrl: https://avatars.githubusercontent.com/in/15368?v=4
url: https://github.com/apps/github-actions
- login: Kludex
@@ -25,7 +25,7 @@ experts:
avatarUrl: https://avatars.githubusercontent.com/u/4335847?u=ed77f67e0bb069084639b24d812dbb2a2b1dc554&v=4
url: https://github.com/jgould22
- login: dmontagu
- count: 239
+ count: 240
avatarUrl: https://avatars.githubusercontent.com/u/35119617?u=540f30c937a6450812628b9592a1dfe91bbe148e&v=4
url: https://github.com/dmontagu
- login: Mause
@@ -41,7 +41,7 @@ experts:
avatarUrl: https://avatars.githubusercontent.com/u/13659033?u=e8bea32d07a5ef72f7dde3b2079ceb714923ca05&v=4
url: https://github.com/JarroVGIT
- login: euri10
- count: 152
+ count: 153
avatarUrl: https://avatars.githubusercontent.com/u/1104190?u=321a2e953e6645a7d09b732786c7a8061e0f8a8b&v=4
url: https://github.com/euri10
- login: iudeen
@@ -57,7 +57,7 @@ experts:
avatarUrl: https://avatars.githubusercontent.com/u/72013291?u=ae5679e6bd971d9d98cd5e76e8683f83642ba950&v=4
url: https://github.com/JavierSanchezCastro
- login: luzzodev
- count: 105
+ count: 107
avatarUrl: https://avatars.githubusercontent.com/u/27291415?u=5607ae1ce75c5f54f09500ca854227f7bfd2033b&v=4
url: https://github.com/luzzodev
- login: raphaelauv
@@ -89,7 +89,7 @@ experts:
avatarUrl: https://avatars.githubusercontent.com/u/685002?u=b5094ab4527fc84b006c0ac9ff54367bdebb2267&v=4
url: https://github.com/acidjunk
- login: sm-Fifteen
- count: 48
+ count: 49
avatarUrl: https://avatars.githubusercontent.com/u/516999?u=437c0c5038558c67e887ccd863c1ba0f846c03da&v=4
url: https://github.com/sm-Fifteen
- login: adriangb
@@ -246,99 +246,123 @@ experts:
url: https://github.com/mattmess1221
last_month_experts:
- login: YuriiMotov
- count: 37
+ count: 12
avatarUrl: https://avatars.githubusercontent.com/u/109919500?u=bc48be95c429989224786106b027f3c5e40cc354&v=4
url: https://github.com/YuriiMotov
-- login: christiansousadev
+- login: Firatasi
+ count: 7
+ avatarUrl: https://avatars.githubusercontent.com/u/112112161?u=3219914a49a4a604b3626007823db7de049b6d66&v=4
+ url: https://github.com/Firatasi
+- login: ericgitangu
count: 3
- avatarUrl: https://avatars.githubusercontent.com/u/103544118?u=690f3f76d1dc4d0929de5020679d5604f860acbc&v=4
- url: https://github.com/christiansousadev
-- login: saitarrun
+ avatarUrl: https://avatars.githubusercontent.com/u/11472845?u=9d916cf0f5c80e63cb1d753b8b50dcb8ced3b883&v=4
+ url: https://github.com/ericgitangu
+- login: cookesan
count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/116748905?u=3433afbaf06676a482ebf4ba33b08ddb3fc5c5bf&v=4
- url: https://github.com/saitarrun
-- login: Vision-Executive
+ avatarUrl: https://avatars.githubusercontent.com/u/6601329?u=7bfc9b017198a9fa50929ae8ae0a787632424ffd&v=4
+ url: https://github.com/cookesan
+- login: coleifer
count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/259394686?u=dd28bbc246e4e2cd2adb1d497e7b7585b5d24585&v=4
- url: https://github.com/Vision-Executive
-- login: JavierSanchezCastro
+ avatarUrl: https://avatars.githubusercontent.com/u/119974?u=b3a546c94ee1105e792e0acad2c4743d800e7975&v=4
+ url: https://github.com/coleifer
+- login: Bahtya
count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/72013291?u=ae5679e6bd971d9d98cd5e76e8683f83642ba950&v=4
- url: https://github.com/JavierSanchezCastro
+ avatarUrl: https://avatars.githubusercontent.com/u/34988899?u=b8e3c0cf26f4bd1faea265d2f5f66f564af63463&v=4
+ url: https://github.com/Bahtya
+- login: luzzodev
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/27291415?u=5607ae1ce75c5f54f09500ca854227f7bfd2033b&v=4
+ url: https://github.com/luzzodev
+- login: DoctorJohn
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/14076775?u=ec43fe79a98dbc864b428afc7220753e25ca3af2&v=4
+ url: https://github.com/DoctorJohn
three_months_experts:
- login: YuriiMotov
- count: 85
+ count: 74
avatarUrl: https://avatars.githubusercontent.com/u/109919500?u=bc48be95c429989224786106b027f3c5e40cc354&v=4
url: https://github.com/YuriiMotov
+- login: Firatasi
+ count: 7
+ avatarUrl: https://avatars.githubusercontent.com/u/112112161?u=3219914a49a4a604b3626007823db7de049b6d66&v=4
+ url: https://github.com/Firatasi
- login: JavierSanchezCastro
- count: 9
+ count: 7
avatarUrl: https://avatars.githubusercontent.com/u/72013291?u=ae5679e6bd971d9d98cd5e76e8683f83642ba950&v=4
url: https://github.com/JavierSanchezCastro
- login: Toygarmetu
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/92878791?u=538530cb6d5554e71f9c28709d794db9a74d23d9&v=4
url: https://github.com/Toygarmetu
-- login: ceb10n
- count: 5
- avatarUrl: https://avatars.githubusercontent.com/u/235213?u=edcce471814a1eba9f0cdaa4cd0de18921a940a6&v=4
- url: https://github.com/ceb10n
- login: tiangolo
- count: 4
+ count: 5
avatarUrl: https://avatars.githubusercontent.com/u/1326112?u=cb5d06e73a9e1998141b1641aa88e443c6717651&v=4
url: https://github.com/tiangolo
- login: luzzodev
- count: 3
+ count: 4
avatarUrl: https://avatars.githubusercontent.com/u/27291415?u=5607ae1ce75c5f54f09500ca854227f7bfd2033b&v=4
url: https://github.com/luzzodev
-- login: christiansousadev
+- login: ericgitangu
count: 3
- avatarUrl: https://avatars.githubusercontent.com/u/103544118?u=690f3f76d1dc4d0929de5020679d5604f860acbc&v=4
- url: https://github.com/christiansousadev
-- login: Kludex
+ avatarUrl: https://avatars.githubusercontent.com/u/11472845?u=9d916cf0f5c80e63cb1d753b8b50dcb8ced3b883&v=4
+ url: https://github.com/ericgitangu
+- login: cookesan
count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=df8a3f06ba8f55ae1967a3e2d5ed882903a4e330&v=4
- url: https://github.com/Kludex
+ avatarUrl: https://avatars.githubusercontent.com/u/6601329?u=7bfc9b017198a9fa50929ae8ae0a787632424ffd&v=4
+ url: https://github.com/cookesan
+- login: coleifer
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/119974?u=b3a546c94ee1105e792e0acad2c4743d800e7975&v=4
+ url: https://github.com/coleifer
+- login: Bahtya
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/34988899?u=b8e3c0cf26f4bd1faea265d2f5f66f564af63463&v=4
+ url: https://github.com/Bahtya
- login: saitarrun
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/116748905?u=3433afbaf06676a482ebf4ba33b08ddb3fc5c5bf&v=4
url: https://github.com/saitarrun
-- login: Vision-Executive
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/259394686?u=dd28bbc246e4e2cd2adb1d497e7b7585b5d24585&v=4
- url: https://github.com/Vision-Executive
- login: EmmanuelNiyonshuti
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/142030687?u=ab131d5ad4670280a978f489babe71c9bf9c1097&v=4
url: https://github.com/EmmanuelNiyonshuti
+- login: christiansousadev
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/103544118?u=690f3f76d1dc4d0929de5020679d5604f860acbc&v=4
+ url: https://github.com/christiansousadev
+- login: DoctorJohn
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/14076775?u=ec43fe79a98dbc864b428afc7220753e25ca3af2&v=4
+ url: https://github.com/DoctorJohn
+- login: gaardhus
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/46934916?u=18d7aacc6ce59f054749209645d11cfe77b52f90&v=4
+ url: https://github.com/gaardhus
- login: valentinDruzhinin
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/12831905?u=aae1ebc675c91e8fa582df4fcc4fc4128106344d&v=4
url: https://github.com/valentinDruzhinin
-- login: RichieB2B
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/1461970?u=edaa57d1077705244ea5c9244f4783d94ff11f12&v=4
- url: https://github.com/RichieB2B
-- login: dotmitsu
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/42657211?u=3bccc9a2f386a3f24230ec393080f8904fe2a5b2&v=4
- url: https://github.com/dotmitsu
six_months_experts:
- login: YuriiMotov
- count: 182
+ count: 166
avatarUrl: https://avatars.githubusercontent.com/u/109919500?u=bc48be95c429989224786106b027f3c5e40cc354&v=4
url: https://github.com/YuriiMotov
- login: tiangolo
- count: 24
+ count: 23
avatarUrl: https://avatars.githubusercontent.com/u/1326112?u=cb5d06e73a9e1998141b1641aa88e443c6717651&v=4
url: https://github.com/tiangolo
- login: JavierSanchezCastro
- count: 15
+ count: 12
avatarUrl: https://avatars.githubusercontent.com/u/72013291?u=ae5679e6bd971d9d98cd5e76e8683f83642ba950&v=4
url: https://github.com/JavierSanchezCastro
- login: luzzodev
- count: 10
+ count: 9
avatarUrl: https://avatars.githubusercontent.com/u/27291415?u=5607ae1ce75c5f54f09500ca854227f7bfd2033b&v=4
url: https://github.com/luzzodev
+- login: Firatasi
+ count: 7
+ avatarUrl: https://avatars.githubusercontent.com/u/112112161?u=3219914a49a4a604b3626007823db7de049b6d66&v=4
+ url: https://github.com/Firatasi
- login: Toygarmetu
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/92878791?u=538530cb6d5554e71f9c28709d794db9a74d23d9&v=4
@@ -347,10 +371,6 @@ six_months_experts:
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/235213?u=edcce471814a1eba9f0cdaa4cd0de18921a940a6&v=4
url: https://github.com/ceb10n
-- login: RichieB2B
- count: 5
- avatarUrl: https://avatars.githubusercontent.com/u/1461970?u=edaa57d1077705244ea5c9244f4783d94ff11f12&v=4
- url: https://github.com/RichieB2B
- login: JunjieAraoXiong
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/167785867?u=b69afe090c8bf5fd73f2d23fc3a887b28f68f192&v=4
@@ -359,50 +379,66 @@ six_months_experts:
count: 4
avatarUrl: https://avatars.githubusercontent.com/u/12831905?u=aae1ebc675c91e8fa582df4fcc4fc4128106344d&v=4
url: https://github.com/valentinDruzhinin
-- login: ArmanShirzad
- count: 4
- avatarUrl: https://avatars.githubusercontent.com/u/68951175?u=1f1efae2fa5d0d17c38a1a8413bedca5e538cedb&v=4
- url: https://github.com/ArmanShirzad
-- login: CodeKraken-cmd
- count: 4
- avatarUrl: https://avatars.githubusercontent.com/u/48470371?u=e7c0e7ec8e35ca5fb3ae40a586ed5e788fd0fe6d&v=4
- url: https://github.com/CodeKraken-cmd
-- login: svlandeg
- count: 4
- avatarUrl: https://avatars.githubusercontent.com/u/8796347?u=556c97650c27021911b0b9447ec55e75987b0e8a&v=4
- url: https://github.com/svlandeg
- login: krylosov-aa
count: 4
avatarUrl: https://avatars.githubusercontent.com/u/242901957?u=4c9c7b468203b09bca64936fb464620e32cdd252&v=4
url: https://github.com/krylosov-aa
-- login: Kludex
+- login: ericgitangu
count: 3
- avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=df8a3f06ba8f55ae1967a3e2d5ed882903a4e330&v=4
- url: https://github.com/Kludex
-- login: christiansousadev
+ avatarUrl: https://avatars.githubusercontent.com/u/11472845?u=9d916cf0f5c80e63cb1d753b8b50dcb8ced3b883&v=4
+ url: https://github.com/ericgitangu
+- login: EmmanuelNiyonshuti
count: 3
- avatarUrl: https://avatars.githubusercontent.com/u/103544118?u=690f3f76d1dc4d0929de5020679d5604f860acbc&v=4
- url: https://github.com/christiansousadev
+ avatarUrl: https://avatars.githubusercontent.com/u/142030687?u=ab131d5ad4670280a978f489babe71c9bf9c1097&v=4
+ url: https://github.com/EmmanuelNiyonshuti
- login: sachinh35
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/21972708?u=8560b97b8b41e175f476270b56de8a493b84f302&v=4
url: https://github.com/sachinh35
+- login: RichieB2B
+ count: 3
+ avatarUrl: https://avatars.githubusercontent.com/u/1461970?u=edaa57d1077705244ea5c9244f4783d94ff11f12&v=4
+ url: https://github.com/RichieB2B
+- login: cookesan
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/6601329?u=7bfc9b017198a9fa50929ae8ae0a787632424ffd&v=4
+ url: https://github.com/cookesan
+- login: coleifer
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/119974?u=b3a546c94ee1105e792e0acad2c4743d800e7975&v=4
+ url: https://github.com/coleifer
+- login: Bahtya
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/34988899?u=b8e3c0cf26f4bd1faea265d2f5f66f564af63463&v=4
+ url: https://github.com/Bahtya
- login: saitarrun
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/116748905?u=3433afbaf06676a482ebf4ba33b08ddb3fc5c5bf&v=4
url: https://github.com/saitarrun
+- login: cepedus
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/26345924?u=38495abbdbb8695dd76478cae5963bf994c498bc&v=4
+ url: https://github.com/cepedus
+- login: christiansousadev
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/103544118?u=690f3f76d1dc4d0929de5020679d5604f860acbc&v=4
+ url: https://github.com/christiansousadev
+- login: DoctorJohn
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/14076775?u=ec43fe79a98dbc864b428afc7220753e25ca3af2&v=4
+ url: https://github.com/DoctorJohn
+- login: gaardhus
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/46934916?u=18d7aacc6ce59f054749209645d11cfe77b52f90&v=4
+ url: https://github.com/gaardhus
+- login: Kludex
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=df8a3f06ba8f55ae1967a3e2d5ed882903a4e330&v=4
+ url: https://github.com/Kludex
- login: y2kbugger
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/6101677?u=1d50077e29582dc01fcbdff846f04fe7ec73fe2e&v=4
url: https://github.com/y2kbugger
-- login: Vision-Executive
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/259394686?u=dd28bbc246e4e2cd2adb1d497e7b7585b5d24585&v=4
- url: https://github.com/Vision-Executive
-- login: EmmanuelNiyonshuti
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/142030687?u=ab131d5ad4670280a978f489babe71c9bf9c1097&v=4
- url: https://github.com/EmmanuelNiyonshuti
- login: davidbrochart
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/4711805?u=d39696d995a9e02ec3613ffb2f62b20b14f92f26&v=4
@@ -419,10 +455,6 @@ six_months_experts:
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/4661021?u=ed5ddadcf36d9b943ebe61febe0b96ee34e5425d&v=4
url: https://github.com/dolfinus
-- login: skion
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/532192?v=4
- url: https://github.com/skion
- login: florentx
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/142113?u=bf10f10080026346b092633c380977b61cee0d9c&v=4
@@ -431,37 +463,33 @@ six_months_experts:
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/51329768?v=4
url: https://github.com/jc-louis
-- login: WilliamDEdwards
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/12184311?u=9b29d5d1d71f5f1a7ef9e439963ad3529e3b33a4&v=4
- url: https://github.com/WilliamDEdwards
- login: bughuntr7
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/236391583?u=7f51ff690e3a5711f845a115903c39e21c8af938&v=4
url: https://github.com/bughuntr7
+- login: CodeKraken-cmd
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/48470371?u=e7c0e7ec8e35ca5fb3ae40a586ed5e788fd0fe6d&v=4
+ url: https://github.com/CodeKraken-cmd
+- login: svlandeg
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/8796347?u=556c97650c27021911b0b9447ec55e75987b0e8a&v=4
+ url: https://github.com/svlandeg
- login: jymchng
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/27895426?u=fb88c47775147d62a395fdb895d1af4148c7b566&v=4
url: https://github.com/jymchng
-- login: XieJiSS
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/24671280?u=7ea0d9bfe46cf762594d62fd2f3c6d3813c3584c&v=4
- url: https://github.com/XieJiSS
-- login: profatsky
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/92920843?u=81e54bb0b613c171f7cd0ab3cbb58873782c9c9c&v=4
- url: https://github.com/profatsky
one_year_experts:
- login: YuriiMotov
count: 951
avatarUrl: https://avatars.githubusercontent.com/u/109919500?u=bc48be95c429989224786106b027f3c5e40cc354&v=4
url: https://github.com/YuriiMotov
- login: luzzodev
- count: 53
+ count: 48
avatarUrl: https://avatars.githubusercontent.com/u/27291415?u=5607ae1ce75c5f54f09500ca854227f7bfd2033b&v=4
url: https://github.com/luzzodev
- login: tiangolo
- count: 31
+ count: 30
avatarUrl: https://avatars.githubusercontent.com/u/1326112?u=cb5d06e73a9e1998141b1641aa88e443c6717651&v=4
url: https://github.com/tiangolo
- login: valentinDruzhinin
@@ -473,9 +501,17 @@ one_year_experts:
avatarUrl: https://avatars.githubusercontent.com/u/72013291?u=ae5679e6bd971d9d98cd5e76e8683f83642ba950&v=4
url: https://github.com/JavierSanchezCastro
- login: sachinh35
- count: 11
+ count: 9
avatarUrl: https://avatars.githubusercontent.com/u/21972708?u=8560b97b8b41e175f476270b56de8a493b84f302&v=4
url: https://github.com/sachinh35
+- login: Firatasi
+ count: 7
+ avatarUrl: https://avatars.githubusercontent.com/u/112112161?u=3219914a49a4a604b3626007823db7de049b6d66&v=4
+ url: https://github.com/Firatasi
+- login: DoctorJohn
+ count: 7
+ avatarUrl: https://avatars.githubusercontent.com/u/14076775?u=ec43fe79a98dbc864b428afc7220753e25ca3af2&v=4
+ url: https://github.com/DoctorJohn
- login: raceychan
count: 6
avatarUrl: https://avatars.githubusercontent.com/u/75417963?u=060c62870ec5a791765e63ac20d8885d11143786&v=4
@@ -484,14 +520,14 @@ one_year_experts:
count: 6
avatarUrl: https://avatars.githubusercontent.com/u/37829370?u=da44ca53aefd5c23f346fab8e9fd2e108294c179&v=4
url: https://github.com/yinziyan1206
-- login: Kludex
- count: 5
- avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=df8a3f06ba8f55ae1967a3e2d5ed882903a4e330&v=4
- url: https://github.com/Kludex
- login: Toygarmetu
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/92878791?u=538530cb6d5554e71f9c28709d794db9a74d23d9&v=4
url: https://github.com/Toygarmetu
+- login: Kludex
+ count: 5
+ avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=df8a3f06ba8f55ae1967a3e2d5ed882903a4e330&v=4
+ url: https://github.com/Kludex
- login: ceb10n
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/235213?u=edcce471814a1eba9f0cdaa4cd0de18921a940a6&v=4
@@ -508,14 +544,6 @@ one_year_experts:
count: 5
avatarUrl: https://avatars.githubusercontent.com/u/8796347?u=556c97650c27021911b0b9447ec55e75987b0e8a&v=4
url: https://github.com/svlandeg
-- login: DoctorJohn
- count: 5
- avatarUrl: https://avatars.githubusercontent.com/u/14076775?u=ec43fe79a98dbc864b428afc7220753e25ca3af2&v=4
- url: https://github.com/DoctorJohn
-- login: alv2017
- count: 4
- avatarUrl: https://avatars.githubusercontent.com/u/31544722?v=4
- url: https://github.com/alv2017
- login: WilliamDEdwards
count: 4
avatarUrl: https://avatars.githubusercontent.com/u/12184311?u=9b29d5d1d71f5f1a7ef9e439963ad3529e3b33a4&v=4
@@ -536,10 +564,18 @@ one_year_experts:
count: 4
avatarUrl: https://avatars.githubusercontent.com/u/157279130?u=16d6466476cf7dbc55a4cd575b6ea920ebdd81e1&v=4
url: https://github.com/isgin01
-- login: christiansousadev
+- login: ericgitangu
count: 3
- avatarUrl: https://avatars.githubusercontent.com/u/103544118?u=690f3f76d1dc4d0929de5020679d5604f860acbc&v=4
- url: https://github.com/christiansousadev
+ avatarUrl: https://avatars.githubusercontent.com/u/11472845?u=9d916cf0f5c80e63cb1d753b8b50dcb8ced3b883&v=4
+ url: https://github.com/ericgitangu
+- login: henrymcl
+ count: 3
+ avatarUrl: https://avatars.githubusercontent.com/u/26480299?v=4
+ url: https://github.com/henrymcl
+- login: EmmanuelNiyonshuti
+ count: 3
+ avatarUrl: https://avatars.githubusercontent.com/u/142030687?u=ab131d5ad4670280a978f489babe71c9bf9c1097&v=4
+ url: https://github.com/EmmanuelNiyonshuti
- login: dolfinus
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/4661021?u=ed5ddadcf36d9b943ebe61febe0b96ee34e5425d&v=4
@@ -564,18 +600,38 @@ one_year_experts:
count: 3
avatarUrl: https://avatars.githubusercontent.com/u/210023470?u=c25d66addf36a747bd9fab773c4a6e7b238f45d4&v=4
url: https://github.com/Jelle-tenB
+- login: cookesan
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/6601329?u=7bfc9b017198a9fa50929ae8ae0a787632424ffd&v=4
+ url: https://github.com/cookesan
+- login: coleifer
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/119974?u=b3a546c94ee1105e792e0acad2c4743d800e7975&v=4
+ url: https://github.com/coleifer
+- login: Bahtya
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/34988899?u=b8e3c0cf26f4bd1faea265d2f5f66f564af63463&v=4
+ url: https://github.com/Bahtya
- login: saitarrun
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/116748905?u=3433afbaf06676a482ebf4ba33b08ddb3fc5c5bf&v=4
url: https://github.com/saitarrun
+- login: cepedus
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/26345924?u=38495abbdbb8695dd76478cae5963bf994c498bc&v=4
+ url: https://github.com/cepedus
+- login: christiansousadev
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/103544118?u=690f3f76d1dc4d0929de5020679d5604f860acbc&v=4
+ url: https://github.com/christiansousadev
+- login: gaardhus
+ count: 2
+ avatarUrl: https://avatars.githubusercontent.com/u/46934916?u=18d7aacc6ce59f054749209645d11cfe77b52f90&v=4
+ url: https://github.com/gaardhus
- login: y2kbugger
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/6101677?u=1d50077e29582dc01fcbdff846f04fe7ec73fe2e&v=4
url: https://github.com/y2kbugger
-- login: Vision-Executive
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/259394686?u=dd28bbc246e4e2cd2adb1d497e7b7585b5d24585&v=4
- url: https://github.com/Vision-Executive
- login: Garrett-R
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/6614695?u=c128fd775002882f6e391bda5a89d1bdc5bdf45f&v=4
@@ -584,10 +640,6 @@ one_year_experts:
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/17792131?u=372b27056ec82f1ae03d8b3f37ef55b04a7cfdd1&v=4
url: https://github.com/TaigoFr
-- login: EmmanuelNiyonshuti
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/142030687?u=ab131d5ad4670280a978f489babe71c9bf9c1097&v=4
- url: https://github.com/EmmanuelNiyonshuti
- login: stan-dot
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/56644812?u=a7dd773084f1c17c5f05019cc25a984e24873691&v=4
@@ -612,10 +664,6 @@ one_year_experts:
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/1070878?u=68f78a891c9751dd87571ac712a6309090c4bc01&v=4
url: https://github.com/kiranzo
-- login: sinisaos
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/30960668?v=4
- url: https://github.com/sinisaos
- login: dotmitsu
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/42657211?u=3bccc9a2f386a3f24230ec393080f8904fe2a5b2&v=4
@@ -636,10 +684,6 @@ one_year_experts:
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/532192?v=4
url: https://github.com/skion
-- login: Danstiv
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/50794055?v=4
- url: https://github.com/Danstiv
- login: florentx
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/142113?u=bf10f10080026346b092633c380977b61cee0d9c&v=4
@@ -658,12 +702,8 @@ one_year_experts:
url: https://github.com/purepani
- login: asmaier
count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/3169297?v=4
+ avatarUrl: https://avatars.githubusercontent.com/u/3169297?u=84c83cbdb64104331febe16ae232ecf30952d01d&v=4
url: https://github.com/asmaier
-- login: henrymcl
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/26480299?v=4
- url: https://github.com/henrymcl
- login: davidhuser
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/4357648?u=6ed702f8f6d49a8b2a0ed33cbd8ab59c2d7db7f7&v=4
@@ -680,11 +720,3 @@ one_year_experts:
count: 2
avatarUrl: https://avatars.githubusercontent.com/u/32141163?v=4
url: https://github.com/pythonweb2
-- login: PidgeyBE
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/19860056?u=47b584eb1c1ab45e31c1b474109a962d7e82be49&v=4
- url: https://github.com/PidgeyBE
-- login: KianAnbarestani
- count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/145364424?u=dcc3d8fb4ca07d36fb52a17f38b6650565de40be&v=4
- url: https://github.com/KianAnbarestani
diff --git a/docs/en/data/sponsors.yml b/docs/en/data/sponsors.yml
index ea9eec0de0..e1c9ab34be 100644
--- a/docs/en/data/sponsors.yml
+++ b/docs/en/data/sponsors.yml
@@ -52,6 +52,9 @@ silver:
- url: https://dribia.com/en/
title: Dribia - Data Science within your reach
img: https://fastapi.tiangolo.com/img/sponsors/dribia.png
+ - url: https://talordata.com/?campaignid=oh5dVZ3Zc3YGiAI2&utm_source=fastapi&utm_term=fastapi
+ title: TalorData SERP API - Multi-Engine Search Results Data
+ img: https://fastapi.tiangolo.com/img/sponsors/talordata.png
bronze:
- url: https://www.exoflare.com/open-source/?utm_source=FastAPI&utm_campaign=open_source
title: Biosecurity risk assessments made easy.
diff --git a/docs/en/data/sponsors_badge.yml b/docs/en/data/sponsors_badge.yml
index d648be5fca..d35a4b19f7 100644
--- a/docs/en/data/sponsors_badge.yml
+++ b/docs/en/data/sponsors_badge.yml
@@ -48,3 +48,4 @@ logins:
- subtotal
- requestly
- greptileai
+ - talorelowen
diff --git a/docs/en/data/topic_repos.yml b/docs/en/data/topic_repos.yml
index 9703c7a6bb..b2921b2f34 100644
--- a/docs/en/data/topic_repos.yml
+++ b/docs/en/data/topic_repos.yml
@@ -1,495 +1,495 @@
- name: full-stack-fastapi-template
html_url: https://github.com/fastapi/full-stack-fastapi-template
- stars: 42397
+ stars: 42944
owner_login: fastapi
owner_html_url: https://github.com/fastapi
- name: Hello-Python
html_url: https://github.com/mouredev/Hello-Python
- stars: 34997
+ stars: 35430
owner_login: mouredev
owner_html_url: https://github.com/mouredev
- name: serve
html_url: https://github.com/jina-ai/serve
- stars: 21857
+ stars: 21876
owner_login: jina-ai
owner_html_url: https://github.com/jina-ai
- name: HivisionIDPhotos
html_url: https://github.com/Zeyi-Lin/HivisionIDPhotos
- stars: 20868
+ stars: 21054
owner_login: Zeyi-Lin
owner_html_url: https://github.com/Zeyi-Lin
- name: sqlmodel
html_url: https://github.com/fastapi/sqlmodel
- stars: 17770
+ stars: 17886
owner_login: fastapi
owner_html_url: https://github.com/fastapi
-- name: fastapi-best-practices
- html_url: https://github.com/zhanymkanov/fastapi-best-practices
- stars: 16897
- owner_login: zhanymkanov
- owner_html_url: https://github.com/zhanymkanov
- name: Douyin_TikTok_Download_API
html_url: https://github.com/Evil0ctal/Douyin_TikTok_Download_API
- stars: 16878
+ stars: 17546
owner_login: Evil0ctal
owner_html_url: https://github.com/Evil0ctal
+- name: fastapi-best-practices
+ html_url: https://github.com/zhanymkanov/fastapi-best-practices
+ stars: 17138
+ owner_login: zhanymkanov
+ owner_html_url: https://github.com/zhanymkanov
- name: SurfSense
html_url: https://github.com/MODSetter/SurfSense
- stars: 13614
+ stars: 14045
owner_login: MODSetter
owner_html_url: https://github.com/MODSetter
- name: machine-learning-zoomcamp
html_url: https://github.com/DataTalksClub/machine-learning-zoomcamp
- stars: 12780
+ stars: 13015
owner_login: DataTalksClub
owner_html_url: https://github.com/DataTalksClub
- name: fastapi_mcp
html_url: https://github.com/tadata-org/fastapi_mcp
- stars: 11752
+ stars: 11837
owner_login: tadata-org
owner_html_url: https://github.com/tadata-org
- name: awesome-fastapi
html_url: https://github.com/mjhea0/awesome-fastapi
- stars: 11203
+ stars: 11315
owner_login: mjhea0
owner_html_url: https://github.com/mjhea0
- name: XHS-Downloader
html_url: https://github.com/JoeanAmier/XHS-Downloader
- stars: 10612
+ stars: 11013
owner_login: JoeanAmier
owner_html_url: https://github.com/JoeanAmier
- name: polar
html_url: https://github.com/polarsource/polar
- stars: 9626
+ stars: 9775
owner_login: polarsource
owner_html_url: https://github.com/polarsource
+- name: pycaret
+ html_url: https://github.com/pycaret/pycaret
+ stars: 9753
+ owner_login: pycaret
+ owner_html_url: https://github.com/pycaret
- name: FastUI
html_url: https://github.com/pydantic/FastUI
- stars: 8958
+ stars: 8961
owner_login: pydantic
owner_html_url: https://github.com/pydantic
- name: FileCodeBox
html_url: https://github.com/vastsa/FileCodeBox
- stars: 8191
+ stars: 8241
owner_login: vastsa
owner_html_url: https://github.com/vastsa
- name: nonebot2
html_url: https://github.com/nonebot/nonebot2
- stars: 7456
+ stars: 7488
owner_login: nonebot
owner_html_url: https://github.com/nonebot
- name: hatchet
html_url: https://github.com/hatchet-dev/hatchet
- stars: 6784
+ stars: 7044
owner_login: hatchet-dev
owner_html_url: https://github.com/hatchet-dev
- name: fastapi-users
html_url: https://github.com/fastapi-users/fastapi-users
- stars: 6064
+ stars: 6107
owner_login: fastapi-users
owner_html_url: https://github.com/fastapi-users
- name: serge
html_url: https://github.com/serge-chat/serge
- stars: 5738
+ stars: 5731
owner_login: serge-chat
owner_html_url: https://github.com/serge-chat
- name: Yuxi
html_url: https://github.com/xerrors/Yuxi
- stars: 4761
+ stars: 5063
owner_login: xerrors
owner_html_url: https://github.com/xerrors
- name: Kokoro-FastAPI
html_url: https://github.com/remsky/Kokoro-FastAPI
- stars: 4649
+ stars: 4785
owner_login: remsky
owner_html_url: https://github.com/remsky
- name: strawberry
html_url: https://github.com/strawberry-graphql/strawberry
- stars: 4636
+ stars: 4649
owner_login: strawberry-graphql
owner_html_url: https://github.com/strawberry-graphql
- name: devpush
html_url: https://github.com/hunvreus/devpush
- stars: 4589
+ stars: 4641
owner_login: hunvreus
owner_html_url: https://github.com/hunvreus
- name: poem
html_url: https://github.com/poem-web/poem
- stars: 4375
+ stars: 4387
owner_login: poem-web
owner_html_url: https://github.com/poem-web
- name: dynaconf
html_url: https://github.com/dynaconf/dynaconf
- stars: 4276
+ stars: 4291
owner_login: dynaconf
owner_html_url: https://github.com/dynaconf
- name: chatgpt-web-share
html_url: https://github.com/chatpire/chatgpt-web-share
- stars: 4272
+ stars: 4269
owner_login: chatpire
owner_html_url: https://github.com/chatpire
- name: logfire
html_url: https://github.com/pydantic/logfire
- stars: 4145
+ stars: 4206
owner_login: pydantic
owner_html_url: https://github.com/pydantic
- name: atrilabs-engine
html_url: https://github.com/Atri-Labs/atrilabs-engine
- stars: 4086
+ stars: 4080
owner_login: Atri-Labs
owner_html_url: https://github.com/Atri-Labs
- name: huma
html_url: https://github.com/danielgtaylor/huma
- stars: 3933
+ stars: 4043
owner_login: danielgtaylor
owner_html_url: https://github.com/danielgtaylor
-- name: LitServe
- html_url: https://github.com/Lightning-AI/LitServe
- stars: 3851
- owner_login: Lightning-AI
- owner_html_url: https://github.com/Lightning-AI
- name: datamodel-code-generator
html_url: https://github.com/koxudaxi/datamodel-code-generator
- stars: 3839
+ stars: 3882
owner_login: koxudaxi
owner_html_url: https://github.com/koxudaxi
+- name: LitServe
+ html_url: https://github.com/Lightning-AI/LitServe
+ stars: 3879
+ owner_login: Lightning-AI
+ owner_html_url: https://github.com/Lightning-AI
- name: fastapi-admin
html_url: https://github.com/fastapi-admin/fastapi-admin
- stars: 3745
+ stars: 3759
owner_login: fastapi-admin
owner_html_url: https://github.com/fastapi-admin
+- name: mcp-context-forge
+ html_url: https://github.com/IBM/mcp-context-forge
+ stars: 3644
+ owner_login: IBM
+ owner_html_url: https://github.com/IBM
- name: tracecat
html_url: https://github.com/TracecatHQ/tracecat
- stars: 3542
+ stars: 3564
owner_login: TracecatHQ
owner_html_url: https://github.com/TracecatHQ
- name: farfalle
html_url: https://github.com/rashadphz/farfalle
- stars: 3521
+ stars: 3530
owner_login: rashadphz
owner_html_url: https://github.com/rashadphz
-- name: mcp-context-forge
- html_url: https://github.com/IBM/mcp-context-forge
- stars: 3501
- owner_login: IBM
- owner_html_url: https://github.com/IBM
- name: opyrator
html_url: https://github.com/ml-tooling/opyrator
stars: 3137
owner_login: ml-tooling
owner_html_url: https://github.com/ml-tooling
+- name: honcho
+ html_url: https://github.com/plastic-labs/honcho
+ stars: 3135
+ owner_login: plastic-labs
+ owner_html_url: https://github.com/plastic-labs
- name: docarray
html_url: https://github.com/docarray/docarray
- stars: 3120
+ stars: 3118
owner_login: docarray
owner_html_url: https://github.com/docarray
- name: fastapi-realworld-example-app
html_url: https://github.com/nsidnev/fastapi-realworld-example-app
- stars: 3092
+ stars: 3111
owner_login: nsidnev
owner_html_url: https://github.com/nsidnev
- name: uvicorn-gunicorn-fastapi-docker
html_url: https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker
- stars: 2913
+ stars: 2912
owner_login: tiangolo
owner_html_url: https://github.com/tiangolo
- name: FastAPI-template
html_url: https://github.com/s3rius/FastAPI-template
- stars: 2768
+ stars: 2780
owner_login: s3rius
owner_html_url: https://github.com/s3rius
-- name: best-of-web-python
- html_url: https://github.com/ml-tooling/best-of-web-python
- stars: 2703
- owner_login: ml-tooling
- owner_html_url: https://github.com/ml-tooling
- name: sqladmin
html_url: https://github.com/smithyhq/sqladmin
- stars: 2696
+ stars: 2716
owner_login: smithyhq
owner_html_url: https://github.com/smithyhq
+- name: best-of-web-python
+ html_url: https://github.com/ml-tooling/best-of-web-python
+ stars: 2711
+ owner_login: ml-tooling
+ owner_html_url: https://github.com/ml-tooling
- name: YC-Killer
html_url: https://github.com/sahibzada-allahyar/YC-Killer
- stars: 2675
+ stars: 2626
owner_login: sahibzada-allahyar
owner_html_url: https://github.com/sahibzada-allahyar
- name: fastapi-react
html_url: https://github.com/Buuntu/fastapi-react
- stars: 2579
+ stars: 2581
owner_login: Buuntu
owner_html_url: https://github.com/Buuntu
- name: supabase-py
html_url: https://github.com/supabase/supabase-py
- stars: 2486
+ stars: 2499
owner_login: supabase
owner_html_url: https://github.com/supabase
- name: RasaGPT
html_url: https://github.com/paulpierre/RasaGPT
- stars: 2462
+ stars: 2466
owner_login: paulpierre
owner_html_url: https://github.com/paulpierre
-- name: 30-Days-of-Python
- html_url: https://github.com/codingforentrepreneurs/30-Days-of-Python
- stars: 2450
- owner_login: codingforentrepreneurs
- owner_html_url: https://github.com/codingforentrepreneurs
- name: NoteDiscovery
html_url: https://github.com/gamosoft/NoteDiscovery
- stars: 2400
+ stars: 2465
owner_login: gamosoft
owner_html_url: https://github.com/gamosoft
+- name: 30-Days-of-Python
+ html_url: https://github.com/codingforentrepreneurs/30-Days-of-Python
+ stars: 2459
+ owner_login: codingforentrepreneurs
+ owner_html_url: https://github.com/codingforentrepreneurs
+- name: AIstudioProxyAPI
+ html_url: https://github.com/CJackHwang/AIstudioProxyAPI
+ stars: 2346
+ owner_login: CJackHwang
+ owner_html_url: https://github.com/CJackHwang
- name: nextpy
html_url: https://github.com/dot-agent/nextpy
- stars: 2339
+ stars: 2336
owner_login: dot-agent
owner_html_url: https://github.com/dot-agent
-- name: fastapi-utils
- html_url: https://github.com/fastapiutils/fastapi-utils
- stars: 2308
- owner_login: fastapiutils
- owner_html_url: https://github.com/fastapiutils
- name: langserve
html_url: https://github.com/langchain-ai/langserve
- stars: 2300
+ stars: 2319
owner_login: langchain-ai
owner_html_url: https://github.com/langchain-ai
-- name: solara
- html_url: https://github.com/widgetti/solara
- stars: 2156
- owner_login: widgetti
- owner_html_url: https://github.com/widgetti
-- name: fastapi-best-architecture
- html_url: https://github.com/fastapi-practices/fastapi-best-architecture
- stars: 2148
- owner_login: fastapi-practices
- owner_html_url: https://github.com/fastapi-practices
+- name: fastapi-utils
+ html_url: https://github.com/fastapiutils/fastapi-utils
+ stars: 2306
+ owner_login: fastapiutils
+ owner_html_url: https://github.com/fastapiutils
- name: fastapi-langgraph-agent-production-ready-template
html_url: https://github.com/wassim249/fastapi-langgraph-agent-production-ready-template
- stars: 2103
+ stars: 2218
owner_login: wassim249
owner_html_url: https://github.com/wassim249
-- name: mangum
- html_url: https://github.com/Kludex/mangum
- stars: 2100
- owner_login: Kludex
- owner_html_url: https://github.com/Kludex
+- name: fastapi-best-architecture
+ html_url: https://github.com/fastapi-practices/fastapi-best-architecture
+ stars: 2206
+ owner_login: fastapi-practices
+ owner_html_url: https://github.com/fastapi-practices
+- name: solara
+ html_url: https://github.com/widgetti/solara
+ stars: 2160
+ owner_login: widgetti
+ owner_html_url: https://github.com/widgetti
- name: vue-fastapi-admin
html_url: https://github.com/mizhexiaoxiao/vue-fastapi-admin
- stars: 2059
+ stars: 2108
owner_login: mizhexiaoxiao
owner_html_url: https://github.com/mizhexiaoxiao
-- name: agentkit
- html_url: https://github.com/BCG-X-Official/agentkit
- stars: 1947
- owner_login: BCG-X-Official
- owner_html_url: https://github.com/BCG-X-Official
+- name: mangum
+ html_url: https://github.com/Kludex/mangum
+ stars: 2106
+ owner_login: Kludex
+ owner_html_url: https://github.com/Kludex
- name: slowapi
html_url: https://github.com/laurentS/slowapi
- stars: 1946
+ stars: 1960
owner_login: laurentS
owner_html_url: https://github.com/laurentS
-- name: openapi-python-client
- html_url: https://github.com/openapi-generators/openapi-python-client
- stars: 1930
- owner_login: openapi-generators
- owner_html_url: https://github.com/openapi-generators
- name: xhs_ai_publisher
html_url: https://github.com/BetaStreetOmnis/xhs_ai_publisher
- stars: 1904
+ stars: 1948
owner_login: BetaStreetOmnis
owner_html_url: https://github.com/BetaStreetOmnis
+- name: agentkit
+ html_url: https://github.com/BCG-X-Official/agentkit
+ stars: 1944
+ owner_login: BCG-X-Official
+ owner_html_url: https://github.com/BCG-X-Official
+- name: openapi-python-client
+ html_url: https://github.com/openapi-generators/openapi-python-client
+ stars: 1941
+ owner_login: openapi-generators
+ owner_html_url: https://github.com/openapi-generators
- name: manage-fastapi
html_url: https://github.com/ycd/manage-fastapi
- stars: 1898
+ stars: 1901
owner_login: ycd
owner_html_url: https://github.com/ycd
- name: piccolo
html_url: https://github.com/piccolo-orm/piccolo
- stars: 1876
+ stars: 1896
owner_login: piccolo-orm
owner_html_url: https://github.com/piccolo-orm
- name: FastAPI-boilerplate
html_url: https://github.com/benavlabs/FastAPI-boilerplate
- stars: 1859
+ stars: 1892
owner_login: benavlabs
owner_html_url: https://github.com/benavlabs
- name: fastapi-cache
html_url: https://github.com/long2ice/fastapi-cache
- stars: 1853
+ stars: 1859
owner_login: long2ice
owner_html_url: https://github.com/long2ice
+- name: any-auto-register
+ html_url: https://github.com/lxf746/any-auto-register
+ stars: 1857
+ owner_login: lxf746
+ owner_html_url: https://github.com/lxf746
- name: python-week-2022
html_url: https://github.com/rochacbruno/python-week-2022
- stars: 1809
+ stars: 1810
owner_login: rochacbruno
owner_html_url: https://github.com/rochacbruno
- name: ormar
html_url: https://github.com/ormar-orm/ormar
- stars: 1808
+ stars: 1806
owner_login: ormar-orm
owner_html_url: https://github.com/ormar-orm
- name: termpair
html_url: https://github.com/cs01/termpair
- stars: 1730
+ stars: 1731
owner_login: cs01
owner_html_url: https://github.com/cs01
- name: fastapi-crudrouter
html_url: https://github.com/awtkns/fastapi-crudrouter
- stars: 1683
+ stars: 1687
owner_login: awtkns
owner_html_url: https://github.com/awtkns
-- name: fastapi-pagination
- html_url: https://github.com/uriyyo/fastapi-pagination
- stars: 1638
- owner_login: uriyyo
- owner_html_url: https://github.com/uriyyo
- name: bracket
html_url: https://github.com/evroon/bracket
- stars: 1638
+ stars: 1653
owner_login: evroon
owner_html_url: https://github.com/evroon
+- name: WebRPA
+ html_url: https://github.com/pmh1314520/WebRPA
+ stars: 1653
+ owner_login: pmh1314520
+ owner_html_url: https://github.com/pmh1314520
+- name: fastapi-pagination
+ html_url: https://github.com/uriyyo/fastapi-pagination
+ stars: 1646
+ owner_login: uriyyo
+ owner_html_url: https://github.com/uriyyo
- name: langchain-serve
html_url: https://github.com/jina-ai/langchain-serve
- stars: 1634
+ stars: 1640
owner_login: jina-ai
owner_html_url: https://github.com/jina-ai
+- name: headroom
+ html_url: https://github.com/chopratejas/headroom
+ stars: 1624
+ owner_login: chopratejas
+ owner_html_url: https://github.com/chopratejas
- name: awesome-fastapi-projects
html_url: https://github.com/Kludex/awesome-fastapi-projects
- stars: 1597
+ stars: 1599
owner_login: Kludex
owner_html_url: https://github.com/Kludex
- name: coronavirus-tracker-api
html_url: https://github.com/ExpDev07/coronavirus-tracker-api
- stars: 1568
+ stars: 1567
owner_login: ExpDev07
owner_html_url: https://github.com/ExpDev07
-- name: WebRPA
- html_url: https://github.com/pmh1314520/WebRPA
- stars: 1532
- owner_login: pmh1314520
- owner_html_url: https://github.com/pmh1314520
- name: fastapi-amis-admin
html_url: https://github.com/amisadmin/fastapi-amis-admin
- stars: 1527
+ stars: 1541
owner_login: amisadmin
owner_html_url: https://github.com/amisadmin
- name: fastcrud
html_url: https://github.com/benavlabs/fastcrud
- stars: 1506
+ stars: 1512
owner_login: benavlabs
owner_html_url: https://github.com/benavlabs
+- name: open-wearables
+ html_url: https://github.com/the-momentum/open-wearables
+ stars: 1496
+ owner_login: the-momentum
+ owner_html_url: https://github.com/the-momentum
- name: fastapi-boilerplate
html_url: https://github.com/teamhide/fastapi-boilerplate
- stars: 1482
+ stars: 1486
owner_login: teamhide
owner_html_url: https://github.com/teamhide
-- name: awesome-python-resources
- html_url: https://github.com/DjangoEx/awesome-python-resources
- stars: 1444
- owner_login: DjangoEx
- owner_html_url: https://github.com/DjangoEx
-- name: prometheus-fastapi-instrumentator
- html_url: https://github.com/trallnag/prometheus-fastapi-instrumentator
- stars: 1438
- owner_login: trallnag
- owner_html_url: https://github.com/trallnag
-- name: honcho
- html_url: https://github.com/plastic-labs/honcho
- stars: 1419
- owner_login: plastic-labs
- owner_html_url: https://github.com/plastic-labs
- name: tavily-key-generator
html_url: https://github.com/skernelx/tavily-key-generator
- stars: 1416
+ stars: 1478
owner_login: skernelx
owner_html_url: https://github.com/skernelx
+- name: prometheus-fastapi-instrumentator
+ html_url: https://github.com/trallnag/prometheus-fastapi-instrumentator
+ stars: 1451
+ owner_login: trallnag
+ owner_html_url: https://github.com/trallnag
+- name: awesome-python-resources
+ html_url: https://github.com/DjangoEx/awesome-python-resources
+ stars: 1449
+ owner_login: DjangoEx
+ owner_html_url: https://github.com/DjangoEx
- name: fastapi-tutorial
html_url: https://github.com/liaogx/fastapi-tutorial
- stars: 1384
+ stars: 1399
owner_login: liaogx
owner_html_url: https://github.com/liaogx
- name: fastapi-code-generator
html_url: https://github.com/koxudaxi/fastapi-code-generator
- stars: 1384
+ stars: 1383
owner_login: koxudaxi
owner_html_url: https://github.com/koxudaxi
- name: budgetml
html_url: https://github.com/ebhy/budgetml
- stars: 1346
+ stars: 1345
owner_login: ebhy
owner_html_url: https://github.com/ebhy
-- name: bolt-python
- html_url: https://github.com/slackapi/bolt-python
- stars: 1286
- owner_login: slackapi
- owner_html_url: https://github.com/slackapi
- name: aktools
html_url: https://github.com/akfamily/aktools
- stars: 1283
+ stars: 1334
owner_login: akfamily
owner_html_url: https://github.com/akfamily
+- name: RuoYi-Vue3-FastAPI
+ html_url: https://github.com/insistence/RuoYi-Vue3-FastAPI
+ stars: 1302
+ owner_login: insistence
+ owner_html_url: https://github.com/insistence
+- name: bolt-python
+ html_url: https://github.com/slackapi/bolt-python
+ stars: 1296
+ owner_login: slackapi
+ owner_html_url: https://github.com/slackapi
- name: bedrock-chat
html_url: https://github.com/aws-samples/bedrock-chat
- stars: 1282
+ stars: 1288
owner_login: aws-samples
owner_html_url: https://github.com/aws-samples
-- name: fastapi-scaff
- html_url: https://github.com/atpuxiner/fastapi-scaff
- stars: 1275
- owner_login: atpuxiner
- owner_html_url: https://github.com/atpuxiner
-- name: fastapi-alembic-sqlmodel-async
- html_url: https://github.com/vargasjona/fastapi-alembic-sqlmodel-async
- stars: 1267
- owner_login: vargasjona
- owner_html_url: https://github.com/vargasjona
- name: restish
html_url: https://github.com/rest-sh/restish
- stars: 1258
+ stars: 1279
owner_login: rest-sh
owner_html_url: https://github.com/rest-sh
-- name: RuoYi-Vue3-FastAPI
- html_url: https://github.com/insistence/RuoYi-Vue3-FastAPI
- stars: 1248
- owner_login: insistence
- owner_html_url: https://github.com/insistence
+- name: fastapi-alembic-sqlmodel-async
+ html_url: https://github.com/vargasjona/fastapi-alembic-sqlmodel-async
+ stars: 1270
+ owner_login: vargasjona
+ owner_html_url: https://github.com/vargasjona
- name: fastapi_production_template
html_url: https://github.com/zhanymkanov/fastapi_production_template
- stars: 1240
+ stars: 1243
owner_login: zhanymkanov
owner_html_url: https://github.com/zhanymkanov
-- name: langchain-extract
- html_url: https://github.com/langchain-ai/langchain-extract
- stars: 1193
- owner_login: langchain-ai
- owner_html_url: https://github.com/langchain-ai
-- name: open-wearables
- html_url: https://github.com/the-momentum/open-wearables
- stars: 1170
- owner_login: the-momentum
- owner_html_url: https://github.com/the-momentum
-- name: odmantic
- html_url: https://github.com/art049/odmantic
- stars: 1168
- owner_login: art049
- owner_html_url: https://github.com/art049
-- name: authx
- html_url: https://github.com/yezz123/authx
- stars: 1160
- owner_login: yezz123
- owner_html_url: https://github.com/yezz123
-- name: FileSync
- html_url: https://github.com/polius/FileSync
- stars: 1153
- owner_login: polius
- owner_html_url: https://github.com/polius
-- name: enterprise-deep-research
- html_url: https://github.com/SalesforceAIResearch/enterprise-deep-research
- stars: 1150
- owner_login: SalesforceAIResearch
- owner_html_url: https://github.com/SalesforceAIResearch
- name: yubal
html_url: https://github.com/guillevc/yubal
- stars: 1135
+ stars: 1203
owner_login: guillevc
owner_html_url: https://github.com/guillevc
+- name: langchain-extract
+ html_url: https://github.com/langchain-ai/langchain-extract
+ stars: 1196
+ owner_login: langchain-ai
+ owner_html_url: https://github.com/langchain-ai
+- name: Chatterbox-TTS-Server
+ html_url: https://github.com/devnen/Chatterbox-TTS-Server
+ stars: 1194
+ owner_login: devnen
+ owner_html_url: https://github.com/devnen
diff --git a/docs/en/data/translation_reviewers.yml b/docs/en/data/translation_reviewers.yml
index 480bf72f38..4216d0d07a 100644
--- a/docs/en/data/translation_reviewers.yml
+++ b/docs/en/data/translation_reviewers.yml
@@ -65,7 +65,7 @@ nilslindemann:
url: https://github.com/nilslindemann
YuriiMotov:
login: YuriiMotov
- count: 66
+ count: 67
avatarUrl: https://avatars.githubusercontent.com/u/109919500?u=bc48be95c429989224786106b027f3c5e40cc354&v=4
url: https://github.com/YuriiMotov
cassiobotaro:
@@ -301,7 +301,7 @@ delhi09:
rogerbrinkmann:
login: rogerbrinkmann
count: 20
- avatarUrl: https://avatars.githubusercontent.com/u/5690226?v=4
+ avatarUrl: https://avatars.githubusercontent.com/u/5690226?u=a1fe0aee927d33ce9db8c455eabc40c1cdf2bb65&v=4
url: https://github.com/rogerbrinkmann
DevDae:
login: DevDae
@@ -471,7 +471,7 @@ NastasiaSaby:
oandersonmagalhaes:
login: oandersonmagalhaes
count: 12
- avatarUrl: https://avatars.githubusercontent.com/u/83456692?v=4
+ avatarUrl: https://avatars.githubusercontent.com/u/83456692?u=daf5f302a59b950efc6d21129314af207e35441f&v=4
url: https://github.com/oandersonmagalhaes
mkdir700:
login: mkdir700
@@ -906,7 +906,7 @@ bankofsardine:
Rekl0w:
login: Rekl0w
count: 6
- avatarUrl: https://avatars.githubusercontent.com/u/91488737?u=3b62b04a3e6699eab9b1eea4e88c09a39b753a17&v=4
+ avatarUrl: https://avatars.githubusercontent.com/u/91488737?u=7d2b7791665e04a12695150776a1d516a6ea7d21&v=4
url: https://github.com/Rekl0w
rsip22:
login: rsip22
@@ -1276,7 +1276,7 @@ rafsaf:
frnsimoes:
login: frnsimoes
count: 3
- avatarUrl: https://avatars.githubusercontent.com/u/66239468?u=98fb2a38bcac765ea9651af8a0ab8f37df86570d&v=4
+ avatarUrl: https://avatars.githubusercontent.com/u/66239468?u=bd788dabd4d9321455db8b8751c1a2676783f50f&v=4
url: https://github.com/frnsimoes
lieryan:
login: lieryan
@@ -1606,7 +1606,7 @@ ayr-ton:
Kadermiyanyedi:
login: Kadermiyanyedi
count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/48386782?u=e34f31bf50a8ed8d37fbfa4f301b0c190b1b4b86&v=4
+ avatarUrl: https://avatars.githubusercontent.com/u/48386782?u=08c0f1594c5baf28b6fab7520a848cb9c3806c8e&v=4
url: https://github.com/Kadermiyanyedi
raphaelauv:
login: raphaelauv
diff --git a/docs/en/data/translators.yml b/docs/en/data/translators.yml
index 395025f443..5f4208fe28 100644
--- a/docs/en/data/translators.yml
+++ b/docs/en/data/translators.yml
@@ -386,7 +386,7 @@ dukkee:
oandersonmagalhaes:
login: oandersonmagalhaes
count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/83456692?v=4
+ avatarUrl: https://avatars.githubusercontent.com/u/83456692?u=daf5f302a59b950efc6d21129314af207e35441f&v=4
url: https://github.com/oandersonmagalhaes
leandrodesouzadev:
login: leandrodesouzadev
@@ -416,7 +416,7 @@ ayr-ton:
Kadermiyanyedi:
login: Kadermiyanyedi
count: 2
- avatarUrl: https://avatars.githubusercontent.com/u/48386782?u=e34f31bf50a8ed8d37fbfa4f301b0c190b1b4b86&v=4
+ avatarUrl: https://avatars.githubusercontent.com/u/48386782?u=08c0f1594c5baf28b6fab7520a848cb9c3806c8e&v=4
url: https://github.com/Kadermiyanyedi
KdHyeon0661:
login: KdHyeon0661
diff --git a/docs/en/docs/_llm-test.md b/docs/en/docs/_llm-test.md
index cc9cb48fba..2b548064d3 100644
--- a/docs/en/docs/_llm-test.md
+++ b/docs/en/docs/_llm-test.md
@@ -124,10 +124,6 @@ See section `### Content of code blocks` in the general prompt in `scripts/trans
//// tab | Test
-/// info
-Some text
-///
-
/// note
Some text
///
@@ -136,10 +132,6 @@ Some text
Some text
///
-/// check
-Some text
-///
-
/// tip
Some text
///
diff --git a/docs/en/docs/advanced/additional-responses.md b/docs/en/docs/advanced/additional-responses.md
index 577c06daa5..494143b07a 100644
--- a/docs/en/docs/advanced/additional-responses.md
+++ b/docs/en/docs/advanced/additional-responses.md
@@ -34,7 +34,7 @@ Keep in mind that you have to return the `JSONResponse` directly.
///
-/// info
+/// note
The `model` key is not part of OpenAPI.
@@ -183,7 +183,7 @@ Notice that you have to return the image using a `FileResponse` directly.
///
-/// info
+/// note
Unless you specify a different media type explicitly in your `responses` parameter, FastAPI will assume the response has the same media type as the main response class (default `application/json`).
diff --git a/docs/en/docs/advanced/advanced-dependencies.md b/docs/en/docs/advanced/advanced-dependencies.md
index 6c940f5a9b..59ab62bf00 100644
--- a/docs/en/docs/advanced/advanced-dependencies.md
+++ b/docs/en/docs/advanced/advanced-dependencies.md
@@ -98,7 +98,7 @@ For example, if you had a database session in a dependency with `yield`, the `St
This behavior was reverted in 0.118.0, to make the exit code after `yield` be executed after the response is sent.
-/// info
+/// note
As you will see below, this is very similar to the behavior before version 0.106.0, but with several improvements and bug fixes for corner cases.
diff --git a/docs/en/docs/advanced/custom-response.md b/docs/en/docs/advanced/custom-response.md
index 0dcb575176..016868fe70 100644
--- a/docs/en/docs/advanced/custom-response.md
+++ b/docs/en/docs/advanced/custom-response.md
@@ -41,7 +41,7 @@ To return a response with HTML directly from **FastAPI**, use `HTMLResponse`.
{* ../../docs_src/custom_response/tutorial002_py310.py hl[2,7] *}
-/// info
+/// note
The parameter `response_class` will also be used to define the "media type" of the response.
@@ -65,7 +65,7 @@ A `Response` returned directly by your *path operation function* won't be docume
///
-/// info
+/// note
Of course, the actual `Content-Type` header, status code, etc, will come from the `Response` object you returned.
diff --git a/docs/en/docs/advanced/dataclasses.md b/docs/en/docs/advanced/dataclasses.md
index 52fe4ae7c8..292dc3fba9 100644
--- a/docs/en/docs/advanced/dataclasses.md
+++ b/docs/en/docs/advanced/dataclasses.md
@@ -18,7 +18,7 @@ And of course, it supports the same:
This works the same way as with Pydantic models. And it is actually achieved in the same way underneath, using Pydantic.
-/// info
+/// note
Keep in mind that dataclasses can't do everything Pydantic models can do.
diff --git a/docs/en/docs/advanced/events.md b/docs/en/docs/advanced/events.md
index 820f06d55b..3e65854e7b 100644
--- a/docs/en/docs/advanced/events.md
+++ b/docs/en/docs/advanced/events.md
@@ -120,7 +120,7 @@ To add a function that should be run when the application is shutting down, decl
Here, the `shutdown` event handler function will write a text line `"Application shutdown"` to a file `log.txt`.
-/// info
+/// note
In the `open()` function, the `mode="a"` means "append", so, the line will be added after whatever is on that file, without overwriting the previous contents.
@@ -152,7 +152,7 @@ Just a technical detail for the curious nerds. 🤓
Underneath, in the ASGI technical specification, this is part of the [Lifespan Protocol](https://asgi.readthedocs.io/en/latest/specs/lifespan.html), and it defines events called `startup` and `shutdown`.
-/// info
+/// note
You can read more about the Starlette `lifespan` handlers in [Starlette's Lifespan' docs](https://www.starlette.dev/lifespan/).
diff --git a/docs/en/docs/advanced/openapi-webhooks.md b/docs/en/docs/advanced/openapi-webhooks.md
index 3da42819a6..abcbe8ce2e 100644
--- a/docs/en/docs/advanced/openapi-webhooks.md
+++ b/docs/en/docs/advanced/openapi-webhooks.md
@@ -22,7 +22,7 @@ With **FastAPI**, using OpenAPI, you can define the names of these webhooks, the
This can make it a lot easier for your users to **implement their APIs** to receive your **webhook** requests, they might even be able to autogenerate some of their own API code.
-/// info
+/// note
Webhooks are available in OpenAPI 3.1.0 and above, supported by FastAPI `0.99.0` and above.
@@ -36,7 +36,7 @@ When you create a **FastAPI** application, there is a `webhooks` attribute that
The webhooks that you define will end up in the **OpenAPI** schema and the automatic **docs UI**.
-/// info
+/// note
The `app.webhooks` object is actually just an `APIRouter`, the same type you would use when structuring your app with multiple files.
diff --git a/docs/en/docs/advanced/response-directly.md b/docs/en/docs/advanced/response-directly.md
index c9d18649fa..9dd50a62da 100644
--- a/docs/en/docs/advanced/response-directly.md
+++ b/docs/en/docs/advanced/response-directly.md
@@ -18,7 +18,7 @@ You will normally have much better performance using a [Response Model](../tutor
You can return a `Response` or any sub-class of it.
-/// info
+/// note
`JSONResponse` itself is a sub-class of `Response`.
diff --git a/docs/en/docs/advanced/security/oauth2-scopes.md b/docs/en/docs/advanced/security/oauth2-scopes.md
index 459646bbd9..92b604757b 100644
--- a/docs/en/docs/advanced/security/oauth2-scopes.md
+++ b/docs/en/docs/advanced/security/oauth2-scopes.md
@@ -46,7 +46,7 @@ They are normally used to declare specific security permissions, for example:
* `instagram_basic` is used by Facebook / Instagram.
* `https://www.googleapis.com/auth/drive` is used by Google.
-/// info
+/// note
In OAuth2 a "scope" is just a string that declares a specific permission required.
@@ -126,7 +126,7 @@ We are doing it here to demonstrate how **FastAPI** handles scopes declared at d
{* ../../docs_src/security/tutorial005_an_py310.py hl[5,141,172] *}
-/// info | Technical Details
+/// note | Technical Details
`Security` is actually a subclass of `Depends`, and it has just one extra parameter that we'll see later.
diff --git a/docs/en/docs/advanced/stream-data.md b/docs/en/docs/advanced/stream-data.md
index 4af12fa316..3e7c89a934 100644
--- a/docs/en/docs/advanced/stream-data.md
+++ b/docs/en/docs/advanced/stream-data.md
@@ -4,7 +4,7 @@ If you want to stream data that can be structured as JSON, you should [Stream JS
But if you want to **stream pure binary data** or strings, here's how you can do it.
-/// info
+/// note
Added in FastAPI 0.134.0.
@@ -90,7 +90,7 @@ For example, they don't have an `await file.read()`, or `async for chunk in file
And in many cases, reading them would be a blocking operation (that could block the event loop), because they are read from disk or from the network.
-/// info
+/// note
The example above is actually an exception, because the `io.BytesIO` object is already in memory, so reading it won't block anything.
diff --git a/docs/en/docs/advanced/strict-content-type.md b/docs/en/docs/advanced/strict-content-type.md
index 54c099410c..a0d9a14238 100644
--- a/docs/en/docs/advanced/strict-content-type.md
+++ b/docs/en/docs/advanced/strict-content-type.md
@@ -81,7 +81,7 @@ If you need to support clients that don't send a `Content-Type` header, you can
With this setting, requests without a `Content-Type` header will have their body parsed as JSON, which is the same behavior as older versions of FastAPI.
-/// info
+/// note
This behavior and configuration was added in FastAPI 0.132.0.
diff --git a/docs/en/docs/advanced/websockets.md b/docs/en/docs/advanced/websockets.md
index 50c5e89a43..6f4603e6ac 100644
--- a/docs/en/docs/advanced/websockets.md
+++ b/docs/en/docs/advanced/websockets.md
@@ -111,7 +111,7 @@ They work the same way as for other FastAPI endpoints/*path operations*:
{* ../../docs_src/websockets_/tutorial002_an_py310.py hl[68:69,82] *}
-/// info
+/// note
As this is a WebSocket it doesn't really make sense to raise an `HTTPException`, instead we raise a `WebSocketException`.
diff --git a/docs/en/docs/advanced/wsgi.md b/docs/en/docs/advanced/wsgi.md
index 44807b7238..39a492eb6e 100644
--- a/docs/en/docs/advanced/wsgi.md
+++ b/docs/en/docs/advanced/wsgi.md
@@ -6,7 +6,7 @@ For that, you can use the `WSGIMiddleware` and use it to wrap your WSGI applicat
## Using `WSGIMiddleware` { #using-wsgimiddleware }
-/// info
+/// note
This requires installing `a2wsgi` for example with `pip install a2wsgi`.
diff --git a/docs/en/docs/alternatives.md b/docs/en/docs/alternatives.md
index bfaa7aa132..0e7dc85716 100644
--- a/docs/en/docs/alternatives.md
+++ b/docs/en/docs/alternatives.md
@@ -36,7 +36,7 @@ Django REST Framework was created by Tom Christie. The same creator of Starlette
///
-/// check | Inspired **FastAPI** to
+/// tip | Inspired **FastAPI** to
Have an automatic API documentation web user interface.
@@ -56,7 +56,7 @@ This decoupling of parts, and being a "microframework" that could be extended to
Given the simplicity of Flask, it seemed like a good match for building APIs. The next thing to find was a "Django REST Framework" for Flask.
-/// check | Inspired **FastAPI** to
+/// tip | Inspired **FastAPI** to
Be a micro-framework. Making it easy to mix and match the tools and parts needed.
@@ -98,7 +98,7 @@ def read_url():
See the similarities in `requests.get(...)` and `@app.get(...)`.
-/// check | Inspired **FastAPI** to
+/// tip | Inspired **FastAPI** to
* Have a simple and intuitive API.
* Use HTTP method names (operations) directly, in a straightforward and intuitive way.
@@ -118,7 +118,7 @@ At some point, Swagger was given to the Linux Foundation, to be renamed OpenAPI.
That's why when talking about version 2.0 it's common to say "Swagger", and for version 3+ "OpenAPI".
-/// check | Inspired **FastAPI** to
+/// tip | Inspired **FastAPI** to
Adopt and use an open standard for API specifications, instead of a custom schema.
@@ -147,7 +147,7 @@ These features are what Marshmallow was built to provide. It is a great library,
But it was created before there existed Python type hints. So, to define every schema you need to use specific utils and classes provided by Marshmallow.
-/// check | Inspired **FastAPI** to
+/// tip | Inspired **FastAPI** to
Use code to define "schemas" that provide data types and validation, automatically.
@@ -163,13 +163,13 @@ It uses Marshmallow underneath to do the data validation. And it was created by
It's a great tool and I have used it a lot too, before having **FastAPI**.
-/// info
+/// note
Webargs was created by the same Marshmallow developers.
///
-/// check | Inspired **FastAPI** to
+/// tip | Inspired **FastAPI** to
Have automatic validation of incoming request data.
@@ -193,13 +193,13 @@ But then, we have again the problem of having a micro-syntax, inside of a Python
The editor can't help much with that. And if we modify parameters or Marshmallow schemas and forget to also modify that YAML docstring, the generated schema would be obsolete.
-/// info
+/// note
APISpec was created by the same Marshmallow developers.
///
-/// check | Inspired **FastAPI** to
+/// tip | Inspired **FastAPI** to
Support the open standard for APIs, OpenAPI.
@@ -225,13 +225,13 @@ Using it led to the creation of several Flask full-stack generators. These are t
And these same full-stack generators were the base of the [**FastAPI** Project Generators](project-generation.md).
-/// info
+/// note
Flask-apispec was created by the same Marshmallow developers.
///
-/// check | Inspired **FastAPI** to
+/// tip | Inspired **FastAPI** to
Generate the OpenAPI schema automatically, from the same code that defines serialization and validation.
@@ -251,7 +251,7 @@ But as TypeScript data is not preserved after compilation to JavaScript, it cann
It can't handle nested models very well. So, if the JSON body in the request is a JSON object that has inner fields that in turn are nested JSON objects, it cannot be properly documented and validated.
-/// check | Inspired **FastAPI** to
+/// tip | Inspired **FastAPI** to
Use Python types to have great editor support.
@@ -271,7 +271,7 @@ It clearly inspired Uvicorn and Starlette, that are currently faster than Sanic
///
-/// check | Inspired **FastAPI** to
+/// tip | Inspired **FastAPI** to
Find a way to have a crazy performance.
@@ -287,7 +287,7 @@ It is designed to have functions that receive two parameters, one "request" and
So, data validation, serialization, and documentation, have to be done in code, not automatically. Or they have to be implemented as a framework on top of Falcon, like Hug. This same distinction happens in other frameworks that are inspired by Falcon's design, of having one request object and one response object as parameters.
-/// check | Inspired **FastAPI** to
+/// tip | Inspired **FastAPI** to
Find ways to get great performance.
@@ -313,7 +313,7 @@ The dependency injection system requires pre-registration of the dependencies an
Routes are declared in a single place, using functions declared in other places (instead of using decorators that can be placed right on top of the function that handles the endpoint). This is closer to how Django does it than to how Flask (and Starlette) does it. It separates in the code things that are relatively tightly coupled.
-/// check | Inspired **FastAPI** to
+/// tip | Inspired **FastAPI** to
Define extra validations for data types using the "default" value of model attributes. This improves editor support, and it was not available in Pydantic before.
@@ -335,13 +335,13 @@ It has an interesting, uncommon feature: using the same framework, it's possible
As it is based on the previous standard for synchronous Python web frameworks (WSGI), it can't handle Websockets and other things, although it still has high performance too.
-/// info
+/// note
Hug was created by Timothy Crosley, the same creator of [`isort`](https://github.com/timothycrosley/isort), a great tool to automatically sort imports in Python files.
///
-/// check | Ideas inspiring **FastAPI**
+/// tip | Ideas inspiring **FastAPI**
Hug inspired parts of APIStar, and was one of the tools I found most promising, alongside APIStar.
@@ -375,7 +375,7 @@ It was no longer an API web framework, as the creator needed to focus on Starlet
Now APIStar is a set of tools to validate OpenAPI specifications, not a web framework.
-/// info
+/// note
APIStar was created by Tom Christie. The same guy that created:
@@ -385,7 +385,7 @@ APIStar was created by Tom Christie. The same guy that created:
///
-/// check | Inspired **FastAPI** to
+/// tip | Inspired **FastAPI** to
Exist.
@@ -409,7 +409,7 @@ That makes it extremely intuitive.
It is comparable to Marshmallow. Although it's faster than Marshmallow in benchmarks. And as it is based on the same Python type hints, the editor support is great.
-/// check | **FastAPI** uses it to
+/// tip | **FastAPI** uses it to
Handle all the data validation, data serialization and automatic model documentation (based on JSON Schema).
@@ -452,7 +452,7 @@ Nevertheless, it is already being used as a "standard" by several tools. This gr
///
-/// check | **FastAPI** uses it to
+/// tip | **FastAPI** uses it to
Handle all the core web parts. Adding features on top.
@@ -470,7 +470,7 @@ It is not a web framework, but a server. For example, it doesn't provide tools f
It is the recommended server for Starlette and **FastAPI**.
-/// check | **FastAPI** recommends it as
+/// tip | **FastAPI** recommends it as
The main web server to run **FastAPI** applications.
diff --git a/docs/en/docs/async.md b/docs/en/docs/async.md
index 8d445ace1b..1ad9960342 100644
--- a/docs/en/docs/async.md
+++ b/docs/en/docs/async.md
@@ -139,7 +139,7 @@ You and your crush eat the burgers and have a nice time. ✨
-/// info
+/// note
Beautiful illustrations by [Ketrina Thompson](https://www.instagram.com/ketrinadrawsalot). 🎨
@@ -205,7 +205,7 @@ You just eat them, and you are done. ⏹
There was not much talk or flirting as most of the time was spent waiting 🕙 in front of the counter. 😞
-/// info
+/// note
Beautiful illustrations by [Ketrina Thompson](https://www.instagram.com/ketrinadrawsalot). 🎨
diff --git a/docs/en/docs/css/custom.css b/docs/en/docs/css/custom.css
index bbfd49b55e..147181c489 100644
--- a/docs/en/docs/css/custom.css
+++ b/docs/en/docs/css/custom.css
@@ -264,3 +264,189 @@ Inspired by Termynal's CSS tricks with modifications
border-bottom: .05rem dotted var(--md-default-fg-color--light);
cursor: help;
}
+
+/* Opinions: interactive logo tabs */
+.fastapi-opinions {
+ margin: 1.5rem 0 2rem;
+}
+.fastapi-opinions__tabs {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 0.25rem;
+ margin-bottom: 1.5rem;
+ border-bottom: 1px solid var(--md-default-fg-color--lightest);
+}
+.fastapi-opinions__tab {
+ position: relative;
+ appearance: none;
+ background: none;
+ border: 0;
+ padding: 0.625rem 0.5rem;
+ margin: 0;
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: inherit;
+ font: inherit;
+ min-height: 40px;
+ min-width: 0;
+}
+.fastapi-opinions__tab::after {
+ content: "";
+ position: absolute;
+ left: 50%;
+ right: 50%;
+ bottom: -1px;
+ height: 2px;
+ background-color: var(--md-primary-fg-color);
+ opacity: 0;
+ transition: left 0.2s ease, right 0.2s ease, opacity 0.2s ease;
+}
+.fastapi-opinions__tab[aria-selected="true"]::after {
+ left: 12%;
+ right: 12%;
+ opacity: 1;
+}
+.fastapi-opinions__tab:focus-visible {
+ outline: 2px solid var(--md-primary-fg-color);
+ outline-offset: 2px;
+ border-radius: 4px;
+}
+.fastapi-opinions__mark {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 22px;
+ max-width: 100%;
+ filter: grayscale(1);
+ opacity: 0.5;
+ transition: filter 0.2s, opacity 0.2s;
+}
+.fastapi-opinions__mark img {
+ height: 100%;
+ width: auto;
+ max-width: 100%;
+ object-fit: contain;
+ display: block;
+}
+.fastapi-opinions__tab:hover .fastapi-opinions__mark {
+ filter: grayscale(0.3);
+ opacity: 0.85;
+}
+.fastapi-opinions__tab[aria-selected="true"] .fastapi-opinions__mark {
+ filter: grayscale(0);
+ opacity: 1;
+}
+
+/* Dark mode: brighten dark wordmarks so they read on slate */
+[data-md-color-scheme="slate"] .fastapi-opinions__mark {
+ filter: grayscale(1) invert(0.85);
+}
+[data-md-color-scheme="slate"] .fastapi-opinions__tab:hover .fastapi-opinions__mark {
+ filter: grayscale(0.3) invert(0.4);
+}
+[data-md-color-scheme="slate"] .fastapi-opinions__tab[aria-selected="true"] .fastapi-opinions__mark {
+ filter: none;
+}
+
+.fastapi-opinions__panel {
+ position: relative;
+ padding: 0.5rem 1rem 0.5rem 3rem;
+}
+.fastapi-opinions__panel::before {
+ content: "\201C";
+ position: absolute;
+ top: -0.75rem;
+ left: 0.25rem;
+ font-family: Georgia, "Times New Roman", serif;
+ font-size: 4rem;
+ line-height: 1;
+ color: var(--md-primary-fg-color);
+ opacity: 0.18;
+ pointer-events: none;
+}
+.md-typeset blockquote.fastapi-opinions__quote {
+ margin: 0;
+ font-size: 1rem;
+ font-style: italic;
+ line-height: 1.65;
+ color: var(--md-default-fg-color);
+ border-left: 0;
+ padding-left: 0;
+}
+.fastapi-opinions__quote strong { font-style: normal; }
+.fastapi-opinions__attr {
+ margin-top: 0.875rem;
+ font-size: 0.8rem;
+ color: var(--md-default-fg-color--light);
+}
+.fastapi-opinions__attr strong { color: var(--md-default-fg-color); }
+.fastapi-opinions__attr a {
+ color: var(--md-primary-fg-color);
+ text-decoration: none;
+ font-size: 0.75rem;
+ margin-left: 0.25rem;
+}
+.fastapi-opinions__attr a:hover { text-decoration: underline; }
+
+@media (prefers-reduced-motion: reduce) {
+ .fastapi-opinions__tab::after { transition: none; }
+}
+
+@media (max-width: 600px) {
+ .fastapi-opinions__tabs { gap: 0.125rem; }
+ .fastapi-opinions__mark { height: 18px; }
+ .fastapi-opinions__panel { padding-left: 2.25rem; }
+ .fastapi-opinions__panel::before { font-size: 3rem; }
+}
+
+.fastapi-sponsors {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: center;
+ align-items: center;
+ gap: 1rem 1.25rem;
+ margin: 1rem 0 2rem;
+}
+
+.fastapi-sponsors__card {
+ transition: transform 0.15s ease;
+}
+
+.fastapi-sponsors__card:hover {
+ transform: translateY(-1px);
+}
+
+.fastapi-sponsors__card--keystone {
+ width: 100%;
+ max-width: 560px;
+}
+
+.fastapi-sponsors__banner {
+ display: block;
+ border-radius: 12px;
+}
+
+.fastapi-sponsors__card--keystone .fastapi-sponsors__banner { width: 100%; }
+.fastapi-sponsors__card--gold .fastapi-sponsors__banner { height: 80px; }
+.fastapi-sponsors__card--silver .fastapi-sponsors__banner { height: 60px; }
+
+@media (max-width: 600px) {
+ .fastapi-sponsors__card--gold .fastapi-sponsors__banner { height: 64px; }
+ .fastapi-sponsors__card--silver .fastapi-sponsors__banner { height: 50px; }
+}
+
+.fastapi-feature-banner {
+ display: block;
+ max-width: 680px;
+ margin: 1rem auto 1.5rem;
+}
+.fastapi-feature-banner img {
+ display: block;
+ width: 100%;
+ border-radius: 12px;
+}
+
+/* Hidden in MkDocs; rendered on GitHub (which doesn't load this stylesheet) */
+.only-github { display: none; }
diff --git a/docs/en/docs/deployment/docker.md b/docs/en/docs/deployment/docker.md
index ce7d0f1c7b..b021ef1b6a 100644
--- a/docs/en/docs/deployment/docker.md
+++ b/docs/en/docs/deployment/docker.md
@@ -132,7 +132,7 @@ Successfully installed fastapi pydantic
-/// info
+/// note
There are other formats and tools to define and install package dependencies.
@@ -556,7 +556,7 @@ If you are using containers (e.g. Docker, Kubernetes), then there are two main a
If you have **multiple containers**, probably each one running a **single process** (for example, in a **Kubernetes** cluster), then you would probably want to have a **separate container** doing the work of the **previous steps** in a single container, running a single process, **before** running the replicated worker containers.
-/// info
+/// note
If you are using Kubernetes, this would probably be an [Init Container](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/).
diff --git a/docs/en/docs/deployment/server-workers.md b/docs/en/docs/deployment/server-workers.md
index 4f292224cf..fb0741acb2 100644
--- a/docs/en/docs/deployment/server-workers.md
+++ b/docs/en/docs/deployment/server-workers.md
@@ -17,7 +17,7 @@ As you saw in the previous chapter about [Deployment Concepts](concepts.md), the
Here I'll show you how to use **Uvicorn** with **worker processes** using the `fastapi` command or the `uvicorn` command directly.
-/// info
+/// note
If you are using containers, for example with Docker or Kubernetes, I'll tell you more about that in the next chapter: [FastAPI in Containers - Docker](docker.md).
diff --git a/docs/en/docs/external-links.md b/docs/en/docs/external-links.md
index 80485fd30f..e92c881f42 100644
--- a/docs/en/docs/external-links.md
+++ b/docs/en/docs/external-links.md
@@ -6,7 +6,7 @@ There are many posts, articles, tools, and projects, related to **FastAPI**.
You could easily use a search engine or video platform to find many resources related to FastAPI.
-/// info
+/// note
Before, this page used to list links to external articles.
diff --git a/docs/en/docs/features.md b/docs/en/docs/features.md
index eee11cd1ea..a1a271d288 100644
--- a/docs/en/docs/features.md
+++ b/docs/en/docs/features.md
@@ -63,7 +63,7 @@ second_user_data = {
my_second_user: User = User(**second_user_data)
```
-/// info
+/// note
`**second_user_data` means:
diff --git a/docs/en/docs/help-fastapi.md b/docs/en/docs/help-fastapi.md
index ab2ded7215..92ff0f2e02 100644
--- a/docs/en/docs/help-fastapi.md
+++ b/docs/en/docs/help-fastapi.md
@@ -170,7 +170,7 @@ And if there's any other style or consistency need, I'll ask directly for that,
* Then **comment** saying that you did that, that's how I will know you really checked it.
-/// info
+/// note
Unfortunately, I can't simply trust PRs that just have several approvals.
@@ -210,6 +210,9 @@ You can [contribute](contributing.md) to the source code with Pull Requests, for
* Make sure to add tests.
* Make sure to add documentation if it's relevant.
+Note that PRs from non-team members are not allowed to modify `pyproject.toml` or `uv.lock`, to prevent supply chain risk.
+If you would like to add a new dependency, create a new [Discussion](https://github.com/fastapi/fastapi/discussions/categories/questions) to explain why.
+
## Help Maintain FastAPI { #help-maintain-fastapi }
Help me maintain **FastAPI**! 🤓
diff --git a/docs/en/docs/how-to/extending-openapi.md b/docs/en/docs/how-to/extending-openapi.md
index c110a444f1..65f5844383 100644
--- a/docs/en/docs/how-to/extending-openapi.md
+++ b/docs/en/docs/how-to/extending-openapi.md
@@ -27,7 +27,7 @@ And that function `get_openapi()` receives as parameters:
* `description`: The description of your API, this can include markdown and will be shown in the docs.
* `routes`: A list of routes, these are each of the registered *path operations*. They are taken from `app.routes`.
-/// info
+/// note
The parameter `summary` is available in OpenAPI 3.1.0 and above, supported by FastAPI 0.99.0 and above.
diff --git a/docs/en/docs/how-to/separate-openapi-schemas.md b/docs/en/docs/how-to/separate-openapi-schemas.md
index d790c600bb..4eb684dc90 100644
--- a/docs/en/docs/how-to/separate-openapi-schemas.md
+++ b/docs/en/docs/how-to/separate-openapi-schemas.md
@@ -85,7 +85,7 @@ Probably the main use case for this is if you already have some autogenerated cl
In that case, you can disable this feature in **FastAPI**, with the parameter `separate_input_output_schemas=False`.
-/// info
+/// note
Support for `separate_input_output_schemas` was added in FastAPI `0.102.0`. 🤓
diff --git a/docs/en/docs/img/fastapi-conf.jpeg b/docs/en/docs/img/fastapi-conf.jpeg
new file mode 100644
index 0000000000..14e77b997f
Binary files /dev/null and b/docs/en/docs/img/fastapi-conf.jpeg differ
diff --git a/docs/en/docs/img/logos/cisco.svg b/docs/en/docs/img/logos/cisco.svg
new file mode 100644
index 0000000000..b1f6ae27b1
--- /dev/null
+++ b/docs/en/docs/img/logos/cisco.svg
@@ -0,0 +1,35 @@
+
+
diff --git a/docs/en/docs/img/logos/microsoft.svg b/docs/en/docs/img/logos/microsoft.svg
new file mode 100644
index 0000000000..e77821b28f
--- /dev/null
+++ b/docs/en/docs/img/logos/microsoft.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/docs/en/docs/img/logos/netflix.svg b/docs/en/docs/img/logos/netflix.svg
new file mode 100644
index 0000000000..3c015f960b
--- /dev/null
+++ b/docs/en/docs/img/logos/netflix.svg
@@ -0,0 +1 @@
+
diff --git a/docs/en/docs/img/logos/uber.svg b/docs/en/docs/img/logos/uber.svg
new file mode 100644
index 0000000000..bc0bd54d82
--- /dev/null
+++ b/docs/en/docs/img/logos/uber.svg
@@ -0,0 +1,39 @@
+
+
+
+
diff --git a/docs/en/docs/img/sponsors/talordata.png b/docs/en/docs/img/sponsors/talordata.png
new file mode 100644
index 0000000000..541bfcab84
Binary files /dev/null and b/docs/en/docs/img/sponsors/talordata.png differ
diff --git a/docs/en/docs/index.md b/docs/en/docs/index.md
index 88fcc45456..149e44a044 100644
--- a/docs/en/docs/index.md
+++ b/docs/en/docs/index.md
@@ -54,18 +54,27 @@ The key features are:
### Keystone Sponsor { #keystone-sponsor }
+
-### Gold and Silver Sponsors { #gold-and-silver-sponsors }
+### Gold Sponsors { #gold-sponsors }
+
+
+### Silver Sponsors { #silver-sponsors }
+
+
@@ -73,6 +82,44 @@ The key features are:
## Opinions { #opinions }
+
+"I'm using FastAPI a ton these days. I'm actually planning to use it for all of my team's ML services at Microsoft. Some of them are getting integrated into the core Windows product and some Office products."+
"We adopted the FastAPI library to spawn a REST server that can be queried to obtain predictions." [for Ludwig]+
"Netflix is pleased to announce the open-source release of our crisis management orchestration framework: Dispatch!" [built with FastAPI]+
"If anyone is looking to build a production Python API, I would highly recommend FastAPI. It is beautifully designed, simple to use and highly scalable — it has become a key component in our API-first development strategy."+
## FastAPI mini documentary { #fastapi-mini-documentary }
There's a [FastAPI mini documentary](https://www.youtube.com/watch?v=mpR8ngthqiE) released at the end of 2025, you can watch it online:
-
+
## **Typer**, the FastAPI of CLIs { #typer-the-fastapi-of-clis }
diff --git a/docs/en/docs/js/custom.js b/docs/en/docs/js/custom.js
index 311995d7cd..a4db853f5c 100644
--- a/docs/en/docs/js/custom.js
+++ b/docs/en/docs/js/custom.js
@@ -201,11 +201,49 @@ function openLinksInNewTab() {
});
}
+function setupOpinionsTabs() {
+ const root = document.querySelector('.fastapi-opinions');
+ if (!root) return;
+ const tabs = Array.from(root.querySelectorAll('[role="tab"]'));
+ const panels = Array.from(root.querySelectorAll('[role="tabpanel"]'));
+ if (!tabs.length) return;
+
+ function activate(tab, focus) {
+ tabs.forEach(t => {
+ const selected = t === tab;
+ t.setAttribute('aria-selected', selected ? 'true' : 'false');
+ t.setAttribute('tabindex', selected ? '0' : '-1');
+ });
+ const targetId = tab.getAttribute('aria-controls');
+ panels.forEach(p => {
+ if (p.id === targetId) p.removeAttribute('hidden');
+ else p.setAttribute('hidden', '');
+ });
+ if (focus) tab.focus();
+ }
+
+ tabs.forEach((tab, i) => {
+ tab.addEventListener('click', () => activate(tab, false));
+ tab.addEventListener('keydown', (e) => {
+ let next = null;
+ if (e.key === 'ArrowRight') next = tabs[(i + 1) % tabs.length];
+ else if (e.key === 'ArrowLeft') next = tabs[(i - 1 + tabs.length) % tabs.length];
+ else if (e.key === 'Home') next = tabs[0];
+ else if (e.key === 'End') next = tabs[tabs.length - 1];
+ if (next) {
+ e.preventDefault();
+ activate(next, true);
+ }
+ });
+ });
+}
+
async function main() {
setupTermynal();
showRandomAnnouncement('announce-left', 5000)
handleSponsorImages();
openLinksInNewTab();
+ setupOpinionsTabs();
}
document$.subscribe(() => {
main()
diff --git a/docs/en/docs/python-types.md b/docs/en/docs/python-types.md
index 0cddcd3902..976129117e 100644
--- a/docs/en/docs/python-types.md
+++ b/docs/en/docs/python-types.md
@@ -172,7 +172,7 @@ As the list is a type that contains some internal types, you put them in square
{* ../../docs_src/python_types/tutorial006_py310.py hl[1] *}
-/// info
+/// note
Those internal types in the square brackets are called "type parameters".
@@ -283,7 +283,7 @@ An example from the official Pydantic docs:
{* ../../docs_src/python_types/tutorial011_py310.py *}
-/// info
+/// note
To learn more about [Pydantic, check its docs](https://docs.pydantic.dev/).
@@ -341,7 +341,7 @@ This might all sound abstract. Don't worry. You'll see all this in action in the
The important thing is that by using standard Python types, in a single place (instead of adding more classes, decorators, etc), **FastAPI** will do a lot of the work for you.
-/// info
+/// note
If you already went through all the tutorial and came back to see more about types, a good resource is [the "cheat sheet" from `mypy`](https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html).
diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md
index ffff30400e..4700153477 100644
--- a/docs/en/docs/release-notes.md
+++ b/docs/en/docs/release-notes.md
@@ -7,8 +7,42 @@ hide:
## Latest Changes
-### Internal
+### Docs
+
+* 📝 Update docs, simplify usage of admonitions, only default ones. PR [#15553](https://github.com/fastapi/fastapi/pull/15553) by [@tiangolo](https://github.com/tiangolo).
+* 📝 Fix image URLs in `index.md`. PR [#15534](https://github.com/fastapi/fastapi/pull/15534) by [@YuriiMotov](https://github.com/YuriiMotov).
+* ✏️ Fix Azkaban spelling typo in `virtual-environments.md`. PR [#15463](https://github.com/fastapi/fastapi/pull/15463) by [@isaacbernat](https://github.com/isaacbernat).
+* 💄 Improve layout and styling. PR [#15462](https://github.com/fastapi/fastapi/pull/15462) by [@alejsdev](https://github.com/alejsdev).
+* 💄 Refactor opinions section with interactive tabs and new logos. PR [#15458](https://github.com/fastapi/fastapi/pull/15458) by [@alejsdev](https://github.com/alejsdev).
+* 📝 Add FastAPI Conf '26 announcement to docs. PR [#15457](https://github.com/fastapi/fastapi/pull/15457) by [@alejsdev](https://github.com/alejsdev).
+
+### Translations
+* 🌐 Update translations for zh-hant (update-outdated). PR [#15524](https://github.com/fastapi/fastapi/pull/15524) by [@tiangolo](https://github.com/tiangolo).
+* 🌐 Update translations for fr (update-outdated). PR [#15522](https://github.com/fastapi/fastapi/pull/15522) by [@tiangolo](https://github.com/tiangolo).
+* 🌐 Update translations for es (update-outdated). PR [#15523](https://github.com/fastapi/fastapi/pull/15523) by [@tiangolo](https://github.com/tiangolo).
+* 🌐 Update translations for zh (update-outdated). PR [#15520](https://github.com/fastapi/fastapi/pull/15520) by [@tiangolo](https://github.com/tiangolo).
+* 🌐 Update translations for ru (update-outdated). PR [#15521](https://github.com/fastapi/fastapi/pull/15521) by [@tiangolo](https://github.com/tiangolo).
+* 🌐 Fix typos in Spanish LLM-prompt. PR [#15472](https://github.com/fastapi/fastapi/pull/15472) by [@crr004](https://github.com/crr004).
+
+### Internal
+
+* 🔒️ Only allow team members to modify dependencies. PR [#15548](https://github.com/fastapi/fastapi/pull/15548) by [@svlandeg](https://github.com/svlandeg).
+* ⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR [#15490](https://github.com/fastapi/fastapi/pull/15490) by [@dependabot[bot]](https://github.com/apps/dependabot).
+* ⬆ Bump actions/labeler from 6.0.1 to 6.1.0. PR [#15507](https://github.com/fastapi/fastapi/pull/15507) by [@dependabot[bot]](https://github.com/apps/dependabot).
+* 🔧 Remove Ruff ignored rule for tabs. PR [#15533](https://github.com/fastapi/fastapi/pull/15533) by [@tiangolo](https://github.com/tiangolo).
+* 🔧 Update sponsors badge. PR [#15532](https://github.com/fastapi/fastapi/pull/15532) by [@tiangolo](https://github.com/tiangolo).
+* 🔧 Add sponsor: TalorData. PR [#15531](https://github.com/fastapi/fastapi/pull/15531) by [@tiangolo](https://github.com/tiangolo).
+* ⬆ Bump ty from 0.0.21 to 0.0.34. PR [#15443](https://github.com/fastapi/fastapi/pull/15443) by [@dependabot[bot]](https://github.com/apps/dependabot).
+* ⬆ Bump pydantic from 2.13.2 to 2.13.3. PR [#15444](https://github.com/fastapi/fastapi/pull/15444) by [@dependabot[bot]](https://github.com/apps/dependabot).
+* 👷 Add pre-commit to check typos. PR [#15482](https://github.com/fastapi/fastapi/pull/15482) by [@tiangolo](https://github.com/tiangolo).
+* 👥 Update FastAPI GitHub topic repositories. PR [#15470](https://github.com/fastapi/fastapi/pull/15470) by [@tiangolo](https://github.com/tiangolo).
+* 👥 Update FastAPI People - Experts. PR [#15471](https://github.com/fastapi/fastapi/pull/15471) by [@tiangolo](https://github.com/tiangolo).
+* 👥 Update FastAPI People - Contributors and Translators. PR [#15467](https://github.com/fastapi/fastapi/pull/15467) by [@tiangolo](https://github.com/tiangolo).
+* 👷 Fix missing credentials issue in `translate` workflow. PR [#15468](https://github.com/fastapi/fastapi/pull/15468) by [@YuriiMotov](https://github.com/YuriiMotov).
+* ⬆ Bump sqlmodel from 0.0.32 to 0.0.38. PR [#15437](https://github.com/fastapi/fastapi/pull/15437) by [@dependabot[bot]](https://github.com/apps/dependabot).
+* ⬆ Bump CodSpeedHQ/action from 4.12.1 to 4.14.0. PR [#15436](https://github.com/fastapi/fastapi/pull/15436) by [@dependabot[bot]](https://github.com/apps/dependabot).
+* ⬆ Bump pydantic from 2.12.5 to 2.13.2. PR [#15439](https://github.com/fastapi/fastapi/pull/15439) by [@dependabot[bot]](https://github.com/apps/dependabot).
* ⬆ Bump pydantic-ai from 1.63.0 to 1.83.0. PR [#15417](https://github.com/fastapi/fastapi/pull/15417) by [@dependabot[bot]](https://github.com/apps/dependabot).
* ⬆ Bump prek from 0.3.2 to 0.3.9. PR [#15418](https://github.com/fastapi/fastapi/pull/15418) by [@dependabot[bot]](https://github.com/apps/dependabot).
* ⬆ Bump fastar from 0.9.0 to 0.11.0. PR [#15419](https://github.com/fastapi/fastapi/pull/15419) by [@dependabot[bot]](https://github.com/apps/dependabot).
diff --git a/docs/en/docs/tutorial/bigger-applications.md b/docs/en/docs/tutorial/bigger-applications.md
index 675ec1b437..8950d59b42 100644
--- a/docs/en/docs/tutorial/bigger-applications.md
+++ b/docs/en/docs/tutorial/bigger-applications.md
@@ -4,7 +4,7 @@ If you are building an application or a web API, it's rarely the case that you c
**FastAPI** provides a convenience tool to structure your application while keeping all the flexibility.
-/// info
+/// note
If you come from Flask, this would be the equivalent of Flask's Blueprints.
@@ -194,7 +194,7 @@ Having `dependencies` in the `APIRouter` can be used, for example, to require au
///
-/// check
+/// tip
The `prefix`, `tags`, `responses`, and `dependencies` parameters are (as in many other cases) just a feature from **FastAPI** to help you avoid code duplication.
@@ -339,7 +339,7 @@ We could also import them like:
from app.routers import items, users
```
-/// info
+/// note
The first version is a "relative import":
@@ -382,7 +382,7 @@ Now, let's include the `router`s from the submodules `users` and `items`:
{* ../../docs_src/bigger_applications/app_an_py310/main.py hl[10:11] title["app/main.py"] *}
-/// info
+/// note
`users.router` contains the `APIRouter` inside of the file `app/routers/users.py`.
@@ -402,7 +402,7 @@ So, behind the scenes, it will actually work as if everything was the same singl
///
-/// check
+/// tip
You don't have to worry about performance when including routers.
@@ -451,7 +451,7 @@ Here we do it... just to show that we can 🤷:
and it will work correctly, together with all the other *path operations* added with `app.include_router()`.
-/// info | Very Technical Details
+/// note | Very Technical Details
**Note**: this is a very technical detail that you probably can **just skip**.
diff --git a/docs/en/docs/tutorial/body-multiple-params.md b/docs/en/docs/tutorial/body-multiple-params.md
index d904fb8397..cdef50ec38 100644
--- a/docs/en/docs/tutorial/body-multiple-params.md
+++ b/docs/en/docs/tutorial/body-multiple-params.md
@@ -111,7 +111,7 @@ For example:
{* ../../docs_src/body_multiple_params/tutorial004_an_py310.py hl[28] *}
-/// info
+/// note
`Body` also has all the same extra validation and metadata parameters as `Query`, `Path` and others you will see later.
diff --git a/docs/en/docs/tutorial/body-nested-models.md b/docs/en/docs/tutorial/body-nested-models.md
index 17c560f40e..5479ab2a45 100644
--- a/docs/en/docs/tutorial/body-nested-models.md
+++ b/docs/en/docs/tutorial/body-nested-models.md
@@ -136,7 +136,7 @@ This will expect (convert, validate, document, etc.) a JSON body like:
}
```
-/// info
+/// note
Notice how the `images` key now has a list of image objects.
@@ -148,7 +148,7 @@ You can define arbitrarily deeply nested models:
{* ../../docs_src/body_nested_models/tutorial007_py310.py hl[7,12,18,21,25] *}
-/// info
+/// note
Notice how `Offer` has a list of `Item`s, which in turn have an optional list of `Image`s
diff --git a/docs/en/docs/tutorial/body.md b/docs/en/docs/tutorial/body.md
index ca72548a4d..dda9798d8b 100644
--- a/docs/en/docs/tutorial/body.md
+++ b/docs/en/docs/tutorial/body.md
@@ -8,7 +8,7 @@ Your API almost always has to send a **response** body. But clients don't necess
To declare a **request** body, you use [Pydantic](https://docs.pydantic.dev/) models with all their power and benefits.
-/// info
+/// note
To send data, you should use one of: `POST` (the more common), `PUT`, `DELETE` or `PATCH`.
diff --git a/docs/en/docs/tutorial/cookie-param-models.md b/docs/en/docs/tutorial/cookie-param-models.md
index 609838f766..27fb1164a3 100644
--- a/docs/en/docs/tutorial/cookie-param-models.md
+++ b/docs/en/docs/tutorial/cookie-param-models.md
@@ -32,7 +32,7 @@ You can see the defined cookies in the docs UI at `/docs`:
-/// info
+/// note
Have in mind that, as **browsers handle cookies** in special ways and behind the scenes, they **don't** easily allow **JavaScript** to touch them.
diff --git a/docs/en/docs/tutorial/cookie-params.md b/docs/en/docs/tutorial/cookie-params.md
index f44fd41bde..b57cea8a7e 100644
--- a/docs/en/docs/tutorial/cookie-params.md
+++ b/docs/en/docs/tutorial/cookie-params.md
@@ -24,13 +24,13 @@ But remember that when you import `Query`, `Path`, `Cookie` and others from `fas
///
-/// info
+/// note
To declare cookies, you need to use `Cookie`, because otherwise the parameters would be interpreted as query parameters.
///
-/// info
+/// note
Have in mind that, as **browsers handle cookies** in special ways and behind the scenes, they **don't** easily allow **JavaScript** to touch them.
diff --git a/docs/en/docs/tutorial/debugging.md b/docs/en/docs/tutorial/debugging.md
index d157cb7bf0..8db47b9346 100644
--- a/docs/en/docs/tutorial/debugging.md
+++ b/docs/en/docs/tutorial/debugging.md
@@ -72,7 +72,7 @@ So, the line:
will not be executed.
-/// info
+/// note
For more information, check [the official Python docs](https://docs.python.org/3/library/__main__.html).
diff --git a/docs/en/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md b/docs/en/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
index e663c40823..82d4526b15 100644
--- a/docs/en/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
+++ b/docs/en/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
@@ -28,7 +28,7 @@ It might also help avoid confusion for new developers that see an unused paramet
///
-/// info
+/// note
In this example we use invented custom headers `X-Key` and `X-Token`.
diff --git a/docs/en/docs/tutorial/dependencies/dependencies-with-yield.md b/docs/en/docs/tutorial/dependencies/dependencies-with-yield.md
index 7b80a74e44..658dee7c20 100644
--- a/docs/en/docs/tutorial/dependencies/dependencies-with-yield.md
+++ b/docs/en/docs/tutorial/dependencies/dependencies-with-yield.md
@@ -170,7 +170,7 @@ participant tasks as Background tasks
end
```
-/// info
+/// note
Only **one response** will be sent to the client. It might be one of the error responses or it will be the response from the *path operation*.
diff --git a/docs/en/docs/tutorial/dependencies/index.md b/docs/en/docs/tutorial/dependencies/index.md
index 396c23acbb..0bf651adb6 100644
--- a/docs/en/docs/tutorial/dependencies/index.md
+++ b/docs/en/docs/tutorial/dependencies/index.md
@@ -51,7 +51,7 @@ In this case, this dependency expects:
And then it just returns a `dict` containing those values.
-/// info
+/// note
FastAPI added support for `Annotated` (and started recommending it) in version 0.95.0.
@@ -106,7 +106,7 @@ common_parameters --> read_users
This way you write shared code once and **FastAPI** takes care of calling it for your *path operations*.
-/// check
+/// tip
Notice that you don't have to create a special class and pass it somewhere to **FastAPI** to "register" it or anything similar.
diff --git a/docs/en/docs/tutorial/dependencies/sub-dependencies.md b/docs/en/docs/tutorial/dependencies/sub-dependencies.md
index 99588dd3c5..34b0248e9d 100644
--- a/docs/en/docs/tutorial/dependencies/sub-dependencies.md
+++ b/docs/en/docs/tutorial/dependencies/sub-dependencies.md
@@ -35,7 +35,7 @@ Then we can use the dependency with:
{* ../../docs_src/dependencies/tutorial005_an_py310.py hl[23] *}
-/// info
+/// note
Notice that we are only declaring one dependency in the *path operation function*, the `query_or_cookie_extractor`.
diff --git a/docs/en/docs/tutorial/first-steps.md b/docs/en/docs/tutorial/first-steps.md
index 3355079900..96aaa7463b 100644
--- a/docs/en/docs/tutorial/first-steps.md
+++ b/docs/en/docs/tutorial/first-steps.md
@@ -270,7 +270,7 @@ https://example.com/items/foo
/items/foo
```
-/// info
+/// note
A "path" is also commonly called an "endpoint" or a "route".
@@ -322,7 +322,7 @@ The `@app.get("/")` tells **FastAPI** that the function right below is in charge
* the path `/`
* using a get operation
-/// info | `@decorator` Info
+/// note | `@decorator` Info
That `@something` syntax in Python is called a "decorator".
diff --git a/docs/en/docs/tutorial/header-params.md b/docs/en/docs/tutorial/header-params.md
index 3765956a05..9f72545d38 100644
--- a/docs/en/docs/tutorial/header-params.md
+++ b/docs/en/docs/tutorial/header-params.md
@@ -24,7 +24,7 @@ But remember that when you import `Query`, `Path`, `Header`, and others from `fa
///
-/// info
+/// note
To declare headers, you need to use `Header`, because otherwise the parameters would be interpreted as query parameters.
diff --git a/docs/en/docs/tutorial/metadata.md b/docs/en/docs/tutorial/metadata.md
index 2abf0a3421..9cab5ca71b 100644
--- a/docs/en/docs/tutorial/metadata.md
+++ b/docs/en/docs/tutorial/metadata.md
@@ -74,7 +74,7 @@ Use the `tags` parameter with your *path operations* (and `APIRouter`s) to assig
{* ../../docs_src/metadata/tutorial004_py310.py hl[21,26] *}
-/// info
+/// note
Read more about tags in [Path Operation Configuration](path-operation-configuration.md#tags).
diff --git a/docs/en/docs/tutorial/path-operation-configuration.md b/docs/en/docs/tutorial/path-operation-configuration.md
index e350f7683f..8dfc6e2ffc 100644
--- a/docs/en/docs/tutorial/path-operation-configuration.md
+++ b/docs/en/docs/tutorial/path-operation-configuration.md
@@ -72,13 +72,13 @@ You can specify the response description with the parameter `response_descriptio
{* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[18] *}
-/// info
+/// note
Notice that `response_description` refers specifically to the response, the `description` refers to the *path operation* in general.
///
-/// check
+/// tip
OpenAPI specifies that each *path operation* requires a response description.
diff --git a/docs/en/docs/tutorial/path-params-numeric-validations.md b/docs/en/docs/tutorial/path-params-numeric-validations.md
index 2ba40e92fe..8039b80481 100644
--- a/docs/en/docs/tutorial/path-params-numeric-validations.md
+++ b/docs/en/docs/tutorial/path-params-numeric-validations.md
@@ -8,7 +8,7 @@ First, import `Path` from `fastapi`, and import `Annotated`:
{* ../../docs_src/path_params_numeric_validations/tutorial001_an_py310.py hl[1,3] *}
-/// info
+/// note
FastAPI added support for `Annotated` (and started recommending it) in version 0.95.0.
@@ -131,7 +131,7 @@ And you can also declare numeric validations:
* `lt`: `l`ess `t`han
* `le`: `l`ess than or `e`qual
-/// info
+/// note
`Query`, `Path`, and other classes you will see later are subclasses of a common `Param` class.
diff --git a/docs/en/docs/tutorial/path-params.md b/docs/en/docs/tutorial/path-params.md
index 6614dfdcb7..c8fe68f5e4 100644
--- a/docs/en/docs/tutorial/path-params.md
+++ b/docs/en/docs/tutorial/path-params.md
@@ -20,7 +20,7 @@ You can declare the type of a path parameter in the function, using standard Pyt
In this case, `item_id` is declared to be an `int`.
-/// check
+/// tip
This will give you editor support inside of your function, with error checks, completion, etc.
@@ -34,7 +34,7 @@ If you run this example and open your browser at [http://127.0.0.1:8000/items/3]
{"item_id":3}
```
-/// check
+/// tip
Notice that the value your function received (and returned) is `3`, as a Python `int`, not a string `"3"`.
@@ -66,7 +66,7 @@ because the path parameter `item_id` had a value of `"foo"`, which is not an `in
The same error would appear if you provided a `float` instead of an `int`, as in: [http://127.0.0.1:8000/items/4.2](http://127.0.0.1:8000/items/4.2)
-/// check
+/// tip
So, with the same Python type declaration, **FastAPI** gives you data validation.
@@ -82,7 +82,7 @@ And when you open your browser at [http://127.0.0.1:8000/docs](http://127.0.0.1:
-/// check
+/// tip
Again, just with that same Python type declaration, **FastAPI** gives you automatic, interactive documentation (integrating Swagger UI).
diff --git a/docs/en/docs/tutorial/query-params-str-validations.md b/docs/en/docs/tutorial/query-params-str-validations.md
index 4765b36cbe..0714d8beb1 100644
--- a/docs/en/docs/tutorial/query-params-str-validations.md
+++ b/docs/en/docs/tutorial/query-params-str-validations.md
@@ -29,7 +29,7 @@ To achieve that, first import:
{* ../../docs_src/query_params_str_validations/tutorial002_an_py310.py hl[1,3] *}
-/// info
+/// note
FastAPI added support for `Annotated` (and started recommending it) in version 0.95.0.
@@ -382,7 +382,7 @@ For example, this custom validator checks that the item ID starts with `isbn-` f
{* ../../docs_src/query_params_str_validations/tutorial015_an_py310.py hl[5,16:19,24] *}
-/// info
+/// note
This is available with Pydantic version 2 or above. 😎
diff --git a/docs/en/docs/tutorial/query-params.md b/docs/en/docs/tutorial/query-params.md
index efe2c6d7a0..563d39f7d4 100644
--- a/docs/en/docs/tutorial/query-params.md
+++ b/docs/en/docs/tutorial/query-params.md
@@ -65,7 +65,7 @@ The same way, you can declare optional query parameters, by setting their defaul
In this case, the function parameter `q` will be optional, and will be `None` by default.
-/// check
+/// tip
Also notice that **FastAPI** is smart enough to notice that the path parameter `item_id` is a path parameter and `q` is not, so, it's a query parameter.
diff --git a/docs/en/docs/tutorial/request-files.md b/docs/en/docs/tutorial/request-files.md
index ae3d6a119d..fe4290449b 100644
--- a/docs/en/docs/tutorial/request-files.md
+++ b/docs/en/docs/tutorial/request-files.md
@@ -2,7 +2,7 @@
You can define files to be uploaded by the client using `File`.
-/// info
+/// note
To receive uploaded files, first install [`python-multipart`](https://github.com/Kludex/python-multipart).
@@ -28,7 +28,7 @@ Create file parameters the same way you would for `Body` or `Form`:
{* ../../docs_src/request_files/tutorial001_an_py310.py hl[9] *}
-/// info
+/// note
`File` is a class that inherits directly from `Form`.
diff --git a/docs/en/docs/tutorial/request-form-models.md b/docs/en/docs/tutorial/request-form-models.md
index 2e0f463294..71766bd4ef 100644
--- a/docs/en/docs/tutorial/request-form-models.md
+++ b/docs/en/docs/tutorial/request-form-models.md
@@ -2,7 +2,7 @@
You can use **Pydantic models** to declare **form fields** in FastAPI.
-/// info
+/// note
To use forms, first install [`python-multipart`](https://github.com/Kludex/python-multipart).
diff --git a/docs/en/docs/tutorial/request-forms-and-files.md b/docs/en/docs/tutorial/request-forms-and-files.md
index 1443004120..f6a839491c 100644
--- a/docs/en/docs/tutorial/request-forms-and-files.md
+++ b/docs/en/docs/tutorial/request-forms-and-files.md
@@ -2,7 +2,7 @@
You can define files and form fields at the same time using `File` and `Form`.
-/// info
+/// note
To receive uploaded files and/or form data, first install [`python-multipart`](https://github.com/Kludex/python-multipart).
diff --git a/docs/en/docs/tutorial/request-forms.md b/docs/en/docs/tutorial/request-forms.md
index 8c4b32d850..64e90a2442 100644
--- a/docs/en/docs/tutorial/request-forms.md
+++ b/docs/en/docs/tutorial/request-forms.md
@@ -2,7 +2,7 @@
When you need to receive form fields instead of JSON, you can use `Form`.
-/// info
+/// note
To use forms, first install [`python-multipart`](https://github.com/Kludex/python-multipart).
@@ -32,7 +32,7 @@ The spec requires the fields to be exactly name
With `Form` you can declare the same configurations as with `Body` (and `Query`, `Path`, `Cookie`), including validation, examples, an alias (e.g. `user-name` instead of `username`), etc.
-/// info
+/// note
`Form` is a class that inherits directly from `Body`.
diff --git a/docs/en/docs/tutorial/response-model.md b/docs/en/docs/tutorial/response-model.md
index d628167ddb..ae93eece67 100644
--- a/docs/en/docs/tutorial/response-model.md
+++ b/docs/en/docs/tutorial/response-model.md
@@ -72,7 +72,7 @@ Here we are declaring a `UserIn` model, it will contain a plaintext password:
{* ../../docs_src/response_model/tutorial002_py310.py hl[7,9] *}
-/// info
+/// note
To use `EmailStr`, first install [`email-validator`](https://github.com/JoshData/python-email-validator).
@@ -251,7 +251,7 @@ So, if you send a request to that *path operation* for the item with ID `foo`, t
}
```
-/// info
+/// note
You can also use:
diff --git a/docs/en/docs/tutorial/response-status-code.md b/docs/en/docs/tutorial/response-status-code.md
index dcadaa36d8..a5f82ffb65 100644
--- a/docs/en/docs/tutorial/response-status-code.md
+++ b/docs/en/docs/tutorial/response-status-code.md
@@ -18,7 +18,7 @@ Notice that `status_code` is a parameter of the "decorator" method (`get`, `post
The `status_code` parameter receives a number with the HTTP status code.
-/// info
+/// note
`status_code` can alternatively also receive an `IntEnum`, such as Python's [`http.HTTPStatus`](https://docs.python.org/3/library/http.html#http.HTTPStatus).
diff --git a/docs/en/docs/tutorial/schema-extra-example.md b/docs/en/docs/tutorial/schema-extra-example.md
index 2b5fe11c0b..67c7ac37c2 100644
--- a/docs/en/docs/tutorial/schema-extra-example.md
+++ b/docs/en/docs/tutorial/schema-extra-example.md
@@ -24,7 +24,7 @@ For example you could use it to add metadata for a frontend user interface, etc.
///
-/// info
+/// note
OpenAPI 3.1.0 (used since FastAPI 0.99.0) added support for `examples`, which is part of the **JSON Schema** standard.
@@ -155,7 +155,7 @@ OpenAPI also added `example` and `examples` fields to other parts of the specifi
* `File()`
* `Form()`
-/// info
+/// note
This old OpenAPI-specific `examples` parameter is now `openapi_examples` since FastAPI `0.103.0`.
@@ -171,7 +171,7 @@ And now this new `examples` field takes precedence over the old single (and cust
This new `examples` field in JSON Schema is **just a `list`** of examples, not a dict with extra metadata as in the other places in OpenAPI (described above).
-/// info
+/// note
Even after OpenAPI 3.1.0 was released with this new simpler integration with JSON Schema, for a while, Swagger UI, the tool that provides the automatic docs, didn't support OpenAPI 3.1.0 (it does since version 5.0.0 🎉).
diff --git a/docs/en/docs/tutorial/security/first-steps.md b/docs/en/docs/tutorial/security/first-steps.md
index cf19f7dbdc..095b8b9017 100644
--- a/docs/en/docs/tutorial/security/first-steps.md
+++ b/docs/en/docs/tutorial/security/first-steps.md
@@ -24,7 +24,7 @@ Copy the example in a file `main.py`:
## Run it { #run-it }
-/// info
+/// note
The [`python-multipart`](https://github.com/Kludex/python-multipart) package is automatically installed with **FastAPI** when you run the `pip install "fastapi[standard]"` command.
@@ -60,7 +60,7 @@ You will see something like this:
-/// check | Authorize button!
+/// tip | Authorize button!
You already have a shiny new "Authorize" button.
@@ -118,7 +118,7 @@ So, let's review it from that simplified point of view:
In this example we are going to use **OAuth2**, with the **Password** flow, using a **Bearer** token. We do that using the `OAuth2PasswordBearer` class.
-/// info
+/// note
A "bearer" token is not the only option.
@@ -148,7 +148,7 @@ This parameter doesn't create that endpoint / *path operation*, but declares tha
We will soon also create the actual path operation.
-/// info
+/// note
If you are a very strict "Pythonista" you might dislike the style of the parameter name `tokenUrl` instead of `token_url`.
@@ -176,7 +176,7 @@ This dependency will provide a `str` that is assigned to the parameter `token` o
**FastAPI** will know that it can use this dependency to define a "security scheme" in the OpenAPI schema (and the automatic API docs).
-/// info | Technical Details
+/// note | Technical Details
**FastAPI** will know that it can use the class `OAuth2PasswordBearer` (declared in a dependency) to define the security scheme in OpenAPI because it inherits from `fastapi.security.oauth2.OAuth2`, which in turn inherits from `fastapi.security.base.SecurityBase`.
diff --git a/docs/en/docs/tutorial/security/get-current-user.md b/docs/en/docs/tutorial/security/get-current-user.md
index 2eb80341f9..f8a5fdf821 100644
--- a/docs/en/docs/tutorial/security/get-current-user.md
+++ b/docs/en/docs/tutorial/security/get-current-user.md
@@ -52,7 +52,7 @@ Here **FastAPI** won't get confused because you are using `Depends`.
///
-/// check
+/// tip
The way this dependency system is designed allows us to have different dependencies (different "dependables") that all return a `User` model.
diff --git a/docs/en/docs/tutorial/security/oauth2-jwt.md b/docs/en/docs/tutorial/security/oauth2-jwt.md
index fabdd06a6b..983da9a859 100644
--- a/docs/en/docs/tutorial/security/oauth2-jwt.md
+++ b/docs/en/docs/tutorial/security/oauth2-jwt.md
@@ -42,7 +42,7 @@ $ pip install pyjwt
-/// info
+/// note
If you are planning to use digital signature algorithms like RSA or ECDSA, you should install the cryptography library dependency `pyjwt[crypto]`.
@@ -213,7 +213,7 @@ Using the credentials:
Username: `johndoe`
Password: `secret`
-/// check
+/// tip
Notice that nowhere in the code is the plaintext password "`secret`", we only have the hashed version.
diff --git a/docs/en/docs/tutorial/security/simple-oauth2.md b/docs/en/docs/tutorial/security/simple-oauth2.md
index a98112d765..afe3ba128f 100644
--- a/docs/en/docs/tutorial/security/simple-oauth2.md
+++ b/docs/en/docs/tutorial/security/simple-oauth2.md
@@ -32,7 +32,7 @@ They are normally used to declare specific security permissions, for example:
* `instagram_basic` is used by Facebook / Instagram.
* `https://www.googleapis.com/auth/drive` is used by Google.
-/// info
+/// note
In OAuth2 a "scope" is just a string that declares a specific permission required.
@@ -72,7 +72,7 @@ If you need to enforce it, use `OAuth2PasswordRequestFormStrict` instead of `OAu
* An optional `client_id` (we don't need it for our example).
* An optional `client_secret` (we don't need it for our example).
-/// info
+/// note
The `OAuth2PasswordRequestForm` is not a special class for **FastAPI** as is `OAuth2PasswordBearer`.
@@ -144,7 +144,7 @@ UserInDB(
)
```
-/// info
+/// note
For a more complete explanation of `**user_dict` check back in [the documentation for **Extra Models**](../extra-models.md#about-user-in-dict).
@@ -196,7 +196,7 @@ So, in our endpoint, we will only get a user if the user exists, was correctly a
{* ../../docs_src/security/tutorial003_an_py310.py hl[58:66,69:74,94] *}
-/// info
+/// note
The additional header `WWW-Authenticate` with value `Bearer` we are returning here is also part of the spec.
diff --git a/docs/en/docs/tutorial/server-sent-events.md b/docs/en/docs/tutorial/server-sent-events.md
index d264f8536f..bbac05bd69 100644
--- a/docs/en/docs/tutorial/server-sent-events.md
+++ b/docs/en/docs/tutorial/server-sent-events.md
@@ -4,7 +4,7 @@ You can stream data to the client using **Server-Sent Events** (SSE).
This is similar to [Stream JSON Lines](stream-json-lines.md), but uses the `text/event-stream` format, which is supported natively by browsers with the [`EventSource` API](https://developer.mozilla.org/en-US/docs/Web/API/EventSource).
-/// info
+/// note
Added in FastAPI 0.135.0.
diff --git a/docs/en/docs/tutorial/stream-json-lines.md b/docs/en/docs/tutorial/stream-json-lines.md
index 3006636362..ea1b781a73 100644
--- a/docs/en/docs/tutorial/stream-json-lines.md
+++ b/docs/en/docs/tutorial/stream-json-lines.md
@@ -2,7 +2,7 @@
You could have a sequence of data that you would like to send in a "**stream**", you could do it with **JSON Lines**.
-/// info
+/// note
Added in FastAPI 0.134.0.
@@ -48,7 +48,7 @@ A response would have a content type of `application/jsonl` (instead of `applica
It's very similar to a JSON array (equivalent of a Python list), but instead of being wrapped in `[]` and having `,` between the items, it has **one JSON object per line**, they are separated by a new line character.
-/// info
+/// note
The important point is that your app will be able to produce each line in turn, while the client consumes the previous lines.
diff --git a/docs/en/docs/tutorial/testing.md b/docs/en/docs/tutorial/testing.md
index 5b8fbba07c..72f849f4bf 100644
--- a/docs/en/docs/tutorial/testing.md
+++ b/docs/en/docs/tutorial/testing.md
@@ -8,7 +8,7 @@ With it, you can use [pytest](https://docs.pytest.org/) directly with **FastAPI*
## Using `TestClient` { #using-testclient }
-/// info
+/// note
To use `TestClient`, first install [`httpx`](https://www.python-httpx.org).
@@ -144,7 +144,7 @@ E.g.:
For more information about how to pass data to the backend (using `httpx` or the `TestClient`) check the [HTTPX documentation](https://www.python-httpx.org).
-/// info
+/// note
Note that the `TestClient` receives data that can be converted to JSON, not Pydantic models.
diff --git a/docs/en/docs/virtual-environments.md b/docs/en/docs/virtual-environments.md
index bd46eb820d..119a6926a3 100644
--- a/docs/en/docs/virtual-environments.md
+++ b/docs/en/docs/virtual-environments.md
@@ -2,7 +2,7 @@
When you work in Python projects you probably should use a **virtual environment** (or a similar mechanism) to isolate the packages you install for each project.
-/// info
+/// note
If you already know about virtual environments, how to create them and use them, you might want to skip this section. 🤓
@@ -18,7 +18,7 @@ A **virtual environment** is a directory with some files in it.
///
-/// info
+/// note
This page will teach you how to use **virtual environments** and how they work.
@@ -819,7 +819,7 @@ Traceback (most recent call last):
-But if you deactivate the virtual environment and activate the new one for `prisoner-of-askaban` then when you run `python` it will use the Python from the virtual environment in `prisoner-of-azkaban`.
+But if you deactivate the virtual environment and activate the new one for `prisoner-of-azkaban` then when you run `python` it will use the Python from the virtual environment in `prisoner-of-azkaban`.
"Estoy usando FastAPI un montón estos días. De hecho, estoy planeando usarlo para todos los servicios de ML de mi equipo en Microsoft. Algunos de ellos se están integrando en el producto principal de Windows y algunos productos de Office."+
"Adoptamos el paquete FastAPI para crear un servidor REST que pueda ser consultado para obtener predicciones." [para Ludwig]+
"Netflix se complace en anunciar el lanzamiento open source de nuestro framework de orquestación de gestión de crisis: Dispatch!" [construido con FastAPI]+
"Si alguien está buscando construir una API de Python para producción, recomendaría altamente FastAPI. Está hermosamente diseñado, es simple de usar y altamente escalable — se ha convertido en un componente clave en nuestra estrategia de desarrollo API primero."+
## Mini documental de FastAPI { #fastapi-mini-documentary }
Hay un [mini documental de FastAPI](https://www.youtube.com/watch?v=mpR8ngthqiE) lanzado a finales de 2025, puedes verlo online:
-
+
## **Typer**, el FastAPI de las CLIs { #typer-the-fastapi-of-clis }
@@ -245,7 +280,7 @@ Puedes leer más sobre esto en la [documentación del CLI de FastAPI](https://fa
-### Revísalo { #check-it }
+### Revisa { #check-it }
Abre tu navegador en [http://127.0.0.1:8000/items/5?q=somequery](http://127.0.0.1:8000/items/5?q=somequery).
@@ -258,7 +293,7 @@ Verás el response JSON como:
Ya creaste una API que:
* Recibe requests HTTP en los _paths_ `/` y `/items/{item_id}`.
-* Ambos _paths_ toman _operaciones_ `GET` (también conocidas como métodos HTTP).
+* Ambos _paths_ toman `GET` operaciones (también conocidas como _métodos_ HTTP).
* El _path_ `/items/{item_id}` tiene un _parámetro de path_ `item_id` que debe ser un `int`.
* El _path_ `/items/{item_id}` tiene un _parámetro de query_ `q` opcional que es un `str`.
diff --git a/docs/es/docs/virtual-environments.md b/docs/es/docs/virtual-environments.md
index 682f9e947c..0d8a7fcbde 100644
--- a/docs/es/docs/virtual-environments.md
+++ b/docs/es/docs/virtual-environments.md
@@ -166,7 +166,7 @@ $ source .venv/Scripts/activate
Cada vez que instales un **nuevo paquete** en ese entorno, **activa** el entorno de nuevo.
-Esto asegura que si usas un programa de **terminal (CLI)** instalado por ese paquete, uses el de tu entorno virtual y no cualquier otro que podría estar instalado globalmente, probablemente con una versión diferente a la que necesitas.
+Esto asegura que si usas un **programa de terminal (CLI)** instalado por ese paquete, uses el de tu entorno virtual y no cualquier otro que podría estar instalado globalmente, probablemente con una versión diferente a la que necesitas.
///
@@ -817,7 +817,7 @@ Traceback (most recent call last):
« J'utilise énormément FastAPI ces derniers temps. Je prévois de l'utiliser pour tous les services de ML chez Microsoft de mon équipe. Certains d'entre eux sont intégrés au cœur de Windows et à certains produits Office. »+
« Nous avons adopté la bibliothèque FastAPI pour lancer un serveur REST qui peut être interrogé pour obtenir des prédictions. » [pour Ludwig]+
« Netflix est heureux d’annoncer la publication en open source de notre framework d’orchestration de gestion de crise : Dispatch ! » [construit avec FastAPI]+
« Si quelqu’un cherche à construire une API Python de production, je recommande vivement FastAPI. Il est magnifiquement conçu, simple à utiliser et hautement scalable — il est devenu un composant clé de notre stratégie de développement API-first. »+
## Mini documentaire FastAPI { #fastapi-mini-documentary }
Un [mini documentaire FastAPI](https://www.youtube.com/watch?v=mpR8ngthqiE) est sorti fin 2025, vous pouvez le regarder en ligne :
-
+
## **Typer**, le FastAPI des CLIs { #typer-the-fastapi-of-clis }
diff --git a/docs/fr/docs/virtual-environments.md b/docs/fr/docs/virtual-environments.md
index 4793e5dac2..94bc650723 100644
--- a/docs/fr/docs/virtual-environments.md
+++ b/docs/fr/docs/virtual-environments.md
@@ -819,7 +819,7 @@ Traceback (most recent call last):
«В последнее время я много где использую FastAPI. На самом деле я планирую использовать его для всех ML-сервисов моей команды в Microsoft. Некоторые из них интегрируются в основной продукт Windows, а некоторые — в продукты Office».+
«Мы начали использовать библиотеку FastAPI, чтобы поднять REST-сервер, к которому можно обращаться за предсказаниями». [для Ludwig]+
«Netflix рада объявить об открытом релизе нашего фреймворка оркестрации антикризисного управления: Dispatch!» [создан с помощью FastAPI]+
«Если вы собираетесь делать продакшн-API на Python, я настоятельно рекомендую FastAPI. Он прекрасно спроектирован, прост в использовании и отлично масштабируется — он стал ключевым компонентом нашей стратегии API-first».+
## Мини-документальный фильм о FastAPI { #fastapi-mini-documentary }
В конце 2025 года вышел [мини-документальный фильм о FastAPI](https://www.youtube.com/watch?v=mpR8ngthqiE), вы можете посмотреть его онлайн:
-
+
## **Typer**, FastAPI для CLI { #typer-the-fastapi-of-clis }
diff --git a/docs/ru/docs/virtual-environments.md b/docs/ru/docs/virtual-environments.md
index 633137d09e..2addc869de 100644
--- a/docs/ru/docs/virtual-environments.md
+++ b/docs/ru/docs/virtual-environments.md
@@ -819,7 +819,7 @@ Traceback (most recent call last):
「近期大量使用 FastAPI。我實際上打算把它用在我在 微軟 團隊的所有 機器學習服務 上。其中一些正整合進核心的 Windows 與部分 Office 產品。」+
「我們採用了 FastAPI 函式庫來啟動一個可供查詢以取得 預測 的 REST 伺服器。」 [for Ludwig]+
「Netflix 很高興宣布我們的 危機管理 協調框架 Dispatch 開源!」 [使用 FastAPI 建構]+
「如果有人想要打造一個可用於生產環境的 Python API,我強力推薦 FastAPI。它 設計優雅、簡單易用 且 高度可擴展——已成為我們 API-first 開發策略中的 關鍵元件。」+
## FastAPI 迷你紀錄片 { #fastapi-mini-documentary }
在 2025 年底發布了一支 [FastAPI 迷你紀錄片](https://www.youtube.com/watch?v=mpR8ngthqiE),你可以在線上觀看:
-
+
## **Typer**,命令列的 FastAPI { #typer-the-fastapi-of-clis }
diff --git a/docs/zh-hant/docs/virtual-environments.md b/docs/zh-hant/docs/virtual-environments.md
index 908303dcfd..c0ac224748 100644
--- a/docs/zh-hant/docs/virtual-environments.md
+++ b/docs/zh-hant/docs/virtual-environments.md
@@ -294,7 +294,7 @@ $ echo "*" > .venv/.gitignore
而 `*` 對於 Git 來說意味著「所有內容」。所以,它會忽略 `.venv` 目錄中的所有內容。
-該指令會建立一個名為 .gitignore 的檔案,內容如下:
+該指令會建立一個名為 `.gitignore` 的檔案,內容如下:
```gitignore
*
diff --git a/docs/zh/docs/advanced/generate-clients.md b/docs/zh/docs/advanced/generate-clients.md
index 5f53aa4347..049241bc90 100644
--- a/docs/zh/docs/advanced/generate-clients.md
+++ b/docs/zh/docs/advanced/generate-clients.md
@@ -30,7 +30,6 @@ FastAPI 会自动生成 **OpenAPI 3.1** 规范,因此你使用的任何工具
例如,你可以尝试:
-* [Speakeasy](https://speakeasy.com/editor?utm_source=fastapi+repo&utm_medium=github+sponsorship)
* [Stainless](https://www.stainless.com/?utm_source=fastapi&utm_medium=referral)
* [liblab](https://developers.liblab.com/tutorials/sdk-for-fastapi?utm_source=fastapi)
diff --git a/docs/zh/docs/index.md b/docs/zh/docs/index.md
index a88c25efb1..c1d1c1f9b3 100644
--- a/docs/zh/docs/index.md
+++ b/docs/zh/docs/index.md
@@ -54,18 +54,27 @@ FastAPI 是一个用于构建 API 的现代、快速(高性能)的 Web 框
### Keystone 赞助商 { #keystone-sponsor }
+
-### 金牌和银牌赞助商 { #gold-and-silver-sponsors }
+### 金牌赞助商 { #gold-sponsors }
+
+
+### 银牌赞助商 { #silver-sponsors }
+
+
@@ -73,13 +82,51 @@ FastAPI 是一个用于构建 API 的现代、快速(高性能)的 Web 框
## 评价 { #opinions }
-「_[...] 最近我大量使用 **FastAPI**。[...] 我实际上计划把它用于我团队在 **微软** 的所有 **机器学习服务**。其中一些正在集成进核心 **Windows** 产品以及一些 **Office** 产品。_」
+
+“我最近大量使用 FastAPI。我实际上计划把它用于我团队在 微软的机器学习(ML)服务。其中一些正在集成进核心 Windows 产品以及一些 Office 产品。”+
“我们采用了 FastAPI 库来启动一个可查询获取预测结果的 REST 服务器。” [用于 Ludwig]+
“Netflix 很高兴宣布开源我们的危机管理编排框架:Dispatch!” [使用 FastAPI 构建]+
“如果有人正在构建生产级的 Python API,我强烈推荐 FastAPI。它设计优雅、使用简单且高度可扩展 —— 它已经成为我们 API 优先开发战略中的关键组件。”+
## FastAPI 迷你纪录片 { #fastapi-mini-documentary }
在 2025 年末发布了一部 [FastAPI 迷你纪录片](https://www.youtube.com/watch?v=mpR8ngthqiE),你可以在线观看:
-
+
## **Typer**,命令行中的 FastAPI { #typer-the-fastapi-of-clis }