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