diff --git a/sqlmodel/main.py b/sqlmodel/main.py index 2e558647f1..38b0a215b4 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] @@ -92,6 +93,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"] @@ -240,7 +246,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, @@ -284,7 +290,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, @@ -369,7 +375,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,