⬆️ Add support for Python 3.14 (#1578)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
Sofie Van Landeghem
2025-10-08 18:26:33 +02:00
committed by GitHub
parent 0cbf2e6049
commit 45215fceca
3 changed files with 21 additions and 4 deletions

View File

@ -26,9 +26,8 @@ jobs:
strategy: strategy:
matrix: matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ] os: [ ubuntu-latest, windows-latest, macos-latest ]
python-version: [ "3.13" ] python-version: [ "3.14" ]
pydantic-version: pydantic-version:
- pydantic-v1
- pydantic-v2 - pydantic-v2
include: include:
- os: macos-latest - os: macos-latest
@ -47,7 +46,10 @@ jobs:
python-version: "3.12" python-version: "3.12"
pydantic-version: pydantic-v1 pydantic-version: pydantic-v1
- os: ubuntu-latest - os: ubuntu-latest
python-version: "3.12" python-version: "3.13"
pydantic-version: pydantic-v1
- os: macos-latest
python-version: "3.13"
pydantic-version: pydantic-v2 pydantic-version: pydantic-v2
fail-fast: false fail-fast: false
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}

View File

@ -26,6 +26,7 @@ classifiers = [
"Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Database", "Topic :: Database",
"Topic :: Database :: Database Engines/Servers", "Topic :: Database :: Database Engines/Servers",
"Topic :: Internet", "Topic :: Internet",

View File

@ -1,3 +1,4 @@
import sys
import types import types
from contextlib import contextmanager from contextlib import contextmanager
from contextvars import ContextVar from contextvars import ContextVar
@ -123,7 +124,20 @@ if IS_PYDANTIC_V2:
object.__setattr__(new_object, "__pydantic_private__", None) object.__setattr__(new_object, "__pydantic_private__", None)
def get_annotations(class_dict: Dict[str, Any]) -> Dict[str, Any]: def get_annotations(class_dict: Dict[str, Any]) -> Dict[str, Any]:
return class_dict.get("__annotations__", {}) # type: ignore[no-any-return] raw_annotations: Dict[str, Any] = class_dict.get("__annotations__", {})
if sys.version_info >= (3, 14) and "__annotations__" not in class_dict:
# See https://github.com/pydantic/pydantic/pull/11991
from annotationlib import (
Format,
call_annotate_function,
get_annotate_from_class_namespace,
)
if annotate := get_annotate_from_class_namespace(class_dict):
raw_annotations = call_annotate_function(
annotate, format=Format.FORWARDREF
)
return raw_annotations
def is_table_model_class(cls: Type[Any]) -> bool: def is_table_model_class(cls: Type[Any]) -> bool:
config = getattr(cls, "model_config", {}) config = getattr(cls, "model_config", {})