From 57359ef6bfd62ee7a801c6ad20def92fb3a0d8ef Mon Sep 17 00:00:00 2001 From: =?utf8?q?Yannick=20P=C3=89ROUX?= Date: Tue, 4 Nov 2025 11:25:37 +0100 Subject: [PATCH] Add a regression test for coalesce type error with hybrid_property Result: error: Expression is of type "coalesce[int | None]", not "coalesce[int]" [assert-type] --- test/typing/plain_files/sql/functions_again.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/typing/plain_files/sql/functions_again.py b/test/typing/plain_files/sql/functions_again.py index 1be8c5ce78..8a7c9b5bf1 100644 --- a/test/typing/plain_files/sql/functions_again.py +++ b/test/typing/plain_files/sql/functions_again.py @@ -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]) -- 2.47.3