diff options
author | mike bayer <mike_mp@zzzcomputing.com> | 2022-02-13 20:37:12 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@ci3.zzzcomputing.com> | 2022-02-13 20:37:12 +0000 |
commit | d6b3c82b0c329730bcaff42b4bb39dba83acb536 (patch) | |
tree | d6b7f744a35c8d89615eeb0504ee7a4193f95642 /test/ext/mypy/plugin_files/as_declarative.py | |
parent | 260ade78a70d51378de9e7b9456bfe6218859b6c (diff) | |
parent | e545298e35ea9f126054b337e4b5ba01988b29f7 (diff) | |
download | sqlalchemy-d6b3c82b0c329730bcaff42b4bb39dba83acb536.tar.gz |
Merge "establish mypy / typing approach for v2.0" into main
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) |