summaryrefslogtreecommitdiff
path: root/test/ext/mypy/plugin_files/as_declarative.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/ext/mypy/plugin_files/as_declarative.py')
-rw-r--r--test/ext/mypy/plugin_files/as_declarative.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/test/ext/mypy/plugin_files/as_declarative.py b/test/ext/mypy/plugin_files/as_declarative.py
new file mode 100644
index 000000000..08f08f913
--- /dev/null
+++ b/test/ext/mypy/plugin_files/as_declarative.py
@@ -0,0 +1,42 @@
+from typing import List
+from typing import Optional
+
+from sqlalchemy import Column
+from sqlalchemy import Integer
+from sqlalchemy import String
+from sqlalchemy.ext.declarative import as_declarative
+from sqlalchemy.orm import Mapped
+from sqlalchemy.orm import relationship
+from sqlalchemy.sql.schema import ForeignKey
+
+
+@as_declarative()
+class Base:
+ updated_at = Column(Integer)
+
+
+class Foo(Base):
+ __tablename__ = "foo"
+ id: int = Column(Integer(), primary_key=True)
+ name: Mapped[str] = Column(String)
+
+ bar: List["Bar"] = relationship("Bar")
+
+
+class Bar(Base):
+ __tablename__ = "bar"
+ id: int = Column(Integer(), primary_key=True)
+ foo_id: int = Column(ForeignKey("foo.id"))
+
+ foo: Optional[Foo] = relationship(Foo)
+
+
+f1 = Foo()
+
+val: int = f1.id
+
+p: str = f1.name
+
+Foo.id.property
+
+f2 = Foo(name="some name", updated_at=5)