]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Fixes: sqlalchemy#10933 typing in ColumnExpressionArgument
authorTomasz Nowacki <t.nowacki87@gmail.com>
Sat, 3 Feb 2024 13:28:06 +0000 (14:28 +0100)
committerTomasz Nowacki <t.nowacki87@gmail.com>
Sat, 3 Feb 2024 13:28:06 +0000 (14:28 +0100)
lib/sqlalchemy/sql/_typing.py
test/typing/plain_files/orm/column_expression_argument.py [new file with mode: 0644]

index 689ed19a9f8ce55ace6516b666c139a563c19c94..345db921f36c68568bfc8bcf1b0504b783e03087 100644 (file)
@@ -175,7 +175,7 @@ _ColumnExpressionArgument = Union[
     _HasClauseElement[_T],
     "SQLCoreOperations[_T]",
     roles.ExpressionElementRole[_T],
-    Callable[[], "ColumnElement[_T]"],
+    Callable[[Any], "ColumnElement[_T]"],
     "LambdaElement",
 ]
 "See docs in public alias ColumnExpressionArgument."
diff --git a/test/typing/plain_files/orm/column_expression_argument.py b/test/typing/plain_files/orm/column_expression_argument.py
new file mode 100644 (file)
index 0000000..cc58afb
--- /dev/null
@@ -0,0 +1,23 @@
+from sqlalchemy import ColumnElement
+from sqlalchemy import ColumnExpressionArgument
+from sqlalchemy import true
+from sqlalchemy.orm import DeclarativeBase
+from sqlalchemy.orm import Mapped
+
+
+class Base(DeclarativeBase):
+    ...
+
+
+class HasPrivate(Base):
+    public: Mapped[bool]
+
+
+def where_criteria(cls_: type[HasPrivate]) -> ColumnElement[bool]:
+    return cls_.public == true()
+
+
+column_expression: ColumnExpressionArgument[bool] = where_criteria
+column_expression_lambda: ColumnExpressionArgument[bool] = (
+    lambda cls_: cls_.public == true()
+)