Represent a grouping within a column expression
| 4376 | |
| 4377 | |
| 4378 | class Grouping(GroupedElement, ColumnElement[_T]): |
| 4379 | """Represent a grouping within a column expression""" |
| 4380 | |
| 4381 | _traverse_internals: _TraverseInternalsType = [ |
| 4382 | ("element", InternalTraversal.dp_clauseelement), |
| 4383 | ("type", InternalTraversal.dp_type), |
| 4384 | ] |
| 4385 | |
| 4386 | _cache_key_traversal = [ |
| 4387 | ("element", InternalTraversal.dp_clauseelement), |
| 4388 | ] |
| 4389 | |
| 4390 | element: Union[ |
| 4391 | AbstractTextClause, |
| 4392 | ClauseList, |
| 4393 | ColumnElement[_T], |
| 4394 | CompilerColumnElement, |
| 4395 | ] |
| 4396 | |
| 4397 | def __init__( |
| 4398 | self, |
| 4399 | element: Union[ |
| 4400 | AbstractTextClause, |
| 4401 | ClauseList, |
| 4402 | ColumnElement[_T], |
| 4403 | CompilerColumnElement, |
| 4404 | ], |
| 4405 | ): |
| 4406 | self.element = element |
| 4407 | |
| 4408 | # nulltype assignment issue |
| 4409 | self.type = getattr(element, "type", type_api.NULLTYPE) # type: ignore |
| 4410 | self._propagate_attrs = element._propagate_attrs |
| 4411 | |
| 4412 | def _with_binary_element_type(self, type_): |
| 4413 | return self.__class__(self.element._with_binary_element_type(type_)) |
| 4414 | |
| 4415 | def _ungroup(self) -> ColumnElement[_T]: |
| 4416 | assert isinstance(self.element, ColumnElement) |
| 4417 | return self.element._ungroup() |
| 4418 | |
| 4419 | @util.memoized_property |
| 4420 | def _is_implicitly_boolean(self): |
| 4421 | return self.element._is_implicitly_boolean |
| 4422 | |
| 4423 | @util.non_memoized_property |
| 4424 | def _tq_label(self) -> Optional[str]: |
| 4425 | return ( |
| 4426 | getattr(self.element, "_tq_label", None) or self._anon_name_label |
| 4427 | ) |
| 4428 | |
| 4429 | @util.non_memoized_property |
| 4430 | def _proxies(self) -> List[ColumnElement[Any]]: |
| 4431 | if isinstance(self.element, ColumnElement): |
| 4432 | return [self.element] |
| 4433 | else: |
| 4434 | return [] |
| 4435 |
no outgoing calls