From 7e05945a024167a1dae6a2fe86f6a06206bf7fdf Mon Sep 17 00:00:00 2001 From: Tomasz Nowacki Date: Sat, 3 Feb 2024 14:28:06 +0100 Subject: [PATCH] Fixes: sqlalchemy#10933 typing in ColumnExpressionArgument --- lib/sqlalchemy/sql/_typing.py | 2 +- .../orm/column_expression_argument.py | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 test/typing/plain_files/orm/column_expression_argument.py diff --git a/lib/sqlalchemy/sql/_typing.py b/lib/sqlalchemy/sql/_typing.py index 689ed19a9f..345db921f3 100644 --- a/lib/sqlalchemy/sql/_typing.py +++ b/lib/sqlalchemy/sql/_typing.py @@ -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 index 0000000000..cc58afb6c5 --- /dev/null +++ b/test/typing/plain_files/orm/column_expression_argument.py @@ -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() +) -- 2.47.2