From: Abdulhaq Emhemmed Date: Fri, 10 Feb 2023 21:56:30 +0000 (+0100) Subject: Fix docs for `case` expression to match new syntax (#9279) X-Git-Tag: rel_2_0_4~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b95b22d8c0f9f26e33e1912d8ee205319fc20362;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Fix docs for `case` expression to match new syntax (#9279) * Fix docs for `case` expression to match new syntax Previously (before v1.4), the `whens` arg (when `value` is *not* used) used to be a list of conditions (a 2 item-tuple of condition + value). From v1.4, these are passed as positional args and the old syntax is not supported anymore. * Fix long lines --- diff --git a/lib/sqlalchemy/ext/compiler.py b/lib/sqlalchemy/ext/compiler.py index 54a99cceda..39a5541030 100644 --- a/lib/sqlalchemy/ext/compiler.py +++ b/lib/sqlalchemy/ext/compiler.py @@ -409,7 +409,7 @@ accommodates two arguments:: @compiles(greatest, 'oracle') def case_greatest(element, compiler, **kw): arg1, arg2 = list(element.clauses) - return compiler.process(case([(arg1 > arg2, arg1)], else_=arg2), **kw) + return compiler.process(case((arg1 > arg2, arg1), else_=arg2), **kw) Example usage:: diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 092ab1cdaa..c0ff2ed10e 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -565,10 +565,10 @@ class Mapper( discriminator: Mapped[str] = mapped_column(String(50)) __mapper_args__ = { - "polymorphic_on":case([ + "polymorphic_on":case( (discriminator == "EN", "engineer"), (discriminator == "MA", "manager"), - ], else_="employee"), + else_="employee"), "polymorphic_identity":"employee" } diff --git a/lib/sqlalchemy/sql/_elements_constructors.py b/lib/sqlalchemy/sql/_elements_constructors.py index 98f5a1cc6f..5c70197182 100644 --- a/lib/sqlalchemy/sql/_elements_constructors.py +++ b/lib/sqlalchemy/sql/_elements_constructors.py @@ -757,10 +757,10 @@ def case( .. versionchanged:: 1.4 the :func:`_sql.case` function now accepts the series of WHEN conditions positionally - In the first form, it accepts a list of 2-tuples; each 2-tuple - consists of ``(, )``, where the SQL - expression is a boolean expression and "value" is a resulting value, - e.g.:: + In the first form, it accepts multiple 2-tuples passed as positional + arguments; each 2-tuple consists of ``(, )``, + where the SQL expression is a boolean expression and "value" is a + resulting value, e.g.:: case( (users_table.c.name == 'wendy', 'W'),