Skip to content

Commit fb7520b

Browse files
committed
🔁 Merge branch 'master' into pr/valentinDruzhinin/14828
2 parents a8697da + 3f1cc8f commit fb7520b

411 files changed

Lines changed: 37505 additions & 31866 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/test.yml

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ on:
1414

1515
env:
1616
UV_NO_SYNC: true
17+
INLINE_SNAPSHOT_DEFAULT_FLAGS: review
1718

1819
jobs:
1920
changes:
@@ -49,31 +50,45 @@ jobs:
4950
matrix:
5051
os: [ windows-latest, macos-latest ]
5152
python-version: [ "3.14" ]
53+
uv-resolution:
54+
- highest
55+
starlette-src:
56+
- starlette-pypi
57+
- starlette-git
5258
include:
5359
- os: ubuntu-latest
5460
python-version: "3.9"
5561
coverage: coverage
62+
uv-resolution: lowest-direct
5663
- os: macos-latest
5764
python-version: "3.10"
5865
coverage: coverage
66+
uv-resolution: highest
5967
- os: windows-latest
6068
python-version: "3.12"
6169
coverage: coverage
70+
uv-resolution: lowest-direct
6271
- os: ubuntu-latest
6372
python-version: "3.13"
6473
coverage: coverage
74+
uv-resolution: highest
6575
# Ubuntu with 3.13 needs coverage for CodSpeed benchmarks
6676
- os: ubuntu-latest
6777
python-version: "3.13"
6878
coverage: coverage
79+
uv-resolution: highest
6980
codspeed: codspeed
7081
- os: ubuntu-latest
7182
python-version: "3.14"
7283
coverage: coverage
84+
uv-resolution: highest
85+
starlette-src: starlette-git
7386
fail-fast: false
7487
runs-on: ${{ matrix.os }}
7588
env:
7689
UV_PYTHON: ${{ matrix.python-version }}
90+
UV_RESOLUTION: ${{ matrix.uv-resolution }}
91+
STARLETTE_SRC: ${{ matrix.starlette-src }}
7792
steps:
7893
- name: Dump GitHub context
7994
env:
@@ -92,11 +107,14 @@ jobs:
92107
pyproject.toml
93108
uv.lock
94109
- name: Install Dependencies
95-
run: uv sync --locked --no-dev --group tests --extra all
110+
run: uv sync --no-dev --group tests --extra all
111+
- name: Install Starlette from source
112+
if: matrix.starlette-src == 'starlette-git'
113+
run: uv pip install "git+https://github.com/Kludex/starlette@main"
96114
- run: mkdir coverage
97115
- name: Test
98116
if: matrix.codspeed != 'codspeed'
99-
run: uv run bash scripts/test.sh
117+
run: uv run --no-sync bash scripts/test.sh
100118
env:
101119
COVERAGE_FILE: coverage/.coverage.${{ runner.os }}-py${{ matrix.python-version }}
102120
CONTEXT: ${{ runner.os }}-py${{ matrix.python-version }}
@@ -108,7 +126,7 @@ jobs:
108126
CONTEXT: ${{ runner.os }}-py${{ matrix.python-version }}
109127
with:
110128
mode: simulation
111-
run: uv run coverage run -m pytest tests/ --codspeed
129+
run: uv run --no-sync coverage run -m pytest tests/ --codspeed
112130
# Do not store coverage for all possible combinations to avoid file size max errors in Smokeshow
113131
- name: Store coverage files
114132
if: matrix.coverage == 'coverage'

.github/workflows/translate.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ on:
3535
type: boolean
3636
required: false
3737
default: false
38+
max:
39+
description: Maximum number of items to translate (e.g. 10)
40+
type: number
41+
required: false
42+
default: 10
3843

3944
jobs:
4045
langs:
@@ -115,3 +120,4 @@ jobs:
115120
EN_PATH: ${{ github.event.inputs.en_path }}
116121
COMMAND: ${{ matrix.command }}
117122
COMMIT_IN_PLACE: ${{ github.event.inputs.commit_in_place }}
123+
MAX: ${{ github.event.inputs.max }}

