]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
A scalar subquery that returns bool is now correctly typed
authorFederico Caselli <cfederico87@gmail.com>
Wed, 20 Mar 2024 21:18:35 +0000 (22:18 +0100)
committerFederico Caselli <cfederico87@gmail.com>
Wed, 20 Mar 2024 21:19:13 +0000 (22:19 +0100)
Fixes: #10937
Change-Id: Iba4986be14fefd4210b727ddb7ae7e9291ab7f7f
(cherry picked from commit bf7289f9d4218275d32ce7cfcb24a8da3475d95d)

lib/sqlalchemy/sql/_typing.py
test/typing/plain_files/orm/orm_querying.py

index ba5faffd4d6bbba1f093f0ae90ac303e529ab1be..c861bae6e0ffa4563431f06c44819605286f1705 100644 (file)
@@ -107,6 +107,7 @@ _NOT_ENTITY = TypeVar(
     "_NOT_ENTITY",
     int,
     str,
+    bool,
     "datetime",
     "date",
     "time",
index 3251147dd6876e04f4263762af2902512a5b4991..83e0fefabbc91b62a99c0269f7ed847a6abe0e36 100644 (file)
@@ -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)