summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/sql')
-rw-r--r--lib/sqlalchemy/sql/_elements_constructors.py9
-rw-r--r--lib/sqlalchemy/sql/_typing.py2
-rw-r--r--lib/sqlalchemy/sql/elements.py5
-rw-r--r--lib/sqlalchemy/sql/selectable.py11
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.