summaryrefslogtreecommitdiff
path: root/test/ext
diff options
context:
space:
mode:
Diffstat (limited to 'test/ext')
-rw-r--r--test/ext/mypy/plain_files/typed_queries.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/test/ext/mypy/plain_files/typed_queries.py b/test/ext/mypy/plain_files/typed_queries.py
index 3e67a7132..2de565e6a 100644
--- a/test/ext/mypy/plain_files/typed_queries.py
+++ b/test/ext/mypy/plain_files/typed_queries.py
@@ -2,13 +2,19 @@ from __future__ import annotations
from typing import Tuple
+from sqlalchemy import Column
from sqlalchemy import column
from sqlalchemy import create_engine
from sqlalchemy import delete
from sqlalchemy import func
from sqlalchemy import insert
+from sqlalchemy import Integer
+from sqlalchemy import MetaData
from sqlalchemy import Select
from sqlalchemy import select
+from sqlalchemy import String
+from sqlalchemy import Table
+from sqlalchemy import text
from sqlalchemy import update
from sqlalchemy.orm import aliased
from sqlalchemy.orm import DeclarativeBase
@@ -29,6 +35,13 @@ class User(Base):
data: Mapped[str]
+user_table = Table(
+ "user",
+ MetaData(),
+ Column("id", Integer, primary_key=True),
+ Column("name", String, primary_key=True),
+)
+
session = Session()
e = create_engine("sqlite://")
@@ -443,3 +456,29 @@ def t_dml_delete() -> None:
# EXPECTED_TYPE: Result[Tuple[int, str]]
reveal_type(r1)
+
+
+def t_from_statement() -> None:
+
+ t = text("select * from user")
+
+ # EXPECTED_TYPE: TextClause
+ reveal_type(t)
+
+ select(User).from_statement(t)
+
+ ts = text("select * from user").columns(User.id, User.name)
+
+ # EXPECTED_TYPE: TextualSelect
+ reveal_type(ts)
+
+ select(User).from_statement(ts)
+
+ ts2 = text("select * from user").columns(
+ user_table.c.id, user_table.c.name
+ )
+
+ # EXPECTED_TYPE: TextualSelect
+ reveal_type(ts2)
+
+ select(User).from_statement(ts2)