MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / _literal_coercion

Method _literal_coercion

lib/sqlalchemy/sql/coercions.py:860–892  ·  view source on GitHub ↗
(self, element, *, expr, operator, **kw)

Source from the content-addressed store, hash-verified

858
859 @util.preload_module("sqlalchemy.sql.elements")
860 def _literal_coercion(self, element, *, expr, operator, **kw): # type: ignore[override] # noqa: E501
861 if util.is_non_string_iterable(element):
862 non_literal_expressions: Dict[
863 Optional[_ColumnExpressionArgument[Any]],
864 _ColumnExpressionArgument[Any],
865 ] = {}
866 element = list(element)
867 for o in element:
868 if not _is_literal(o):
869 if not isinstance(
870 o, util.preloaded.sql_elements.ColumnElement
871 ) and not hasattr(o, "__clause_element__"):
872 self._raise_for_expected(element, **kw)
873
874 else:
875 non_literal_expressions[o] = o
876
877 if non_literal_expressions:
878 return elements.ClauseList(
879 *[
880 (
881 non_literal_expressions[o]
882 if o in non_literal_expressions
883 else expr._bind_param(operator, o)
884 )
885 for o in element
886 ]
887 )
888 else:
889 return expr._bind_param(operator, element, expanding=True)
890
891 else:
892 self._raise_for_expected(element, **kw)
893
894 def _post_coercion(self, element, *, expr, operator, **kw):
895 if element._is_select_base:

Callers

nothing calls this directly

Calls 3

_is_literalFunction · 0.85
_raise_for_expectedMethod · 0.45
_bind_paramMethod · 0.45

Tested by

no test coverage detected