MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / ClauseList

Class ClauseList

lib/sqlalchemy/sql/elements.py:3005–3110  ·  view source on GitHub ↗

Describe a list of clauses, separated by an operator. By default, is comma-separated, such as a column listing.

Source from the content-addressed store, hash-verified

3003
3004
3005class ClauseList(
3006 roles.InElementRole,
3007 roles.OrderByRole,
3008 roles.ColumnsClauseRole,
3009 roles.DMLColumnRole,
3010 DQLDMLClauseElement,
3011):
3012 """Describe a list of clauses, separated by an operator.
3013
3014 By default, is comma-separated, such as a column listing.
3015
3016 """
3017
3018 __visit_name__ = "clauselist"
3019
3020 # Used by ORM context.py to identify ClauseList objects in legacy
3021 # composite attribute queries (see test_query_cols_legacy test)
3022 _is_clause_list = True
3023
3024 _traverse_internals: _TraverseInternalsType = [
3025 ("clauses", InternalTraversal.dp_clauseelement_list),
3026 ("operator", InternalTraversal.dp_operator),
3027 ]
3028
3029 clauses: List[ColumnElement[Any]]
3030
3031 def __init__(
3032 self,
3033 *clauses: _ColumnExpressionArgument[Any],
3034 operator: OperatorType = operators.comma_op,
3035 group: bool = True,
3036 group_contents: bool = True,
3037 _literal_as_text_role: Type[roles.SQLRole] = roles.WhereHavingRole,
3038 ):
3039 self.operator = operator
3040 self.group = group
3041 self.group_contents = group_contents
3042 clauses_iterator: Iterable[_ColumnExpressionArgument[Any]] = clauses
3043 text_converter_role: Type[roles.SQLRole] = _literal_as_text_role
3044 self._text_converter_role = text_converter_role
3045
3046 if self.group_contents:
3047 self.clauses = [
3048 coercions.expect(
3049 text_converter_role, clause, apply_propagate_attrs=self
3050 ).self_group(against=self.operator)
3051 for clause in clauses_iterator
3052 ]
3053 else:
3054 self.clauses = [
3055 coercions.expect(
3056 text_converter_role, clause, apply_propagate_attrs=self
3057 )
3058 for clause in clauses_iterator
3059 ]
3060 self._is_implicitly_boolean = operators.is_boolean(self.operator)
3061
3062 @classmethod

Calls

no outgoing calls