]> git.ipfire.org Git - thirdparty/fastapi/sqlmodel.git/commitdiff
⬆️ Add support for Python 3.13 (#1289)
authorSofie Van Landeghem <svlandeg@users.noreply.github.com>
Thu, 6 Mar 2025 18:58:40 +0000 (19:58 +0100)
committerGitHub <noreply@github.com>
Thu, 6 Mar 2025 18:58:40 +0000 (19:58 +0100)
.github/workflows/test.yml
pyproject.toml
requirements-tests.txt
sqlmodel/main.py

index 19e696188c8093bdd6308beb0eee455ba8405629..f842d517981a48de115599a601b81bbc00d9587d 100644 (file)
@@ -32,6 +32,7 @@ jobs:
           - "3.10"
           - "3.11"
           - "3.12"
+          - "3.13"
         pydantic-version:
           - pydantic-v1
           - pydantic-v2
@@ -71,7 +72,10 @@ jobs:
         run: uv pip install --upgrade "pydantic>=1.10.0,<2.0.0"
       - name: Install Pydantic v2
         if: matrix.pydantic-version == 'pydantic-v2'
-        run: uv pip install --upgrade "pydantic>=2.0.2,<3.0.0" "typing-extensions==4.6.1"
+        run: uv pip install --upgrade "pydantic>=2.0.2,<3.0.0"
+      - name: Pin typing-extensions for Python 3.7
+        if: matrix.python-version == '3.7'
+        run: uv pip install --upgrade "typing-extensions==4.6.1"
       - name: Lint
         # Do not run on Python 3.7 as mypy behaves differently
         if: matrix.python-version != '3.7' && matrix.pydantic-version == 'pydantic-v2'
@@ -97,7 +101,7 @@ jobs:
       - uses: actions/checkout@v4
       - uses: actions/setup-python@v5
         with:
-          python-version: '3.12'
+          python-version: '3.13'
       - name: Setup uv
         uses: astral-sh/setup-uv@v5
         with:
index e3b70b5abdce8ed924eb63f75027e4282feb6b46..bc8e9e2f6e34a91d7375edcb54e831e3c482cf94 100644 (file)
@@ -26,6 +26,7 @@ classifiers = [
     "Programming Language :: Python :: 3.10",
     "Programming Language :: Python :: 3.11",
     "Programming Language :: Python :: 3.12",
+    "Programming Language :: Python :: 3.13",
     "Topic :: Database",
     "Topic :: Database :: Database Engines/Servers",
     "Topic :: Internet",
index 847ce90c4a0fa281ecc3701e4a051b4ff8c4e753..f378d8fa626a43a1abc2f132c9c217557d05d2b4 100644 (file)
@@ -8,8 +8,10 @@ ruff ==0.6.2
 fastapi >=0.103.2
 httpx ==0.24.1
 # TODO: upgrade when deprecating Python 3.7
-dirty-equals ==0.6.0
+dirty-equals ==0.6.0; python_version < "3.8"
+dirty-equals ==0.9.0; python_version >= "3.8"
 jinja2 ==3.1.4
 # Pin typing-extensions until Python 3.8 is deprecated or the issue with dirty-equals
 # is fixed, maybe fixed after dropping Python 3.7 and upgrading dirty-equals
-typing-extensions ==4.6.1
+typing-extensions ==4.6.1; python_version < "3.8"
+typing-extensions ==4.12.2; python_version >= "3.8"
index 0fa2c111c00bfc389ed9a5ac375b86c8f5c1e13a..317ef6cca5fc315f084d498f87932f2f96780e96 100644 (file)
@@ -93,8 +93,8 @@ NoArgAnyCallable = Callable[[], Any]
 IncEx: TypeAlias = Union[
     Set[int],
     Set[str],
-    Mapping[int, Union["IncEx", Literal[True]]],
-    Mapping[str, Union["IncEx", Literal[True]]],
+    Mapping[int, Union["IncEx", bool]],
+    Mapping[str, Union["IncEx", bool]],
 ]
 OnDeleteType = Literal["CASCADE", "SET NULL", "RESTRICT"]
 
@@ -479,7 +479,7 @@ def Relationship(
 class SQLModelMetaclass(ModelMetaclass, DeclarativeMeta):
     __sqlmodel_relationships__: Dict[str, RelationshipInfo]
     model_config: SQLModelConfig
-    model_fields: Dict[str, FieldInfo]
+    model_fields: Dict[str, FieldInfo]  # type: ignore[assignment]
     __config__: Type[SQLModelConfig]
     __fields__: Dict[str, ModelField]  # type: ignore[assignment]