From: Sofie Van Landeghem Date: Thu, 6 Mar 2025 18:58:40 +0000 (+0100) Subject: ⬆️ Add support for Python 3.13 (#1289) X-Git-Tag: 0.0.24~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b1349dae45dc6f28adae7601206be29e2f59e5a8;p=thirdparty%2Ffastapi%2Fsqlmodel.git ⬆️ Add support for Python 3.13 (#1289) --- diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 19e69618..f842d517 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -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: diff --git a/pyproject.toml b/pyproject.toml index e3b70b5a..bc8e9e2f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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", diff --git a/requirements-tests.txt b/requirements-tests.txt index 847ce90c..f378d8fa 100644 --- a/requirements-tests.txt +++ b/requirements-tests.txt @@ -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" diff --git a/sqlmodel/main.py b/sqlmodel/main.py index 0fa2c111..317ef6cc 100644 --- a/sqlmodel/main.py +++ b/sqlmodel/main.py @@ -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]