diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-04-28 16:19:43 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-05-03 15:58:45 -0400 |
| commit | 1fa3e2e3814b4d28deca7426bb3f36e7fb515496 (patch) | |
| tree | 9b07b8437b1190227c2e8c51f2e942936721000f /lib/sqlalchemy/ext | |
| parent | 6a496a5f40efe6d58b09eeca9320829789ceaa54 (diff) | |
| download | sqlalchemy-1fa3e2e3814b4d28deca7426bb3f36e7fb515496.tar.gz | |
pep484: attributes and related
also implements __slots__ for QueryableAttribute,
InstrumentedAttribute, Relationship.Comparator.
Change-Id: I47e823160706fc35a616f1179a06c7864089e5b5
Diffstat (limited to 'lib/sqlalchemy/ext')
| -rw-r--r-- | lib/sqlalchemy/ext/hybrid.py | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/sqlalchemy/ext/hybrid.py b/lib/sqlalchemy/ext/hybrid.py index 7200414a1..ea558495b 100644 --- a/lib/sqlalchemy/ext/hybrid.py +++ b/lib/sqlalchemy/ext/hybrid.py @@ -824,15 +824,14 @@ from ..orm import attributes from ..orm import InspectionAttrExtensionType from ..orm import interfaces from ..orm import ORMDescriptor +from ..sql import roles from ..sql._typing import is_has_clause_element from ..sql.elements import ColumnElement from ..sql.elements import SQLCoreOperations from ..util.typing import Literal from ..util.typing import Protocol - if TYPE_CHECKING: - from ..orm._typing import _ORMColumnExprArgument from ..orm.interfaces import MapperProperty from ..orm.util import AliasedInsp from ..sql._typing import _ColumnExpressionArgument @@ -840,7 +839,6 @@ if TYPE_CHECKING: from ..sql._typing import _HasClauseElement from ..sql._typing import _InfoType from ..sql.operators import OperatorType - from ..sql.roles import ColumnsClauseRole _T = TypeVar("_T", bound=Any) _T_co = TypeVar("_T_co", bound=Any, covariant=True) @@ -1290,7 +1288,7 @@ class Comparator(interfaces.PropComparator[_T]): ): self.expression = expression - def __clause_element__(self) -> _ORMColumnExprArgument[_T]: + def __clause_element__(self) -> roles.ColumnsClauseRole: expr = self.expression if is_has_clause_element(expr): ret_expr = expr.__clause_element__() @@ -1306,7 +1304,7 @@ class Comparator(interfaces.PropComparator[_T]): assert isinstance(ret_expr, ColumnElement) return ret_expr - @util.ro_non_memoized_property + @util.non_memoized_property def property(self) -> Optional[interfaces.MapperProperty[_T]]: return None @@ -1345,8 +1343,11 @@ class ExprComparator(Comparator[_T]): else: return [(self.expression, value)] - @util.ro_non_memoized_property + @util.non_memoized_property def property(self) -> Optional[MapperProperty[_T]]: + # this accessor is not normally used, however is accessed by things + # like ORM synonyms if the hybrid is used in this context; the + # .property attribute is not necessarily accessible return self.expression.property # type: ignore def operate( |
