]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Add a regression test for coalesce type error with hybrid_property
authorYannick PÉROUX <yannick.peroux@getalma.eu>
Tue, 4 Nov 2025 10:25:37 +0000 (11:25 +0100)
committerYannick PÉROUX <yannick.peroux@getalma.eu>
Tue, 4 Nov 2025 16:30:51 +0000 (17:30 +0100)
Result:
error: Expression is of type "coalesce[int | None]", not "coalesce[int]"  [assert-type]

test/typing/plain_files/sql/functions_again.py

index 1be8c5ce7822f59e0acbfee5168521a3c087e711..8a7c9b5bf181e9086331945b98171a2f1d8df2d3 100644 (file)
@@ -10,6 +10,7 @@ from sqlalchemy import select
 from sqlalchemy.orm import DeclarativeBase
 from sqlalchemy.orm import Mapped
 from sqlalchemy.orm import mapped_column
+from sqlalchemy.ext.hybrid import hybrid_property
 from sqlalchemy.sql.expression import FunctionFilter
 from sqlalchemy.sql.expression import Over
 from sqlalchemy.sql.expression import WithinGroup
@@ -29,6 +30,11 @@ class Foo(Base):
     a: Mapped[int]
     b: Mapped[int]
     c: Mapped[str]
+    _d: Mapped[int | None] = mapped_column("d")
+    
+    @hybrid_property
+    def d(self) -> int | None:
+        return self._d
 
 
 assert_type(
@@ -66,6 +72,7 @@ assert_type(func.coalesce(Foo.c, "a", "b"), coalesce[str])
 assert_type(func.coalesce("a", "b"), coalesce[str])
 assert_type(func.coalesce(column("x", Integer), 3), coalesce[int])
 
+assert_type(func.coalesce(Foo._d, 100), coalesce[int])
 
 stmt2 = select(Foo.a, func.coalesce(Foo.c, "a", "b")).group_by(Foo.a)
 assert_type(stmt2, Select[int, str])