(
self,
name: Optional[str],
element: _ColumnExpressionArgument[_T],
type_: Optional[_TypeEngineArgument[_T]] = None,
)
| 4740 | name: str |
| 4741 | |
| 4742 | def __init__( |
| 4743 | self, |
| 4744 | name: Optional[str], |
| 4745 | element: _ColumnExpressionArgument[_T], |
| 4746 | type_: Optional[_TypeEngineArgument[_T]] = None, |
| 4747 | ): |
| 4748 | orig_element = element |
| 4749 | element = coercions.expect( |
| 4750 | roles.ExpressionElementRole, |
| 4751 | element, |
| 4752 | apply_propagate_attrs=self, |
| 4753 | ) |
| 4754 | while isinstance(element, Label): |
| 4755 | # TODO: this is only covered in test_text.py, but nothing |
| 4756 | # fails if it's removed. determine rationale |
| 4757 | element = element.element |
| 4758 | |
| 4759 | if name: |
| 4760 | self.name = name |
| 4761 | else: |
| 4762 | self.name = _anonymous_label.safe_construct( |
| 4763 | id(self), getattr(element, "name", "anon") |
| 4764 | ) |
| 4765 | if isinstance(orig_element, Label): |
| 4766 | # TODO: no coverage for this block, again would be in |
| 4767 | # test_text.py where the resolve_label concept is important |
| 4768 | self._resolve_label = orig_element._label |
| 4769 | |
| 4770 | self.key = self._tq_label = self._tq_key_label = self.name |
| 4771 | self._element = element |
| 4772 | |
| 4773 | self.type = ( |
| 4774 | type_api.to_instance(type_) |
| 4775 | if type_ is not None |
| 4776 | else self._element.type |
| 4777 | ) |
| 4778 | |
| 4779 | self._proxies = [element] |
| 4780 | |
| 4781 | def __reduce__(self): |
| 4782 | return self.__class__, (self.name, self._element, self.type) |
nothing calls this directly
no test coverage detected