diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 94016ad31..8b24c8c0c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -14,7 +14,7 @@ repos:
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/astral-sh/ruff-pre-commit
- rev: v0.13.0
+ rev: v0.13.1
hooks:
- id: ruff
args:
diff --git a/docs/de/docs/tutorial/cookie-params.md b/docs/de/docs/tutorial/cookie-params.md
index 9f50c7ae5..81a753211 100644
--- a/docs/de/docs/tutorial/cookie-params.md
+++ b/docs/de/docs/tutorial/cookie-params.md
@@ -30,6 +30,16 @@ Um Cookies zu deklarieren, müssen Sie `Cookie` verwenden, da die Parameter sons
///
+/// info | Info
+
+Beachten Sie, dass **Browser Cookies auf besondere Weise und hinter den Kulissen handhaben** und **JavaScript** **nicht** ohne Weiteres erlauben, auf sie zuzugreifen.
+
+Wenn Sie zur **API-Dokumentations-UI** unter `/docs` gehen, können Sie die **Dokumentation** zu Cookies für Ihre *Pfadoperationen* sehen.
+
+Aber selbst wenn Sie die **Daten ausfüllen** und auf „Execute“ klicken, da die Dokumentations-UI mit **JavaScript** arbeitet, werden die Cookies nicht gesendet, und Sie sehen eine **Fehler**-Meldung, als hätten Sie keine Werte eingegeben.
+
+///
+
## Zusammenfassung { #recap }
Deklarieren Sie Cookies mit `Cookie` und verwenden Sie dabei das gleiche allgemeine Muster wie bei `Query` und `Path`.
diff --git a/docs/de/docs/tutorial/path-params-numeric-validations.md b/docs/de/docs/tutorial/path-params-numeric-validations.md
index 36f466059..5b7474944 100644
--- a/docs/de/docs/tutorial/path-params-numeric-validations.md
+++ b/docs/de/docs/tutorial/path-params-numeric-validations.md
@@ -54,18 +54,8 @@ Für **FastAPI** spielt es keine Rolle. Es erkennt die Parameter anhand ihrer Na
Sie können Ihre Funktion also so deklarieren:
-//// tab | Python 3.8 nicht annotiert
-
-/// tip | Tipp
-
-Bevorzugen Sie die `Annotated`-Version, falls möglich.
-
-///
-
{* ../../docs_src/path_params_numeric_validations/tutorial002.py hl[7] *}
-////
-
Aber bedenken Sie, dass Sie dieses Problem nicht haben, wenn Sie `Annotated` verwenden, da es nicht darauf ankommt, dass Sie keine Funktionsparameter-Defaultwerte für `Query()` oder `Path()` verwenden.
{* ../../docs_src/path_params_numeric_validations/tutorial002_an_py39.py *}
diff --git a/docs/en/docs/contributing.md b/docs/en/docs/contributing.md
index 2583fd1fb..ae99059f4 100644
--- a/docs/en/docs/contributing.md
+++ b/docs/en/docs/contributing.md
@@ -10,10 +10,12 @@ If you already cloned the
```console
@@ -24,6 +26,24 @@ $ pip install -r requirements.txt
+////
+
+//// tab | `uv`
+
+If you have `uv`:
+
+
+
+```console
+$ uv pip install -r requirements.txt
+
+---> 100%
+```
+
+
+
+////
+
It will install all the dependencies and your local FastAPI in your local environment.
### Using your local FastAPI
diff --git a/docs/en/docs/css/custom.css b/docs/en/docs/css/custom.css
index b192f6123..a38df772f 100644
--- a/docs/en/docs/css/custom.css
+++ b/docs/en/docs/css/custom.css
@@ -102,7 +102,15 @@ a.announce-link:hover {
align-items: center;
}
-.announce-wrapper div.item {
+.announce-wrapper #announce-left div.item {
+ display: none;
+}
+
+.announce-wrapper #announce-right {
+ display: none;
+}
+
+.announce-wrapper #announce-right div.item {
display: none;
}
@@ -112,7 +120,7 @@ a.announce-link:hover {
top: -10px;
right: 0;
font-size: 0.5rem;
- color: #999;
+ color: #e6e6e6;
background-color: #666;
border-radius: 10px;
padding: 0 10px;
diff --git a/docs/en/docs/js/custom.js b/docs/en/docs/js/custom.js
index 4c0ada312..48e95901d 100644
--- a/docs/en/docs/js/custom.js
+++ b/docs/en/docs/js/custom.js
@@ -135,10 +135,43 @@ async function showRandomAnnouncement(groupId, timeInterval) {
}
}
+function handleSponsorImages() {
+ const announceRight = document.getElementById('announce-right');
+ if(!announceRight) return;
+
+ const sponsorImages = document.querySelectorAll('.sponsor-image');
+
+ const imagePromises = Array.from(sponsorImages).map(img => {
+ return new Promise((resolve, reject) => {
+ if (img.complete && img.naturalHeight !== 0) {
+ resolve();
+ } else {
+ img.addEventListener('load', () => {
+ if (img.naturalHeight !== 0) {
+ resolve();
+ } else {
+ reject();
+ }
+ });
+ img.addEventListener('error', reject);
+ }
+ });
+ });
+
+ Promise.all(imagePromises)
+ .then(() => {
+ announceRight.style.display = 'block';
+ showRandomAnnouncement('announce-right', 10000);
+ })
+ .catch(() => {
+ // do nothing
+ });
+}
+
async function main() {
setupTermynal();
showRandomAnnouncement('announce-left', 5000)
- showRandomAnnouncement('announce-right', 10000)
+ handleSponsorImages();
}
document$.subscribe(() => {
main()
diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md
index 25744044e..fe1fac8cf 100644
--- a/docs/en/docs/release-notes.md
+++ b/docs/en/docs/release-notes.md
@@ -7,6 +7,22 @@ hide:
## Latest Changes
+### Docs
+
+* ✏️ Fix typos in OAuth2 password request forms. PR [#14112](https://github.com/fastapi/fastapi/pull/14112) by [@alv2017](https://github.com/alv2017).
+* 📝 Update contributing guidelines for installing requirements. PR [#14095](https://github.com/fastapi/fastapi/pull/14095) by [@alejsdev](https://github.com/alejsdev).
+
+### Translations
+
+* 🌐 Sync German docs. PR [#14098](https://github.com/fastapi/fastapi/pull/14098) by [@nilslindemann](https://github.com/nilslindemann).
+
+### Internal
+
+* ⬆ [pre-commit.ci] pre-commit autoupdate. PR [#14103](https://github.com/fastapi/fastapi/pull/14103) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci).
+* ♻️ Refactor sponsor image handling. PR [#14102](https://github.com/fastapi/fastapi/pull/14102) by [@alejsdev](https://github.com/alejsdev).
+* 🐛 Fix sponsor display issue by hiding element on image error. PR [#14097](https://github.com/fastapi/fastapi/pull/14097) by [@alejsdev](https://github.com/alejsdev).
+* 🐛 Hide sponsor badge when sponsor image is not displayed. PR [#14096](https://github.com/fastapi/fastapi/pull/14096) by [@alejsdev](https://github.com/alejsdev).
+
## 0.117.1
### Fixes
diff --git a/fastapi/security/oauth2.py b/fastapi/security/oauth2.py
index 88e394db1..fdedbc2da 100644
--- a/fastapi/security/oauth2.py
+++ b/fastapi/security/oauth2.py
@@ -89,7 +89,7 @@ class OAuth2PasswordRequestForm:
Doc(
"""
`password` string. The OAuth2 spec requires the exact field name
- `password".
+ `password`.
"""
),
],
@@ -243,7 +243,7 @@ class OAuth2PasswordRequestFormStrict(OAuth2PasswordRequestForm):
Doc(
"""
`password` string. The OAuth2 spec requires the exact field name
- `password".
+ `password`.
"""
),
],