summaryrefslogtreecommitdiff
path: root/test/ext/mypy/plain_files/orm_querying.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/ext/mypy/plain_files/orm_querying.py')
-rw-r--r--test/ext/mypy/plain_files/orm_querying.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/ext/mypy/plain_files/orm_querying.py b/test/ext/mypy/plain_files/orm_querying.py
new file mode 100644
index 000000000..6bde850aa
--- /dev/null
+++ b/test/ext/mypy/plain_files/orm_querying.py
@@ -0,0 +1,38 @@
+from __future__ import annotations
+
+from sqlalchemy import ForeignKey
+from sqlalchemy import select
+from sqlalchemy.orm import aliased
+from sqlalchemy.orm import DeclarativeBase
+from sqlalchemy.orm import Mapped
+from sqlalchemy.orm import mapped_column
+from sqlalchemy.orm import relationship
+from sqlalchemy.orm import selectinload
+
+
+class Base(DeclarativeBase):
+ pass
+
+
+class A(Base):
+ __tablename__ = "a"
+
+ id: Mapped[int] = mapped_column(primary_key=True)
+ data: Mapped[str]
+ bs: Mapped[list[B]] = relationship("B")
+
+
+class B(Base):
+ __tablename__ = "b"
+ id: Mapped[int] = mapped_column(primary_key=True)
+ a_id: Mapped[int] = mapped_column(ForeignKey("a.id"))
+ data: Mapped[str]
+
+
+def test_9669_and() -> None:
+ select(A).options(selectinload(A.bs.and_(B.data == "some data")))
+
+
+def test_9669_of_type() -> None:
+ ba = aliased(B)
+ select(A).options(selectinload(A.bs.of_type(ba)))