]> 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:18:59 +0000 (22:18 +0100)
Fixes: #10937
Change-Id: Iba4986be14fefd4210b727ddb7ae7e9291ab7f7f

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

index 570db02aacd7030b654a6a69873d8f027e4dae29..6d54f415fc8d5258bafa210da38b3fc70ac07bf1 100644 (file)
@@ -108,6 +108,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)