--- /dev/null
+.. change::
+ :tags: bug, mypy
+ :tickets: 6435
+
+ Fixed issue in mypy plugin to improve upon some issues detecting ``Enum()``
+ SQL types containing custom Python enumeration classes. Pull request
+ courtesy Hiroshi Ogawa.
) -> ProperType:
if node.fullname == "sqlalchemy.sql.sqltypes.Enum" and type_args:
first_arg = type_args[0]
- if isinstance(first_arg, NameExpr) and isinstance(
+ if isinstance(first_arg, RefExpr) and isinstance(
first_arg.node, TypeInfo
):
for base_ in first_arg.node.mro:
--- /dev/null
+from sqlalchemy import Column
+from sqlalchemy import Enum
+from sqlalchemy.orm import declarative_base, Mapped
+from . import enum_col_import1
+from .enum_col_import1 import IntEnum, StrEnum
+
+Base = declarative_base()
+
+
+class TestEnum(Base):
+ __tablename__ = "test_enum"
+
+ e1: Mapped[StrEnum] = Column(Enum(StrEnum))
+ e2: StrEnum = Column(Enum(StrEnum))
+
+ e3: Mapped[IntEnum] = Column(Enum(IntEnum))
+ e4: IntEnum = Column(Enum(IntEnum))
+
+ e5: Mapped[enum_col_import1.StrEnum] = Column(
+ Enum(enum_col_import1.StrEnum)
+ )
+ e6: enum_col_import1.StrEnum = Column(Enum(enum_col_import1.StrEnum))
+
+ e7: Mapped[enum_col_import1.IntEnum] = Column(
+ Enum(enum_col_import1.IntEnum)
+ )
+ e8: enum_col_import1.IntEnum = Column(Enum(enum_col_import1.IntEnum))