diff --git a/sqlmodel/main.py b/sqlmodel/main.py index fbc44de0e5..e363bbe7db 100644 --- a/sqlmodel/main.py +++ b/sqlmodel/main.py @@ -46,8 +46,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 Literal, TypeAlias, deprecated, get_origin from ._compat import ( # type: ignore[attr-defined] @@ -86,6 +87,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"] @@ -234,7 +240,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, @@ -278,7 +284,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, @@ -363,7 +369,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,