]> git.ipfire.org Git - thirdparty/fastapi/sqlmodel.git/commitdiff
🚨 Fix types for new Pydantic (#1131)
authorSebastián Ramírez <tiangolo@gmail.com>
Mon, 7 Oct 2024 21:21:59 +0000 (23:21 +0200)
committerGitHub <noreply@github.com>
Mon, 7 Oct 2024 21:21:59 +0000 (21:21 +0000)
sqlmodel/main.py

index 1597e4e04f8a1d03fafbdc62aaaa88375cbac37b..3532e81a8e5e591a528c0ff3f0b8231704ebda76 100644 (file)
@@ -52,7 +52,7 @@ from sqlalchemy.orm.decl_api import DeclarativeMeta
 from sqlalchemy.orm.instrumentation import is_instrumented
 from sqlalchemy.sql.schema import MetaData
 from sqlalchemy.sql.sqltypes import LargeBinary, Time, Uuid
-from typing_extensions import Literal, deprecated, get_origin
+from typing_extensions import Literal, TypeAlias, deprecated, get_origin
 
 from ._compat import (  # type: ignore[attr-defined]
     IS_PYDANTIC_V2,
@@ -90,7 +90,12 @@ if TYPE_CHECKING:
 
 _T = TypeVar("_T")
 NoArgAnyCallable = Callable[[], Any]
-IncEx = Union[Set[int], Set[str], Dict[int, Any], Dict[str, Any], None]
+IncEx: TypeAlias = Union[
+    Set[int],
+    Set[str],
+    Mapping[int, Union["IncEx", Literal[True]]],
+    Mapping[str, Union["IncEx", Literal[True]]],
+]
 OnDeleteType = Literal["CASCADE", "SET NULL", "RESTRICT"]
 
 
@@ -858,8 +863,8 @@ class SQLModel(BaseModel, metaclass=SQLModelMetaclass, registry=default_registry
         self,
         *,
         mode: Union[Literal["json", "python"], str] = "python",
-        include: IncEx = None,
-        exclude: IncEx = None,
+        include: Union[IncEx, None] = None,
+        exclude: Union[IncEx, None] = None,
         context: Union[Dict[str, Any], None] = None,
         by_alias: bool = False,
         exclude_unset: bool = False,
@@ -908,8 +913,8 @@ class SQLModel(BaseModel, metaclass=SQLModelMetaclass, registry=default_registry
     def dict(
         self,
         *,
-        include: IncEx = None,
-        exclude: IncEx = None,
+        include: Union[IncEx, None] = None,
+        exclude: Union[IncEx, None] = None,
         by_alias: bool = False,
         exclude_unset: bool = False,
         exclude_defaults: bool = False,