summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/selectable.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2022-01-09 11:49:02 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2022-01-14 16:30:41 -0500
commit4999784664b9e73204474dd3dd91ee60fd174e3e (patch)
tree18f612f9960d5abee702b1bc1e0769ca26728793 /lib/sqlalchemy/sql/selectable.py
parent43f6ae639ca0186f4802255861acdc20f19e702f (diff)
downloadsqlalchemy-4999784664b9e73204474dd3dd91ee60fd174e3e.tar.gz
Initial ORM typing layout
introduces: 1. new mapped_column() helper 2. DeclarativeBase helper 3. declared_attr has been re-typed 4. rework of Mapped[] to return InstrumentedAtribute for class get, so works without Mapped itself having expression methods 5. ORM constructs now generic on [_T] also includes some early typing work, most of which will be in later commits: 1. URL and History become typing.NamedTuple 2. come up with type-checking friendly way of type checking cy extensions, where type checking will be applied to the py versions, just needed to come up with a succinct conditional pattern for the imports References: #6810 References: #7535 References: #7562 Change-Id: Ie5d9a44631626c021d130ca4ce395aba623c71fb
Diffstat (limited to 'lib/sqlalchemy/sql/selectable.py')
-rw-r--r--lib/sqlalchemy/sql/selectable.py26
1 files changed, 14 insertions, 12 deletions
diff --git a/lib/sqlalchemy/sql/selectable.py b/lib/sqlalchemy/sql/selectable.py
index fd1abd71b..00e20e3fb 100644
--- a/lib/sqlalchemy/sql/selectable.py
+++ b/lib/sqlalchemy/sql/selectable.py
@@ -15,6 +15,9 @@ import collections
import itertools
from operator import attrgetter
import typing
+from typing import Any as TODO_Any
+from typing import Optional
+from typing import Tuple
from typing import Type
from typing import Union
@@ -53,6 +56,7 @@ from .elements import BooleanClauseList
from .elements import ClauseElement
from .elements import ClauseList
from .elements import ColumnClause
+from .elements import ColumnElement
from .elements import GroupedElement
from .elements import Grouping
from .elements import literal_column
@@ -2648,8 +2652,7 @@ class SelectBase(
"""
return self.selected_columns
- @property
- @util.deprecated(
+ @util.deprecated_property(
"1.4",
"The :attr:`_expression.SelectBase.c` and "
":attr:`_expression.SelectBase.columns` attributes "
@@ -4039,16 +4042,16 @@ class Select(
__visit_name__ = "select"
- _setup_joins = ()
- _memoized_select_entities = ()
+ _setup_joins: Tuple[TODO_Any, ...] = ()
+ _memoized_select_entities: Tuple[TODO_Any, ...] = ()
_distinct = False
- _distinct_on = ()
- _correlate = ()
- _correlate_except = None
- _where_criteria = ()
- _having_criteria = ()
- _from_obj = ()
+ _distinct_on: Tuple[ColumnElement, ...] = ()
+ _correlate: Tuple[FromClause, ...] = ()
+ _correlate_except: Optional[Tuple[FromClause, ...]] = None
+ _where_criteria: Tuple[ColumnElement, ...] = ()
+ _having_criteria: Tuple[ColumnElement, ...] = ()
+ _from_obj: Tuple[FromClause, ...] = ()
_auto_correlate = True
_compile_options = SelectState.default_select_compile_options
@@ -4417,8 +4420,7 @@ class Select(
"""
return self._compile_state_factory(self, None)._get_display_froms()
- @property
- @util.deprecated(
+ @util.deprecated_property(
"1.4.23",
"The :attr:`_expression.Select.froms` attribute is moved to "
"the :meth:`_expression.Select.get_final_froms` method.",