docs/de/docs/advanced/wsgi.md

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,29 @@ Dazu können Sie die `WSGIMiddleware` verwenden und damit Ihre WSGI-Anwendung wr
66

77
## `WSGIMiddleware` verwenden { #using-wsgimiddleware }
88

9-
Sie müssen `WSGIMiddleware` importieren.
9+
/// info | Info
10+
11+
Dafür muss `a2wsgi` installiert sein, z. B. mit `pip install a2wsgi`.
12+
13+
///
14+
15+
Sie müssen `WSGIMiddleware` aus `a2wsgi` importieren.
1016

1117
Wrappen Sie dann die WSGI-Anwendung (z. B. Flask) mit der Middleware.
1218

1319
Und dann mounten Sie das auf einem Pfad.
1420

15-
{* ../../docs_src/wsgi/tutorial001_py39.py hl[2:3,3] *}
21+
{* ../../docs_src/wsgi/tutorial001_py39.py hl[1,3,23] *}
22+
23+
/// note | Hinweis
24+
25+
Früher wurde empfohlen, `WSGIMiddleware` aus `fastapi.middleware.wsgi` zu verwenden, dies ist jetzt deprecatet.
26+
27+
Stattdessen wird empfohlen, das Paket `a2wsgi` zu verwenden. Die Nutzung bleibt gleich.
28+
29+
Stellen Sie lediglich sicher, dass das Paket `a2wsgi` installiert ist und importieren Sie `WSGIMiddleware` korrekt aus `a2wsgi`.
30+
31+
///
1632

1733
## Es testen { #check-it }
1834

docs/de/docs/deployment/docker.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,6 @@ Es gibt andere Formate und Tools zum Definieren und Installieren von Paketabhän
145145
* Erstellen Sie eine `main.py`-Datei mit:
146146

147147
```Python
148-
from typing import Union
149-
150148
from fastapi import FastAPI
151149

152150
app = FastAPI()
@@ -158,7 +156,7 @@ def read_root():
158156

159157

160158
@app.get("/items/{item_id}")
161-
def read_item(item_id: int, q: Union[str, None] = None):
159+
def read_item(item_id: int, q: str | None = None):
162160
return {"item_id": item_id, "q": q}
163161
```
164162

docs/de/docs/index.md

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,6 @@ $ pip install "fastapi[standard]"
161161
Erstellen Sie eine Datei `main.py` mit:
162162

163163
```Python
164-
from typing import Union
165-
166164
from fastapi import FastAPI
167165

168166
app = FastAPI()
@@ -174,7 +172,7 @@ def read_root():
174172

175173

176174
@app.get("/items/{item_id}")
177-
def read_item(item_id: int, q: Union[str, None] = None):
175+
def read_item(item_id: int, q: str | None = None):
178176
return {"item_id": item_id, "q": q}
179177
```
180178

@@ -183,9 +181,7 @@ def read_item(item_id: int, q: Union[str, None] = None):
183181

184182
Wenn Ihr Code `async` / `await` verwendet, benutzen Sie `async def`:
185183

186-
```Python hl_lines="9 14"
187-
from typing import Union
188-
184+
```Python hl_lines="7 12"
189185
from fastapi import FastAPI
190186

191187
app = FastAPI()
@@ -197,7 +193,7 @@ async def read_root():
197193

198194

