(self, element, *, expr, operator, **kw)
| 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: |
nothing calls this directly
no test coverage detected