diff options
Diffstat (limited to 'test/ext/mypy/plugin_files/mixin_one.py')
| -rw-r--r-- | test/ext/mypy/plugin_files/mixin_one.py | 41 |
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) |
