from ..util.typing import Unpack
if TYPE_CHECKING:
- from ._typing import _DMLColumnArgument
+ from ._typing import _DMLOnlyColumnArgument
from ._typing import _FromClauseArgument
from ._typing import _OnClauseArgument
from ._typing import _SelectStatementForCompoundArgument
def values(
- *columns: _DMLColumnArgument[Any],
+ *columns: _DMLOnlyColumnArgument[Any],
name: Optional[str] = None,
literal_binds: bool = False,
) -> Values:
if TYPE_CHECKING:
from ._typing import _ColumnExpressionArgument
from ._typing import _ColumnExpressionOrStrLabelArgument
- from ._typing import _DMLColumnArgument
+ from ._typing import _DMLOnlyColumnArgument
from ._typing import _FromClauseArgument
from ._typing import _JoinTargetArgument
from ._typing import _LimitOffsetType
__visit_name__ = "values"
_data: Tuple[Sequence[Tuple[Any, ...]], ...] = ()
+ _column_args: Tuple[ColumnClause[Any], ...]
_unnamed: bool
_traverse_internals: _TraverseInternalsType = [
def __init__(
self,
- *columns: _DMLColumnArgument[Any],
+ *columns: _DMLOnlyColumnArgument[Any],
name: Optional[str] = None,
literal_binds: bool = False,
):
super().__init__()
- self._column_args = columns
+ self._column_args = tuple(
+ coercions.expect(roles.DMLColumnRole, col) # type: ignore[misc]
+ for col in columns
+ )
if name is None:
self._unnamed = True
self,
fn: Callable[[Select[Unpack[TupleAny]]], Select[Unpack[TupleAny]]],
) -> ScalarSelect[Any]:
+
assert isinstance(self.element, ScalarSelect)
element = self.element.element
if not isinstance(element, Select):