From: Tomasz Nowacki Date: Sat, 3 Feb 2024 13:28:06 +0000 (+0100) Subject: Fixes: sqlalchemy#10933 typing in ColumnExpressionArgument X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7e05945a024167a1dae6a2fe86f6a06206bf7fdf;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Fixes: sqlalchemy#10933 typing in ColumnExpressionArgument --- 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() +)