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