199195
@app.get("/items/{item_id}")
200-
async def read_item(item_id: int, q: Union[str, None] = None):
196+
async def read_item(item_id: int, q: str | None = None):
201197
return {"item_id": item_id, "q": q}
202198
```
203199

@@ -288,9 +284,7 @@ Sie sehen die alternative automatische Dokumentation (bereitgestellt von <a href
288284

289285
Deklarieren Sie den Body mit Standard-Python-Typen, dank Pydantic.
290286

291-
```Python hl_lines="4 9-12 25-27"
292-
from typing import Union
293-
287+
```Python hl_lines="2 7-10 23-25"
294288
from fastapi import FastAPI
295289
from pydantic import BaseModel
296290

@@ -300,7 +294,7 @@ app = FastAPI()
300294
class Item(BaseModel):
301295
name: str
302296
price: float
303-
is_offer: Union[bool, None] = None
297+
is_offer: bool | None = None
304298

305299

306300
@app.get("/")
@@ -309,7 +303,7 @@ def read_root():
309303

310304

311305
@app.get("/items/{item_id}")
312-
def read_item(item_id: int, q: Union[str, None] = None):
306+
def read_item(item_id: int, q: str | None = None):
313307
return {"item_id": item_id, "q": q}
314308

315309

docs/de/docs/tutorial/body-multiple-params.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Body – Mehrere Parameter { #body-multiple-parameters }
22

3-
Nun, da wir gesehen haben, wie `Path` und `Query` verwendet werden, schauen wir uns fortgeschrittenere Verwendungsmöglichkeiten von <abbr title="Anfragekörper">Requestbody</abbr>-Deklarationen an.
3+
Nun, da wir gesehen haben, wie `Path` und `Query` verwendet werden, schauen wir uns fortgeschrittenere Verwendungsmöglichkeiten von <abbr title="Requestbody">Requestbody</abbr>-Deklarationen an.
44

55
## `Path`-, `Query`- und Body-Parameter vermischen { #mix-path-query-and-body-parameters }
66

@@ -101,13 +101,13 @@ Natürlich können Sie auch, wann immer Sie das brauchen, weitere Query-Paramete
101101
Da einfache Werte standardmäßig als Query-Parameter interpretiert werden, müssen Sie `Query` nicht explizit hinzufügen, Sie können einfach schreiben:
102102

103103
```Python
104-
q: Union[str, None] = None
104+
q: str | None = None
105105
```
106106

107-
Oder in Python 3.10 und darüber:
107+
Oder in Python 3.9:
108108

109109
```Python
110-
q: str | None = None
110+
q: Union[str, None] = None
111111
```
112112

113113
Zum Beispiel:

docs/de/docs/tutorial/path-operation-configuration.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ In diesem Fall macht es Sinn, die Tags in einem `Enum` zu speichern.
5252

5353
Sie können eine <abbr title="Zusammenfassung">`summary`</abbr> und eine <abbr title="Beschreibung">`description`</abbr> hinzufügen:
5454

55-
{* ../../docs_src/path_operation_configuration/tutorial003_py310.py hl[18:19] *}
55+
{* ../../docs_src/path_operation_configuration/tutorial003_py310.py hl[17:18] *}
5656

5757
## Beschreibung mittels Docstring { #description-from-docstring }
5858

@@ -70,7 +70,7 @@ Es wird in der interaktiven Dokumentation verwendet:
7070

7171
Sie können die Response mit dem Parameter `response_description` beschreiben:
7272

73-
{* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[19] *}
73+
{* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[18] *}
7474

7575
/// info | Info
7676

docs/en/docs/release-notes.md

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,115 @@ hide:
77

88
## Latest Changes
99

10+
### Features
11+
12+
* ✨ Show a clear error on attempt to include router into itself. PR [#14258](https://github.com/fastapi/fastapi/pull/14258) by [@JavierSanchezCastro](https://github.com/JavierSanchezCastro).
13+
* ✨ Replace `dict` by `Mapping` on `HTTPException.headers`. PR [#12997](https://github.com/fastapi/fastapi/pull/12997) by [@rijenkii](https://github.com/rijenkii).
14+
15+
### Refactors
16+
17+
* ♻️ Simplify reading files in memory, do it sequentially instead of (fake) parallel. PR [#14884](https://github.com/fastapi/fastapi/pull/14884) by [@tiangolo](https://github.com/tiangolo).
18+
19+
### Internal
20+
21+
* 🔧 Configure `test` workflow to run tests with `inline-snapshot=review`. PR [#14876](https://github.com/fastapi/fastapi/pull/14876) by [@YuriiMotov](https://github.com/YuriiMotov).
22+
23+
## 0.128.6
24+
25+
### Fixes
26+
27+
* 🐛 Fix `on_startup` and `on_shutdown` parameters of `APIRouter`. PR [#14873](https://github.com/fastapi/fastapi/pull/14873) by [@YuriiMotov](https://github.com/YuriiMotov).
28+
29+
### Translations
30+
31+
* 🌐 Update translations for zh (update-outdated). PR [#14843](https://github.com/fastapi/fastapi/pull/14843) by [@tiangolo](https://github.com/tiangolo).
32+
33+
### Internal
34+
35+
* ✅ Fix parameterized tests with snapshots. PR [#14875](https://github.com/fastapi/fastapi/pull/14875) by [@YuriiMotov](https://github.com/YuriiMotov).
36+
37+
## 0.128.5
38+
39+
### Refactors
40+
41+
* ♻️ Refactor and simplify Pydantic v2 (and v1) compatibility internal utils. PR [#14862](https://github.com/fastapi/fastapi/pull/14862) by [@tiangolo](https://github.com/tiangolo).
42+
43+
### Internal
44+
45+
* ✅ Add inline snapshot tests for OpenAPI before changes from Pydantic v2. PR [#14864](https://github.com/fastapi/fastapi/pull/14864) by [@tiangolo](https://github.com/tiangolo).
46+
47+
## 0.128.4
48+
49+
### Refactors
50+
51+
* ♻️ Refactor internals, simplify Pydantic v2/v1 utils, `create_model_field`, better types for `lenient_issubclass`. PR [#14860](https://github.com/fastapi/fastapi/pull/14860) by [@tiangolo](https://github.com/tiangolo).
52+
* ♻️ Simplify internals, remove Pydantic v1 only logic, no longer needed. PR [#14857](https://github.com/fastapi/fastapi/pull/14857) by [@tiangolo](https://github.com/tiangolo).
53+
* ♻️ Refactor internals, cleanup unneeded Pydantic v1 specific logic. PR [#14856](https://github.com/fastapi/fastapi/pull/14856) by [@tiangolo](https://github.com/tiangolo).
54+
55+
### Translations
56+
57+
* 🌐 Update translations for fr (outdated pages). PR [#14839](https://github.com/fastapi/fastapi/pull/14839) by [@YuriiMotov](https://github.com/YuriiMotov).
58+
* 🌐 Update translations for tr (outdated and missing). PR [#14838](https://github.com/fastapi/fastapi/pull/14838) by [@YuriiMotov](https://github.com/YuriiMotov).
59+
60+
### Internal
61+
62+
* ⬆️ Upgrade development dependencies. PR [#14854](https://github.com/fastapi/fastapi/pull/14854) by [@tiangolo](https://github.com/tiangolo).
63+
64+
## 0.128.3
65+
66+
### Refactors
67+
68+
* ♻️ Re-implement `on_event` in FastAPI for compatibility with the next Starlette, while keeping backwards compatibility. PR [#14851](https://github.com/fastapi/fastapi/pull/14851) by [@tiangolo](https://github.com/tiangolo).
69+
70+
### Upgrades
71+
72+
* ⬆️ Upgrade Starlette supported version range to `starlette>=0.40.0,<1.0.0`. PR [#14853](https://github.com/fastapi/fastapi/pull/14853) by [@tiangolo](https://github.com/tiangolo).
73+
74+
### Translations
75+
76+
* 🌐 Update translations for ru (update-outdated). PR [#14834](https://github.com/fastapi/fastapi/pull/14834) by [@tiangolo](https://github.com/tiangolo).
77+
78+
### Internal
79+
80+
* 👷 Run tests with Starlette from git. PR [#14849](https://github.com/fastapi/fastapi/pull/14849) by [@tiangolo](https://github.com/tiangolo).
81+
* 👷 Run tests with lower bound uv sync, upgrade `fastapi[all]` minimum dependencies: `ujson >=5.8.0`, `orjson >=3.9.3`. PR [#14846](https://github.com/fastapi/fastapi/pull/14846) by [@tiangolo](https://github.com/tiangolo).
82+
83+
## 0.128.2
84+
85+
### Features
86+
87+
* ✨ Add support for PEP695 `TypeAliasType`. PR [#13920](https://github.com/fastapi/fastapi/pull/13920) by [@cstruct](https://github.com/cstruct).
88+
* ✨ Allow `Response` type hint as dependency annotation. PR [#14794](https://github.com/fastapi/fastapi/pull/14794) by [@jonathan-fulton](https://github.com/jonathan-fulton).
89+
90+
### Fixes
91+
92+
* 🐛 Fix using `Json[list[str]]` type (issue #10997). PR [#14616](https://github.com/fastapi/fastapi/pull/14616) by [@mkanetsuna](https://github.com/mkanetsuna).
93+
1094
### Docs
1195

1296
* 📝 Update docs for translations. PR [#14830](https://github.com/fastapi/fastapi/pull/14830) by [@tiangolo](https://github.com/tiangolo).
1397
* 📝 Fix duplicate word in `advanced-dependencies.md`. PR [#14815](https://github.com/fastapi/fastapi/pull/14815) by [@Rayyan-Oumlil](https://github.com/Rayyan-Oumlil).
1498

1599
### Translations
16100

101+
* 🌐 Enable Traditional Chinese translations. PR [#14842](https://github.com/fastapi/fastapi/pull/14842) by [@tiangolo](https://github.com/tiangolo).
102+
* 🌐 Enable French docs translations. PR [#14841](https://github.com/fastapi/fastapi/pull/14841) by [@tiangolo](https://github.com/tiangolo).
103+
* 🌐 Update translations for fr (translate-page). PR [#14837](https://github.com/fastapi/fastapi/pull/14837) by [@tiangolo](https://github.com/tiangolo).
104+
* 🌐 Update translations for de (update-outdated). PR [#14836](https://github.com/fastapi/fastapi/pull/14836) by [@tiangolo](https://github.com/tiangolo).
105+
* 🌐 Update translations for pt (update-outdated). PR [#14833](https://github.com/fastapi/fastapi/pull/14833) by [@tiangolo](https://github.com/tiangolo).
106+
* 🌐 Update translations for ko (update-outdated). PR [#14835](https://github.com/fastapi/fastapi/pull/14835) by [@tiangolo](https://github.com/tiangolo).
107+
* 🌐 Update translations for es (update-outdated). PR [#14832](https://github.com/fastapi/fastapi/pull/14832) by [@tiangolo](https://github.com/tiangolo).
108+
* 🌐 Update translations for tr (update-outdated). PR [#14831](https://github.com/fastapi/fastapi/pull/14831) by [@tiangolo](https://github.com/tiangolo).
17109
* 🌐 Update translations for tr (add-missing). PR [#14790](https://github.com/fastapi/fastapi/pull/14790) by [@tiangolo](https://github.com/tiangolo).
18110
* 🌐 Update translations for fr (update-outdated). PR [#14826](https://github.com/fastapi/fastapi/pull/14826) by [@tiangolo](https://github.com/tiangolo).
19111
* 🌐 Update translations for zh-hant (update-outdated). PR [#14825](https://github.com/fastapi/fastapi/pull/14825) by [@tiangolo](https://github.com/tiangolo).
20112
* 🌐 Update translations for uk (update-outdated). PR [#14822](https://github.com/fastapi/fastapi/pull/14822) by [@tiangolo](https://github.com/tiangolo).
21113
* 🔨 Update docs and translations scripts, enable Turkish. PR [#14824](https://github.com/fastapi/fastapi/pull/14824) by [@tiangolo](https://github.com/tiangolo).
22114

115+
### Internal
116+
117+
* 🔨 Add max pages to translate to configs. PR [#14840](https://github.com/fastapi/fastapi/pull/14840) by [@tiangolo](https://github.com/tiangolo).
118+
23119
## 0.128.1
24120

25121
### Features

docs/en/mkdocs.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,8 @@ extra:
317317
name: de - Deutsch
318318
- link: /es/
319319
name: es - español
320+
- link: /fr/
321+
name: fr - français
320322
- link: /ja/
321323
name: ja - 日本語
322324
- link: /ko/
@@ -329,6 +331,10 @@ extra:
329331
name: tr - Türkçe
330332
- link: /uk/
331333
name: uk - українська мова
334+
- link: /zh/
335+
name: zh - 简体中文
336+
- link: /zh-hant/
337+
name: zh-hant - 繁體中文
332338
extra_css:
333339
- css/termynal.css
334340
- css/custom.css

0 commit comments

Comments
 (0)