diff --git a/sqlmodel/main.py b/sqlmodel/main.py index 84478f24cf..2c2ff4e082 100644 --- a/sqlmodel/main.py +++ b/sqlmodel/main.py @@ -47,8 +47,9 @@ from sqlalchemy.orm.attributes import set_attribute from sqlalchemy.orm.decl_api import DeclarativeMeta from sqlalchemy.orm.instrumentation import is_instrumented -from sqlalchemy.sql.schema import MetaData +from sqlalchemy.sql.schema import MetaData, SchemaEventTarget from sqlalchemy.sql.sqltypes import LargeBinary, Time, Uuid +from sqlalchemy.types import TypeEngine from typing_extensions import TypeAlias, deprecated, get_origin from ._compat import ( # type: ignore[attr-defined] @@ -87,6 +88,11 @@ Mapping[int, Union["IncEx", bool]], Mapping[str, Union["IncEx", bool]], ] +SaTypeOrInstance: TypeAlias = Union[ + TypeEngine[Any], + type[TypeEngine[Any]], + SchemaEventTarget, +] OnDeleteType = Literal["CASCADE", "SET NULL", "RESTRICT"] @@ -235,7 +241,7 @@ def Field( unique: Union[bool, UndefinedType] = Undefined, nullable: Union[bool, UndefinedType] = Undefined, index: Union[bool, UndefinedType] = Undefined, - sa_type: Union[type[Any], UndefinedType] = Undefined, + sa_type: Union[SaTypeOrInstance, UndefinedType] = Undefined, sa_column_args: Union[Sequence[Any], UndefinedType] = Undefined, sa_column_kwargs: Union[Mapping[str, Any], UndefinedType] = Undefined, schema_extra: Optional[dict[str, Any]] = None, @@ -279,7 +285,7 @@ def Field( unique: Union[bool, UndefinedType] = Undefined, nullable: Union[bool, UndefinedType] = Undefined, index: Union[bool, UndefinedType] = Undefined, - sa_type: Union[type[Any], UndefinedType] = Undefined, + sa_type: Union[SaTypeOrInstance, UndefinedType] = Undefined, sa_column_args: Union[Sequence[Any], UndefinedType] = Undefined, sa_column_kwargs: Union[Mapping[str, Any], UndefinedType] = Undefined, schema_extra: Optional[dict[str, Any]] = None, @@ -364,7 +370,7 @@ def Field( unique: Union[bool, UndefinedType] = Undefined, nullable: Union[bool, UndefinedType] = Undefined, index: Union[bool, UndefinedType] = Undefined, - sa_type: Union[type[Any], UndefinedType] = Undefined, + sa_type: Union[SaTypeOrInstance, UndefinedType] = Undefined, sa_column: Union[Column, UndefinedType] = Undefined, # type: ignore sa_column_args: Union[Sequence[Any], UndefinedType] = Undefined, sa_column_kwargs: Union[Mapping[str, Any], UndefinedType] = Undefined,