def with_loader_criteria(
entity_or_base: _EntityType[Any],
- where_criteria: _ColumnExpressionArgument[bool],
+ where_criteria: Union[
+ _ColumnExpressionArgument[bool],
+ Callable[[Any], _ColumnExpressionArgument[bool]],
+ ],
loader_only: bool = False,
include_aliases: bool = False,
propagate_to_loaders: bool = True,
def __init__(
self,
entity_or_base: _EntityType[Any],
- where_criteria: _ColumnExpressionArgument[bool],
+ where_criteria: Union[
+ _ColumnExpressionArgument[bool],
+ Callable[[Any], _ColumnExpressionArgument[bool]],
+ ],
loader_only: bool = False,
include_aliases: bool = False,
propagate_to_loaders: bool = True,
"SQLCoreOperations[_T]",
roles.ExpressionElementRole[_T],
Callable[[], "ColumnElement[_T]"],
- Callable[[Any], "ColumnElement[_T]"],
"LambdaElement",
]
"See docs in public alias ColumnExpressionArgument."
from __future__ import annotations
+from sqlalchemy import ColumnElement
from sqlalchemy import ForeignKey
from sqlalchemy import orm
from sqlalchemy import select
# EXPECTED_MYPY_RE: Argument 1 to .* has incompatible type .*
orm.undefer(B.a).undefer("bar"),
)
+
+
+# test 10959
+def test_10959_with_loader_criteria() -> None:
+ def where_criteria(cls_: type[A]) -> ColumnElement[bool]:
+ return cls_.data == "some data"
+
+ orm.with_loader_criteria(A, lambda cls: cls.public == "some data")
+
+ orm.with_loader_criteria(A, where_criteria)
from sqlalchemy import asc
from sqlalchemy import Column
from sqlalchemy import column
-from sqlalchemy import ColumnElement
-from sqlalchemy import ColumnExpressionArgument
from sqlalchemy import desc
from sqlalchemy import Integer
from sqlalchemy import literal
literal("5"): "q",
column("q"): "q",
}
-
-
-# test 10959
-def where_criteria(cls_: type[User]) -> ColumnElement[bool]:
- return cls_.email == "test"
-
-
-column_expression: ColumnExpressionArgument[bool] = where_criteria
-column_expression_lambda: ColumnExpressionArgument[bool] = (
- lambda cls_: cls_.email == "test"
-)