From 518818774a87ea84951a47c2b49860bfeb46dd72 Mon Sep 17 00:00:00 2001 From: Maximilian Speicher Date: Tue, 12 Mar 2024 16:25:45 +0100 Subject: [PATCH 1/2] Add Typing for select of arbitrary length --- sqlmodel/sql/expression.py | 14 ++++++++++++++ sqlmodel/sql/expression.py.jinja2 | 11 +++++++++++ 2 files changed, 25 insertions(+) diff --git a/sqlmodel/sql/expression.py b/sqlmodel/sql/expression.py index 112968c655..c54588e8d0 100644 --- a/sqlmodel/sql/expression.py +++ b/sqlmodel/sql/expression.py @@ -257,6 +257,7 @@ class SelectOfScalar(SelectBase[_T]): Column, # type: ignore Sequence, # type: ignore Mapping, # type: ignore + Label, # type: ignore UUID, datetime, float, @@ -275,6 +276,7 @@ class SelectOfScalar(SelectBase[_T]): Column, # type: ignore Sequence, # type: ignore Mapping, # type: ignore + Label, # type: ignore UUID, datetime, float, @@ -293,6 +295,7 @@ class SelectOfScalar(SelectBase[_T]): Column, # type: ignore Sequence, # type: ignore Mapping, # type: ignore + Label, # type: ignore UUID, datetime, float, @@ -311,6 +314,7 @@ class SelectOfScalar(SelectBase[_T]): Column, # type: ignore Sequence, # type: ignore Mapping, # type: ignore + Label, # type: ignore UUID, datetime, float, @@ -337,6 +341,16 @@ def select(__ent0: _TScalar_0) -> SelectOfScalar[_TScalar_0]: # type: ignore ... +@overload +def select(*entities: _TCCA[_T0]) -> Select[Tuple[_T0, ...]]: + ... + + +@overload +def select(*entities: _TScalar_0) -> Select[Tuple[_TScalar_0, ...]]: + ... + + # Generated overloads start diff --git a/sqlmodel/sql/expression.py.jinja2 b/sqlmodel/sql/expression.py.jinja2 index 53babe1bbe..b87851cc23 100644 --- a/sqlmodel/sql/expression.py.jinja2 +++ b/sqlmodel/sql/expression.py.jinja2 @@ -256,6 +256,7 @@ _TScalar_{{ i }} = TypeVar( Column, # type: ignore Sequence, # type: ignore Mapping, # type: ignore + Label, # type: ignore UUID, datetime, float, @@ -282,6 +283,16 @@ def select(__ent0: _TScalar_0) -> SelectOfScalar[_TScalar_0]: # type: ignore ... +@overload +def select(*entities: _TCCA[_T0]) -> Select[Tuple[_T0, ...]]: + ... + + +@overload +def select(*entities: _TScalar_0) -> Select[Tuple[_TScalar_0, ...]]: + ... + + # Generated overloads start {% for signature in signatures %} From 59c5bf8f42f83d673b58e03b76472b362759b7f0 Mon Sep 17 00:00:00 2001 From: Maximilian Speicher Date: Wed, 13 Mar 2024 11:45:23 +0100 Subject: [PATCH 2/2] mypy --- sqlmodel/sql/expression.py | 6 +++--- sqlmodel/sql/expression.py.jinja2 | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sqlmodel/sql/expression.py b/sqlmodel/sql/expression.py index c54588e8d0..82cf18e937 100644 --- a/sqlmodel/sql/expression.py +++ b/sqlmodel/sql/expression.py @@ -332,7 +332,7 @@ class SelectOfScalar(SelectBase[_T]): @overload -def select(__ent0: _TCCA[_T0]) -> SelectOfScalar[_T0]: +def select(__ent0: _TCCA[_T0]) -> SelectOfScalar[_T0]: # type: ignore ... @@ -342,12 +342,12 @@ def select(__ent0: _TScalar_0) -> SelectOfScalar[_TScalar_0]: # type: ignore @overload -def select(*entities: _TCCA[_T0]) -> Select[Tuple[_T0, ...]]: +def select(*entities: _TCCA[_T0]) -> Select[Tuple[_T0, ...]]: # type: ignore ... @overload -def select(*entities: _TScalar_0) -> Select[Tuple[_TScalar_0, ...]]: +def select(*entities: _TScalar_0) -> Select[Tuple[_TScalar_0, ...]]: # type: ignore ... diff --git a/sqlmodel/sql/expression.py.jinja2 b/sqlmodel/sql/expression.py.jinja2 index b87851cc23..21d36dd2c1 100644 --- a/sqlmodel/sql/expression.py.jinja2 +++ b/sqlmodel/sql/expression.py.jinja2 @@ -274,7 +274,7 @@ _T{{ i }} = TypeVar("_T{{ i }}") # Generated TypeVars end @overload -def select(__ent0: _TCCA[_T0]) -> SelectOfScalar[_T0]: +def select(__ent0: _TCCA[_T0]) -> SelectOfScalar[_T0]: # type: ignore ... @@ -284,12 +284,12 @@ def select(__ent0: _TScalar_0) -> SelectOfScalar[_TScalar_0]: # type: ignore @overload -def select(*entities: _TCCA[_T0]) -> Select[Tuple[_T0, ...]]: +def select(*entities: _TCCA[_T0]) -> Select[Tuple[_T0, ...]]: # type: ignore ... @overload -def select(*entities: _TScalar_0) -> Select[Tuple[_TScalar_0, ...]]: +def select(*entities: _TScalar_0) -> Select[Tuple[_TScalar_0, ...]]: # type: ignore ...