(
self,
name: Optional[str],
element: _ColumnExpressionArgument[_T],
type_: Optional[_TypeEngineArgument[_T]] = None,
)
| 5167 | name: str |
| 5168 | |
| 5169 | def __init__( |
| 5170 | self, |
| 5171 | name: Optional[str], |
| 5172 | element: _ColumnExpressionArgument[_T], |
| 5173 | type_: Optional[_TypeEngineArgument[_T]] = None, |
| 5174 | ): |
| 5175 | orig_element = element |
| 5176 | element = coercions.expect( |
| 5177 | roles.ExpressionElementRole, |
| 5178 | element, |
| 5179 | apply_propagate_attrs=self, |
| 5180 | ) |
| 5181 | while isinstance(element, Label): |
| 5182 | # TODO: this is only covered in test_text.py, but nothing |
| 5183 | # fails if it's removed. determine rationale |
| 5184 | element = element.element |
| 5185 | |
| 5186 | if name: |
| 5187 | self.name = name |
| 5188 | else: |
| 5189 | self.name = _anonymous_label.safe_construct( |
| 5190 | id(self), getattr(element, "name", "anon") |
| 5191 | ) |
| 5192 | if isinstance(orig_element, Label): |
| 5193 | # TODO: no coverage for this block, again would be in |
| 5194 | # test_text.py where the resolve_label concept is important |
| 5195 | self._resolve_label = orig_element._label |
| 5196 | |
| 5197 | self.key = self._tq_label = self._tq_key_label = self.name |
| 5198 | self._element = element |
| 5199 | |
| 5200 | self.type = ( |
| 5201 | type_api.to_instance(type_) |
| 5202 | if type_ is not None |
| 5203 | else self._element.type |
| 5204 | ) |
| 5205 | |
| 5206 | self._proxies = [element] |
| 5207 | |
| 5208 | def __reduce__(self): |
| 5209 | return self.__class__, (self.name, self._element, self.type) |
nothing calls this directly
no test coverage detected