summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/_typing.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2022-05-06 16:09:52 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2022-05-15 21:57:01 -0400
commit18a73fb1d1c267842ead5dacd05a49f4344d8b22 (patch)
treecdd1144c7661b13bc4ada83912800f91055b466d /lib/sqlalchemy/sql/_typing.py
parent257de6ebe15d3076e19f05f93c5b3c7fae25a4d3 (diff)
downloadsqlalchemy-18a73fb1d1c267842ead5dacd05a49f4344d8b22.tar.gz
revenge of pep 484
trying to get remaining must-haves for ORM Change-Id: I66a3ecbbb8e5ba37c818c8a92737b576ecf012f7
Diffstat (limited to 'lib/sqlalchemy/sql/_typing.py')
-rw-r--r--lib/sqlalchemy/sql/_typing.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/sqlalchemy/sql/_typing.py b/lib/sqlalchemy/sql/_typing.py
index f49a6d3ec..ed1bd2832 100644
--- a/lib/sqlalchemy/sql/_typing.py
+++ b/lib/sqlalchemy/sql/_typing.py
@@ -61,6 +61,9 @@ if TYPE_CHECKING:
_T = TypeVar("_T", bound=Any)
+_CE = TypeVar("_CE", bound="ColumnElement[Any]")
+
+
class _HasClauseElement(Protocol):
"""indicates a class that has a __clause_element__() method"""
@@ -68,6 +71,13 @@ class _HasClauseElement(Protocol):
...
+class _CoreAdapterProto(Protocol):
+ """protocol for the ClauseAdapter/ColumnAdapter.traverse() method."""
+
+ def __call__(self, obj: _CE) -> _CE:
+ ...
+
+
# match column types that are not ORM entities
_NOT_ENTITY = TypeVar(
"_NOT_ENTITY",