summaryrefslogtreecommitdiff
path: root/test/ext/mypy/plugin_files/imperative_table.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/ext/mypy/plugin_files/imperative_table.py')
-rw-r--r--test/ext/mypy/plugin_files/imperative_table.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/test/ext/mypy/plugin_files/imperative_table.py b/test/ext/mypy/plugin_files/imperative_table.py
new file mode 100644
index 000000000..0548a7926
--- /dev/null
+++ b/test/ext/mypy/plugin_files/imperative_table.py
@@ -0,0 +1,37 @@
+import datetime
+from typing import Optional
+
+from sqlalchemy import Column
+from sqlalchemy import DateTime
+from sqlalchemy import Integer
+from sqlalchemy import String
+from sqlalchemy import Table
+from sqlalchemy.orm import declarative_base
+from sqlalchemy.orm import Mapped
+
+
+Base = declarative_base()
+
+
+class MyMappedClass(Base):
+ __table_ = Table(
+ "some_table",
+ Base.metadata,
+ Column("id", Integer, primary_key=True),
+ Column("data", String(50)),
+ Column("created_at", DateTime),
+ )
+
+ id: Mapped[int]
+ data: Mapped[Optional[str]]
+ created_at: Mapped[datetime.datetime]
+
+
+m1 = MyMappedClass(id=5, data="string", created_at=datetime.datetime.now())
+
+# EXPECTED_MYPY: Argument "created_at" to "MyMappedClass" has incompatible type "int"; expected "datetime" # noqa
+m2 = MyMappedClass(id=5, data="string", created_at=12)
+
+
+# EXPECTED_MYPY: Incompatible types in assignment (expression has type "Optional[str]", variable has type "str") # noqa
+x: str = MyMappedClass().data