]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
typing: annotate Exists.select() to return Select[bool]
authorwouter bolsterlee <wouter@bolsterl.ee>
Thu, 4 Apr 2024 18:15:07 +0000 (14:15 -0400)
committerFederico Caselli <cfederico87@gmail.com>
Thu, 4 Apr 2024 18:18:49 +0000 (20:18 +0200)
Fixes: #11231
A query of the form:

``` sql
SELECT EXISTS (
    SELECT 1
    FROM ...
    WHERE ...
)
```

… returns a boolean.

Closes: #11233
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11233
Pull-request-sha: 1bec1cac731eb42e097948f84ae3d0ef133f8a9a

Change-Id: I407a3bd9ed21a180c6c3ff02250aa0a9fbe502d7
(cherry picked from commit ceb9e021cd5df3aa7f3beed2c9564d5f182bf8b6)

lib/sqlalchemy/sql/selectable.py
test/typing/plain_files/sql/common_sql_element.py

index 65978f6646cc2c4314f4246b674c23c47db88457..5a7663628a36547bd36ddd2307d84d5dc488ba67 100644 (file)
@@ -6648,7 +6648,7 @@ class Exists(UnaryExpression[bool]):
         assert isinstance(return_value, SelectStatementGrouping)
         return return_value
 
-    def select(self) -> Select[Any]:
+    def select(self) -> Select[Tuple[bool]]:
         r"""Return a SELECT of this :class:`_expression.Exists`.
 
         e.g.::
index bc9faca96b4d2a23abbade79eb55356c5055c8fa..fb0add31d819ca996d662dd99a75b1520bb0d94c 100644 (file)
@@ -98,6 +98,11 @@ stmt2 = (
 # EXPECTED_TYPE: Select[Tuple[int]]
 reveal_type(stmt2)
 
+stmt3 = select(User.id).exists().select()
+
+# EXPECTED_TYPE: Select[Tuple[bool]]
+reveal_type(stmt3)
+
 
 receives_str_col_expr(User.email)
 receives_str_col_expr(User.email + "some expr")