summaryrefslogtreecommitdiff
path: root/test/ext/mypy/plugin_files/mixin_one.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/ext/mypy/plugin_files/mixin_one.py')
-rw-r--r--test/ext/mypy/plugin_files/mixin_one.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/ext/mypy/plugin_files/mixin_one.py b/test/ext/mypy/plugin_files/mixin_one.py
new file mode 100644
index 000000000..a471edf6c
--- /dev/null
+++ b/test/ext/mypy/plugin_files/mixin_one.py
@@ -0,0 +1,41 @@
+from sqlalchemy import Column
+from sqlalchemy import Integer
+from sqlalchemy import String
+from sqlalchemy.orm import declarative_base
+from sqlalchemy.orm import registry
+
+
+reg: registry = registry()
+
+# TODO: also reg.as_declarative_base()
+Base = declarative_base()
+
+
+class HasUpdatedAt:
+ updated_at = Column(Integer)
+
+
+@reg.mapped
+class Foo(HasUpdatedAt):
+ __tablename__ = "foo"
+ id: int = Column(Integer(), primary_key=True)
+ name: str = Column(String)
+
+
+class Bar(HasUpdatedAt, Base):
+ __tablename__ = "bar"
+ id = Column(Integer(), primary_key=True)
+ num = Column(Integer)
+
+
+Foo.updated_at.in_([1, 2, 3])
+Bar.updated_at.in_([1, 2, 3])
+
+f1 = Foo(name="name", updated_at=5)
+
+b1 = Bar(num=5, updated_at=6)
+
+
+# test that we detected this as an unmapped mixin
+# EXPECTED_MYPY: Unexpected keyword argument "updated_at" for "HasUpdatedAt"
+HasUpdatedAt(updated_at=5)