diff options
Diffstat (limited to 'lib/sqlalchemy/sql')
| -rw-r--r-- | lib/sqlalchemy/sql/_elements_constructors.py | 9 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/_typing.py | 2 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/elements.py | 5 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/selectable.py | 11 |
4 files changed, 19 insertions, 8 deletions
diff --git a/lib/sqlalchemy/sql/_elements_constructors.py b/lib/sqlalchemy/sql/_elements_constructors.py index 7c5281bee..2e5e399f9 100644 --- a/lib/sqlalchemy/sql/_elements_constructors.py +++ b/lib/sqlalchemy/sql/_elements_constructors.py @@ -49,6 +49,7 @@ from ..util.typing import Literal if typing.TYPE_CHECKING: from ._typing import _ColumnExpressionArgument from ._typing import _ColumnExpressionOrLiteralArgument + from ._typing import _ColumnExpressionOrStrLabelArgument from ._typing import _TypeEngineArgument from .elements import BinaryExpression from .selectable import FromClause @@ -226,7 +227,9 @@ def any_(expr: _ColumnExpressionArgument[_T]) -> CollectionAggregate[bool]: return CollectionAggregate._create_any(expr) -def asc(column: _ColumnExpressionArgument[_T]) -> UnaryExpression[_T]: +def asc( + column: _ColumnExpressionOrStrLabelArgument[_T], +) -> UnaryExpression[_T]: """Produce an ascending ``ORDER BY`` clause element. e.g.:: @@ -935,7 +938,9 @@ def column( return ColumnClause(text, type_, is_literal, _selectable) -def desc(column: _ColumnExpressionArgument[_T]) -> UnaryExpression[_T]: +def desc( + column: _ColumnExpressionOrStrLabelArgument[_T], +) -> UnaryExpression[_T]: """Produce a descending ``ORDER BY`` clause element. e.g.:: diff --git a/lib/sqlalchemy/sql/_typing.py b/lib/sqlalchemy/sql/_typing.py index 8a758e7c7..78e196efc 100644 --- a/lib/sqlalchemy/sql/_typing.py +++ b/lib/sqlalchemy/sql/_typing.py @@ -181,6 +181,8 @@ overall which brings in the TextClause object also. _ColumnExpressionOrLiteralArgument = Union[Any, _ColumnExpressionArgument[_T]] +_ColumnExpressionOrStrLabelArgument = Union[str, _ColumnExpressionArgument[_T]] + _InfoType = Dict[Any, Any] """the .info dictionary accepted and used throughout Core /ORM""" diff --git a/lib/sqlalchemy/sql/elements.py b/lib/sqlalchemy/sql/elements.py index eff8c9bc1..3896d4cbd 100644 --- a/lib/sqlalchemy/sql/elements.py +++ b/lib/sqlalchemy/sql/elements.py @@ -80,6 +80,7 @@ from ..util.typing import Literal if typing.TYPE_CHECKING: from ._typing import _ColumnExpressionArgument + from ._typing import _ColumnExpressionOrStrLabelArgument from ._typing import _InfoType from ._typing import _PropagateAttrsType from ._typing import _TypeEngineArgument @@ -3494,7 +3495,7 @@ class UnaryExpression(ColumnElement[_T]): @classmethod def _create_desc( - cls, column: _ColumnExpressionArgument[_T] + cls, column: _ColumnExpressionOrStrLabelArgument[_T] ) -> UnaryExpression[_T]: return UnaryExpression( coercions.expect(roles.ByOfRole, column), @@ -3505,7 +3506,7 @@ class UnaryExpression(ColumnElement[_T]): @classmethod def _create_asc( cls, - column: _ColumnExpressionArgument[_T], + column: _ColumnExpressionOrStrLabelArgument[_T], ) -> UnaryExpression[_T]: return UnaryExpression( coercions.expect(roles.ByOfRole, column), diff --git a/lib/sqlalchemy/sql/selectable.py b/lib/sqlalchemy/sql/selectable.py index 2dcc611fa..fd4157afd 100644 --- a/lib/sqlalchemy/sql/selectable.py +++ b/lib/sqlalchemy/sql/selectable.py @@ -106,6 +106,7 @@ _T = TypeVar("_T", bound=Any) if TYPE_CHECKING: from ._typing import _ColumnExpressionArgument + from ._typing import _ColumnExpressionOrStrLabelArgument from ._typing import _FromClauseArgument from ._typing import _JoinTargetArgument from ._typing import _MAYBE_ENTITY @@ -4146,9 +4147,10 @@ class GenerativeSelect(SelectBase, Generative): def order_by( self: SelfGenerativeSelect, __first: Union[ - Literal[None, _NoArg.NO_ARG], _ColumnExpressionArgument[Any] + Literal[None, _NoArg.NO_ARG], + _ColumnExpressionOrStrLabelArgument[Any], ] = _NoArg.NO_ARG, - *clauses: _ColumnExpressionArgument[Any], + *clauses: _ColumnExpressionOrStrLabelArgument[Any], ) -> SelfGenerativeSelect: r"""Return a new selectable with the given list of ORDER BY criteria applied. @@ -4190,9 +4192,10 @@ class GenerativeSelect(SelectBase, Generative): def group_by( self: SelfGenerativeSelect, __first: Union[ - Literal[None, _NoArg.NO_ARG], _ColumnExpressionArgument[Any] + Literal[None, _NoArg.NO_ARG], + _ColumnExpressionOrStrLabelArgument[Any], ] = _NoArg.NO_ARG, - *clauses: _ColumnExpressionArgument[Any], + *clauses: _ColumnExpressionOrStrLabelArgument[Any], ) -> SelfGenerativeSelect: r"""Return a new selectable with the given list of GROUP BY criterion applied. |
