From ed9a4d9b1ed48a7d91dd2dafb31b97997a39d004 Mon Sep 17 00:00:00 2001 From: Federico Caselli Date: Wed, 20 Mar 2024 22:18:35 +0100 Subject: [PATCH] A scalar subquery that returns bool is now correctly typed Fixes: #10937 Change-Id: Iba4986be14fefd4210b727ddb7ae7e9291ab7f7f (cherry picked from commit bf7289f9d4218275d32ce7cfcb24a8da3475d95d) --- lib/sqlalchemy/sql/_typing.py | 1 + test/typing/plain_files/orm/orm_querying.py | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/lib/sqlalchemy/sql/_typing.py b/lib/sqlalchemy/sql/_typing.py index ba5faffd4d..c861bae6e0 100644 --- a/lib/sqlalchemy/sql/_typing.py +++ b/lib/sqlalchemy/sql/_typing.py @@ -107,6 +107,7 @@ _NOT_ENTITY = TypeVar( "_NOT_ENTITY", int, str, + bool, "datetime", "date", "time", diff --git a/test/typing/plain_files/orm/orm_querying.py b/test/typing/plain_files/orm/orm_querying.py index 3251147dd6..83e0fefabb 100644 --- a/test/typing/plain_files/orm/orm_querying.py +++ b/test/typing/plain_files/orm/orm_querying.py @@ -3,6 +3,7 @@ from __future__ import annotations from sqlalchemy import ColumnElement from sqlalchemy import ForeignKey from sqlalchemy import orm +from sqlalchemy import ScalarSelect from sqlalchemy import select from sqlalchemy.orm import aliased from sqlalchemy.orm import DeclarativeBase @@ -134,3 +135,12 @@ def test_10959_with_loader_criteria() -> None: orm.with_loader_criteria(A, lambda cls: cls.data == "some data") orm.with_loader_criteria(A, where_criteria) + + +def test_10937() -> None: + stmt: ScalarSelect[bool] = select(A.id == B.id).scalar_subquery() + stmt1: ScalarSelect[bool] = select(A.id > 0).scalar_subquery() + stmt2: ScalarSelect[int] = select(A.id + 2).scalar_subquery() + stmt3: ScalarSelect[str] = select(A.data + B.data).scalar_subquery() + + select(stmt, stmt2, stmt3, stmt1) -- 2.47.2