MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / __init__

Method __init__

lib/sqlalchemy/sql/elements.py:3622–3671  ·  view source on GitHub ↗
(
        self,
        *whens: Union[
            typing_Tuple[_ColumnExpressionArgument[bool], Any],
            Mapping[Any, Any],
        ],
        value: Optional[Any] = None,
        else_: Optional[Any] = None,
    )

Source from the content-addressed store, hash-verified

3620 value: Optional[ColumnElement[Any]]
3621
3622 def __init__(
3623 self,
3624 *whens: Union[
3625 typing_Tuple[_ColumnExpressionArgument[bool], Any],
3626 Mapping[Any, Any],
3627 ],
3628 value: Optional[Any] = None,
3629 else_: Optional[Any] = None,
3630 ):
3631 new_whens: Iterable[Any] = coercions._expression_collection_was_a_list(
3632 "whens", "case", whens
3633 )
3634 try:
3635 new_whens = util.dictlike_iteritems(new_whens)
3636 except TypeError:
3637 pass
3638
3639 self.whens = [
3640 (
3641 coercions.expect(
3642 roles.ExpressionElementRole,
3643 c,
3644 apply_propagate_attrs=self,
3645 ).self_group(),
3646 coercions.expect(roles.ExpressionElementRole, r),
3647 )
3648 for (c, r) in new_whens
3649 ]
3650
3651 if value is None:
3652 self.value = None
3653 else:
3654 self.value = coercions.expect(roles.ExpressionElementRole, value)
3655
3656 if else_ is not None:
3657 self.else_ = coercions.expect(roles.ExpressionElementRole, else_)
3658 else:
3659 self.else_ = None
3660
3661 type_ = next(
3662 (
3663 then.type
3664 # Iterate `whens` in reverse to match previous behaviour
3665 # where type of final element took priority
3666 for *_, then in reversed(self.whens)
3667 if not then.type._isnull
3668 ),
3669 self.else_.type if self.else_ is not None else type_api.NULLTYPE,
3670 )
3671 self.type = cast(_T, type_)
3672
3673 @util.ro_non_memoized_property
3674 def _from_objects(self) -> List[FromClause]:

Callers 2

__init__Method · 0.45
__init__Method · 0.45

Calls 2

castFunction · 0.70
self_groupMethod · 0.45

Tested by

no test coverage detected