From 786773ac115f516794919283df10b412bebf8764 Mon Sep 17 00:00:00 2001 From: Yurii Motov Date: Thu, 11 Dec 2025 20:01:20 +0100 Subject: [PATCH] Remove code examples for Python 3.8 in `settings` --- docs/en/docs/advanced/settings.md | 10 ++++---- .../{app01 => app01_py39}/__init__.py | 0 .../settings/{app01 => app01_py39}/config.py | 0 .../settings/{app01 => app01_py39}/main.py | 0 docs_src/settings/app02_an/config.py | 7 ------ docs_src/settings/app02_an/main.py | 22 ------------------ docs_src/settings/app02_an/test_main.py | 23 ------------------- .../{app02 => app02_py39}/__init__.py | 0 .../settings/{app02 => app02_py39}/config.py | 0 .../settings/{app02 => app02_py39}/main.py | 0 .../{app02 => app02_py39}/test_main.py | 0 docs_src/settings/app03/__init__.py | 0 docs_src/settings/app03_an/__init__.py | 0 docs_src/settings/app03_an/config.py | 9 -------- docs_src/settings/app03_an/config_pv1.py | 10 -------- docs_src/settings/app03_an/main.py | 22 ------------------ .../{app02_an => app03_py39}/__init__.py | 0 .../settings/{app03 => app03_py39}/config.py | 0 .../{app03 => app03_py39}/config_pv1.py | 0 .../settings/{app03 => app03_py39}/main.py | 0 ...rial001_pv1.py => tutorial001_pv1_py39.py} | 0 .../{tutorial001.py => tutorial001_py39.py} | 0 .../test_tutorial/test_settings/test_app02.py | 7 +++--- .../test_tutorial/test_settings/test_app03.py | 7 +++--- .../test_settings/test_tutorial001.py | 4 ++-- 25 files changed, 13 insertions(+), 108 deletions(-) rename docs_src/settings/{app01 => app01_py39}/__init__.py (100%) rename docs_src/settings/{app01 => app01_py39}/config.py (100%) rename docs_src/settings/{app01 => app01_py39}/main.py (100%) delete mode 100644 docs_src/settings/app02_an/config.py delete mode 100644 docs_src/settings/app02_an/main.py delete mode 100644 docs_src/settings/app02_an/test_main.py rename docs_src/settings/{app02 => app02_py39}/__init__.py (100%) rename docs_src/settings/{app02 => app02_py39}/config.py (100%) rename docs_src/settings/{app02 => app02_py39}/main.py (100%) rename docs_src/settings/{app02 => app02_py39}/test_main.py (100%) delete mode 100644 docs_src/settings/app03/__init__.py delete mode 100644 docs_src/settings/app03_an/__init__.py delete mode 100644 docs_src/settings/app03_an/config.py delete mode 100644 docs_src/settings/app03_an/config_pv1.py delete mode 100644 docs_src/settings/app03_an/main.py rename docs_src/settings/{app02_an => app03_py39}/__init__.py (100%) rename docs_src/settings/{app03 => app03_py39}/config.py (100%) rename docs_src/settings/{app03 => app03_py39}/config_pv1.py (100%) rename docs_src/settings/{app03 => app03_py39}/main.py (100%) rename docs_src/settings/{tutorial001_pv1.py => tutorial001_pv1_py39.py} (100%) rename docs_src/settings/{tutorial001.py => tutorial001_py39.py} (100%) diff --git a/docs/en/docs/advanced/settings.md b/docs/en/docs/advanced/settings.md index 0220c52ce..268983f1e 100644 --- a/docs/en/docs/advanced/settings.md +++ b/docs/en/docs/advanced/settings.md @@ -62,7 +62,7 @@ You can use all the same validation features and tools you use for Pydantic mode //// tab | Pydantic v2 -{* ../../docs_src/settings/tutorial001.py hl[2,5:8,11] *} +{* ../../docs_src/settings/tutorial001_py39.py hl[2,5:8,11] *} //// @@ -74,7 +74,7 @@ In Pydantic v1 you would import `BaseSettings` directly from `pydantic` instead /// -{* ../../docs_src/settings/tutorial001_pv1.py hl[2,5:8,11] *} +{* ../../docs_src/settings/tutorial001_pv1_py39.py hl[2,5:8,11] *} //// @@ -92,7 +92,7 @@ Next it will convert and validate the data. So, when you use that `settings` obj Then you can use the new `settings` object in your application: -{* ../../docs_src/settings/tutorial001.py hl[18:20] *} +{* ../../docs_src/settings/tutorial001_py39.py hl[18:20] *} ### Run the server { #run-the-server } @@ -126,11 +126,11 @@ You could put those settings in another module file as you saw in [Bigger Applic For example, you could have a file `config.py` with: -{* ../../docs_src/settings/app01/config.py *} +{* ../../docs_src/settings/app01_py39/config.py *} And then use it in a file `main.py`: -{* ../../docs_src/settings/app01/main.py hl[3,11:13] *} +{* ../../docs_src/settings/app01_py39/main.py hl[3,11:13] *} /// tip diff --git a/docs_src/settings/app01/__init__.py b/docs_src/settings/app01_py39/__init__.py similarity index 100% rename from docs_src/settings/app01/__init__.py rename to docs_src/settings/app01_py39/__init__.py diff --git a/docs_src/settings/app01/config.py b/docs_src/settings/app01_py39/config.py similarity index 100% rename from docs_src/settings/app01/config.py rename to docs_src/settings/app01_py39/config.py diff --git a/docs_src/settings/app01/main.py b/docs_src/settings/app01_py39/main.py similarity index 100% rename from docs_src/settings/app01/main.py rename to docs_src/settings/app01_py39/main.py diff --git a/docs_src/settings/app02_an/config.py b/docs_src/settings/app02_an/config.py deleted file mode 100644 index e17b5035d..000000000 --- a/docs_src/settings/app02_an/config.py +++ /dev/null @@ -1,7 +0,0 @@ -from pydantic_settings import BaseSettings - - -class Settings(BaseSettings): - app_name: str = "Awesome API" - admin_email: str - items_per_user: int = 50 diff --git a/docs_src/settings/app02_an/main.py b/docs_src/settings/app02_an/main.py deleted file mode 100644 index 3a578cc33..000000000 --- a/docs_src/settings/app02_an/main.py +++ /dev/null @@ -1,22 +0,0 @@ -from functools import lru_cache - -from fastapi import Depends, FastAPI -from typing_extensions import Annotated - -from .config import Settings - -app = FastAPI() - - -@lru_cache -def get_settings(): - return Settings() - - -@app.get("/info") -async def info(settings: Annotated[Settings, Depends(get_settings)]): - return { - "app_name": settings.app_name, - "admin_email": settings.admin_email, - "items_per_user": settings.items_per_user, - } diff --git a/docs_src/settings/app02_an/test_main.py b/docs_src/settings/app02_an/test_main.py deleted file mode 100644 index 7a04d7e8e..000000000 --- a/docs_src/settings/app02_an/test_main.py +++ /dev/null @@ -1,23 +0,0 @@ -from fastapi.testclient import TestClient - -from .config import Settings -from .main import app, get_settings - -client = TestClient(app) - - -def get_settings_override(): - return Settings(admin_email="testing_admin@example.com") - - -app.dependency_overrides[get_settings] = get_settings_override - - -def test_app(): - response = client.get("/info") - data = response.json() - assert data == { - "app_name": "Awesome API", - "admin_email": "testing_admin@example.com", - "items_per_user": 50, - } diff --git a/docs_src/settings/app02/__init__.py b/docs_src/settings/app02_py39/__init__.py similarity index 100% rename from docs_src/settings/app02/__init__.py rename to docs_src/settings/app02_py39/__init__.py diff --git a/docs_src/settings/app02/config.py b/docs_src/settings/app02_py39/config.py similarity index 100% rename from docs_src/settings/app02/config.py rename to docs_src/settings/app02_py39/config.py diff --git a/docs_src/settings/app02/main.py b/docs_src/settings/app02_py39/main.py similarity index 100% rename from docs_src/settings/app02/main.py rename to docs_src/settings/app02_py39/main.py diff --git a/docs_src/settings/app02/test_main.py b/docs_src/settings/app02_py39/test_main.py similarity index 100% rename from docs_src/settings/app02/test_main.py rename to docs_src/settings/app02_py39/test_main.py diff --git a/docs_src/settings/app03/__init__.py b/docs_src/settings/app03/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs_src/settings/app03_an/__init__.py b/docs_src/settings/app03_an/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs_src/settings/app03_an/config.py b/docs_src/settings/app03_an/config.py deleted file mode 100644 index 08f8f88c2..000000000 --- a/docs_src/settings/app03_an/config.py +++ /dev/null @@ -1,9 +0,0 @@ -from pydantic_settings import BaseSettings, SettingsConfigDict - - -class Settings(BaseSettings): - app_name: str = "Awesome API" - admin_email: str - items_per_user: int = 50 - - model_config = SettingsConfigDict(env_file=".env") diff --git a/docs_src/settings/app03_an/config_pv1.py b/docs_src/settings/app03_an/config_pv1.py deleted file mode 100644 index e1c3ee300..000000000 --- a/docs_src/settings/app03_an/config_pv1.py +++ /dev/null @@ -1,10 +0,0 @@ -from pydantic import BaseSettings - - -class Settings(BaseSettings): - app_name: str = "Awesome API" - admin_email: str - items_per_user: int = 50 - - class Config: - env_file = ".env" diff --git a/docs_src/settings/app03_an/main.py b/docs_src/settings/app03_an/main.py deleted file mode 100644 index 62f347639..000000000 --- a/docs_src/settings/app03_an/main.py +++ /dev/null @@ -1,22 +0,0 @@ -from functools import lru_cache - -from fastapi import Depends, FastAPI -from typing_extensions import Annotated - -from . import config - -app = FastAPI() - - -@lru_cache -def get_settings(): - return config.Settings() - - -@app.get("/info") -async def info(settings: Annotated[config.Settings, Depends(get_settings)]): - return { - "app_name": settings.app_name, - "admin_email": settings.admin_email, - "items_per_user": settings.items_per_user, - } diff --git a/docs_src/settings/app02_an/__init__.py b/docs_src/settings/app03_py39/__init__.py similarity index 100% rename from docs_src/settings/app02_an/__init__.py rename to docs_src/settings/app03_py39/__init__.py diff --git a/docs_src/settings/app03/config.py b/docs_src/settings/app03_py39/config.py similarity index 100% rename from docs_src/settings/app03/config.py rename to docs_src/settings/app03_py39/config.py diff --git a/docs_src/settings/app03/config_pv1.py b/docs_src/settings/app03_py39/config_pv1.py similarity index 100% rename from docs_src/settings/app03/config_pv1.py rename to docs_src/settings/app03_py39/config_pv1.py diff --git a/docs_src/settings/app03/main.py b/docs_src/settings/app03_py39/main.py similarity index 100% rename from docs_src/settings/app03/main.py rename to docs_src/settings/app03_py39/main.py diff --git a/docs_src/settings/tutorial001_pv1.py b/docs_src/settings/tutorial001_pv1_py39.py similarity index 100% rename from docs_src/settings/tutorial001_pv1.py rename to docs_src/settings/tutorial001_pv1_py39.py diff --git a/docs_src/settings/tutorial001.py b/docs_src/settings/tutorial001_py39.py similarity index 100% rename from docs_src/settings/tutorial001.py rename to docs_src/settings/tutorial001_py39.py diff --git a/tests/test_tutorial/test_settings/test_app02.py b/tests/test_tutorial/test_settings/test_app02.py index 5e1232ea0..9cedc5a52 100644 --- a/tests/test_tutorial/test_settings/test_app02.py +++ b/tests/test_tutorial/test_settings/test_app02.py @@ -4,15 +4,14 @@ from types import ModuleType import pytest from pytest import MonkeyPatch -from ...utils import needs_py39, needs_pydanticv2 +from ...utils import needs_pydanticv2 @pytest.fixture( name="mod_path", params=[ - pytest.param("app02"), - pytest.param("app02_an"), - pytest.param("app02_an_py39", marks=needs_py39), + pytest.param("app02_py39"), + pytest.param("app02_an_py39"), ], ) def get_mod_path(request: pytest.FixtureRequest): diff --git a/tests/test_tutorial/test_settings/test_app03.py b/tests/test_tutorial/test_settings/test_app03.py index d9872c15f..dbaf8f3f9 100644 --- a/tests/test_tutorial/test_settings/test_app03.py +++ b/tests/test_tutorial/test_settings/test_app03.py @@ -5,15 +5,14 @@ import pytest from fastapi.testclient import TestClient from pytest import MonkeyPatch -from ...utils import needs_py39, needs_pydanticv1, needs_pydanticv2 +from ...utils import needs_pydanticv1, needs_pydanticv2 @pytest.fixture( name="mod_path", params=[ - pytest.param("app03"), - pytest.param("app03_an"), - pytest.param("app03_an_py39", marks=needs_py39), + pytest.param("app03_py39"), + pytest.param("app03_an_py39"), ], ) def get_mod_path(request: pytest.FixtureRequest): diff --git a/tests/test_tutorial/test_settings/test_tutorial001.py b/tests/test_tutorial/test_settings/test_tutorial001.py index 92a5782d4..2c6dce261 100644 --- a/tests/test_tutorial/test_settings/test_tutorial001.py +++ b/tests/test_tutorial/test_settings/test_tutorial001.py @@ -10,8 +10,8 @@ from ...utils import needs_pydanticv1, needs_pydanticv2 @pytest.fixture( name="app", params=[ - pytest.param("tutorial001", marks=needs_pydanticv2), - pytest.param("tutorial001_pv1", marks=needs_pydanticv1), + pytest.param("tutorial001_py39", marks=needs_pydanticv2), + pytest.param("tutorial001_pv1_py39", marks=needs_pydanticv1), ], ) def get_app(request: pytest.FixtureRequest, monkeypatch: MonkeyPatch):