ormlambda 3.35.3__py3-none-any.whl → 4.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. ormlambda/__init__.py +79 -51
  2. ormlambda/caster/caster.py +6 -1
  3. ormlambda/common/abstract_classes/__init__.py +0 -2
  4. ormlambda/common/enums/__init__.py +1 -0
  5. ormlambda/common/enums/order_type.py +9 -0
  6. ormlambda/common/errors/__init__.py +13 -3
  7. ormlambda/common/global_checker.py +86 -8
  8. ormlambda/common/interfaces/IQueryCommand.py +2 -2
  9. ormlambda/common/interfaces/__init__.py +0 -2
  10. ormlambda/dialects/__init__.py +75 -3
  11. ormlambda/dialects/default/base.py +1 -1
  12. ormlambda/dialects/mysql/__init__.py +35 -78
  13. ormlambda/dialects/mysql/base.py +226 -40
  14. ormlambda/dialects/mysql/clauses/ST_AsText.py +26 -0
  15. ormlambda/dialects/mysql/clauses/ST_Contains.py +30 -0
  16. ormlambda/dialects/mysql/clauses/__init__.py +1 -0
  17. ormlambda/dialects/mysql/repository/__init__.py +1 -0
  18. ormlambda/{databases/my_sql → dialects/mysql/repository}/repository.py +0 -5
  19. ormlambda/dialects/mysql/types.py +6 -0
  20. ormlambda/engine/base.py +26 -4
  21. ormlambda/errors.py +9 -0
  22. ormlambda/model/base_model.py +3 -10
  23. ormlambda/repository/base_repository.py +1 -1
  24. ormlambda/repository/interfaces/IRepositoryBase.py +0 -7
  25. ormlambda/repository/response.py +12 -7
  26. ormlambda/sql/__init__.py +12 -3
  27. ormlambda/sql/clause_info/__init__.py +0 -2
  28. ormlambda/sql/clause_info/clause_info.py +94 -76
  29. ormlambda/sql/clause_info/interface/IAggregate.py +14 -4
  30. ormlambda/sql/clause_info/interface/IClauseInfo.py +6 -11
  31. ormlambda/sql/clauses/alias.py +6 -37
  32. ormlambda/sql/clauses/count.py +21 -36
  33. ormlambda/sql/clauses/group_by.py +13 -19
  34. ormlambda/sql/clauses/having.py +2 -6
  35. ormlambda/sql/clauses/insert.py +3 -3
  36. ormlambda/sql/clauses/interfaces/__init__.py +0 -1
  37. ormlambda/sql/clauses/join/join_context.py +5 -12
  38. ormlambda/sql/clauses/joins.py +34 -52
  39. ormlambda/sql/clauses/limit.py +1 -2
  40. ormlambda/sql/clauses/offset.py +1 -2
  41. ormlambda/sql/clauses/order.py +17 -21
  42. ormlambda/sql/clauses/select.py +56 -28
  43. ormlambda/sql/clauses/update.py +13 -10
  44. ormlambda/sql/clauses/where.py +20 -39
  45. ormlambda/sql/column/__init__.py +1 -0
  46. ormlambda/sql/column/column.py +19 -12
  47. ormlambda/sql/column/column_proxy.py +117 -0
  48. ormlambda/sql/column_table_proxy.py +23 -0
  49. ormlambda/sql/comparer.py +31 -65
  50. ormlambda/sql/compiler.py +248 -58
  51. ormlambda/sql/context/__init__.py +304 -0
  52. ormlambda/sql/ddl.py +19 -5
  53. ormlambda/sql/elements.py +3 -0
  54. ormlambda/sql/foreign_key.py +42 -64
  55. ormlambda/sql/functions/__init__.py +0 -1
  56. ormlambda/sql/functions/concat.py +35 -38
  57. ormlambda/sql/functions/max.py +12 -36
  58. ormlambda/sql/functions/min.py +13 -28
  59. ormlambda/sql/functions/sum.py +17 -33
  60. ormlambda/sql/sqltypes.py +2 -0
  61. ormlambda/sql/table/__init__.py +1 -0
  62. ormlambda/sql/table/table.py +31 -45
  63. ormlambda/sql/table/table_proxy.py +88 -0
  64. ormlambda/sql/type_api.py +4 -1
  65. ormlambda/sql/types.py +15 -12
  66. ormlambda/statements/__init__.py +0 -2
  67. ormlambda/statements/base_statement.py +51 -84
  68. ormlambda/statements/interfaces/IStatements.py +77 -123
  69. ormlambda/statements/interfaces/__init__.py +1 -1
  70. ormlambda/statements/query_builder.py +296 -128
  71. ormlambda/statements/statements.py +120 -110
  72. ormlambda/statements/types.py +5 -25
  73. ormlambda/util/__init__.py +7 -100
  74. ormlambda/util/langhelpers.py +102 -0
  75. ormlambda/util/module_tree/dynamic_module.py +1 -1
  76. ormlambda/util/preloaded.py +80 -0
  77. ormlambda/util/typing.py +12 -3
  78. {ormlambda-3.35.3.dist-info → ormlambda-4.0.0.dist-info}/METADATA +29 -31
  79. ormlambda-4.0.0.dist-info/RECORD +139 -0
  80. ormlambda/common/abstract_classes/clause_info_converter.py +0 -65
  81. ormlambda/common/abstract_classes/decomposition_query.py +0 -141
  82. ormlambda/common/abstract_classes/query_base.py +0 -15
  83. ormlambda/common/interfaces/ICustomAlias.py +0 -7
  84. ormlambda/common/interfaces/IDecompositionQuery.py +0 -33
  85. ormlambda/databases/__init__.py +0 -4
  86. ormlambda/databases/my_sql/__init__.py +0 -3
  87. ormlambda/databases/my_sql/clauses/ST_AsText.py +0 -37
  88. ormlambda/databases/my_sql/clauses/ST_Contains.py +0 -36
  89. ormlambda/databases/my_sql/clauses/__init__.py +0 -14
  90. ormlambda/databases/my_sql/clauses/count.py +0 -33
  91. ormlambda/databases/my_sql/clauses/delete.py +0 -9
  92. ormlambda/databases/my_sql/clauses/drop_table.py +0 -26
  93. ormlambda/databases/my_sql/clauses/group_by.py +0 -17
  94. ormlambda/databases/my_sql/clauses/having.py +0 -12
  95. ormlambda/databases/my_sql/clauses/insert.py +0 -9
  96. ormlambda/databases/my_sql/clauses/joins.py +0 -14
  97. ormlambda/databases/my_sql/clauses/limit.py +0 -6
  98. ormlambda/databases/my_sql/clauses/offset.py +0 -6
  99. ormlambda/databases/my_sql/clauses/order.py +0 -8
  100. ormlambda/databases/my_sql/clauses/update.py +0 -8
  101. ormlambda/databases/my_sql/clauses/upsert.py +0 -9
  102. ormlambda/databases/my_sql/clauses/where.py +0 -7
  103. ormlambda/dialects/interface/__init__.py +0 -1
  104. ormlambda/dialects/interface/dialect.py +0 -78
  105. ormlambda/sql/clause_info/aggregate_function_base.py +0 -96
  106. ormlambda/sql/clause_info/clause_info_context.py +0 -87
  107. ormlambda/sql/clauses/interfaces/ISelect.py +0 -17
  108. ormlambda/sql/clauses/new_join.py +0 -119
  109. ormlambda/util/load_module.py +0 -21
  110. ormlambda/util/plugin_loader.py +0 -32
  111. ormlambda-3.35.3.dist-info/RECORD +0 -159
  112. /ormlambda/{databases/my_sql → dialects/mysql}/caster/__init__.py +0 -0
  113. /ormlambda/{databases/my_sql → dialects/mysql}/caster/caster.py +0 -0
  114. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/__init__.py +0 -0
  115. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/boolean.py +0 -0
  116. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/bytes.py +0 -0
  117. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/date.py +0 -0
  118. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/datetime.py +0 -0
  119. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/decimal.py +0 -0
  120. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/float.py +0 -0
  121. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/int.py +0 -0
  122. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/iterable.py +0 -0
  123. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/json.py +0 -0
  124. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/none.py +0 -0
  125. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/point.py +0 -0
  126. /ormlambda/{databases/my_sql → dialects/mysql}/caster/types/string.py +0 -0
  127. /ormlambda/{databases/my_sql → dialects/mysql/repository}/pool_types.py +0 -0
  128. {ormlambda-3.35.3.dist-info → ormlambda-4.0.0.dist-info}/AUTHORS +0 -0
  129. {ormlambda-3.35.3.dist-info → ormlambda-4.0.0.dist-info}/LICENSE +0 -0
  130. {ormlambda-3.35.3.dist-info → ormlambda-4.0.0.dist-info}/WHEEL +0 -0
@@ -1,35 +1,21 @@
1
1
  from __future__ import annotations
2
- from typing import Any, Callable, Optional, Type, overload, TYPE_CHECKING
3
- from enum import Enum
2
+ from typing import Any, Callable, Iterable, Optional, Type, overload, TYPE_CHECKING
4
3
  from abc import abstractmethod
5
4
 
6
5
 
7
6
  if TYPE_CHECKING:
8
- from ormlambda.repository import BaseRepository
9
7
  from ormlambda import Table
10
- from ormlambda.sql.clause_info import IAggregate
11
8
  from ormlambda.sql.types import TupleJoinType, ColumnType
12
9
  from ormlambda.sql.clauses.join import JoinContext
13
10
  from ormlambda.common.enums import JoinType
14
- from ormlambda.sql.clause_info import ClauseInfo
15
11
  from ormlambda.sql.types import AliasType
16
12
 
17
- from ..types import (
18
- OrderTypes,
19
- Tuple,
20
- Select2,
21
- Select3,
22
- Select4,
23
- Select5,
24
- Select6,
25
- Select7,
26
- Select8,
27
- Select9,
28
- Select10,
29
- TypeExists,
30
- WhereTypes,
31
- SelectCols,
32
- )
13
+ from ..types import OrderTypes
14
+ from ..types import Tuple
15
+ from ..types import TypeExists
16
+ from ..types import WhereTypes
17
+ from ..types import SelectCols
18
+
33
19
  from ormlambda.sql.elements import Element
34
20
 
35
21
 
@@ -37,6 +23,9 @@ class IStatements[T: Table](Element):
37
23
  @abstractmethod
38
24
  def create_table(self, if_exists: TypeExists = "fail") -> None: ...
39
25
 
26
+ @abstractmethod
27
+ def drop_table(self) -> None: ...
28
+
40
29
  # #TODOL [ ]: We must to implement this mehtod
41
30
  # @abstractmethod
42
31
  # def drop_table(self)->None: ...
@@ -101,7 +90,6 @@ class IStatements[T: Table](Element):
101
90
  type ColumnType[TProp]:
102
91
  - TProp
103
92
  - Column[TProp]
104
- - AsteriskType
105
93
  - tuple[Column]
106
94
  """
107
95
  ...
@@ -112,7 +100,6 @@ class IStatements[T: Table](Element):
112
100
  type ColumnType[TProp]:
113
101
  - TProp
114
102
  - Column[TProp]
115
- - AsteriskType
116
103
  - tuple[Column]
117
104
  """
118
105
  ...
@@ -135,9 +122,8 @@ class IStatements[T: Table](Element):
135
122
  @abstractmethod
136
123
  def count[TProp](
137
124
  self,
138
- selection: None | SelectCols[T, TProp] = ...,
139
- alias: str = ...,
140
- execute: bool = False,
125
+ selection: Optional[SelectCols[T, TProp]] = ...,
126
+ alias: AliasType[T] = ...,
141
127
  ) -> Optional[int]: ...
142
128
 
143
129
  # endregion
@@ -156,41 +142,46 @@ class IStatements[T: Table](Element):
156
142
  # endregion
157
143
 
158
144
  # region where
159
-
160
145
  @overload
161
- def where[LProp, RTable, RProp](self, conditions: Callable[[T], WhereTypes[T, LProp, RTable, RProp]]) -> IStatements[T]: ...
162
-
146
+ def where(self, conditions: WhereTypes[T]) -> IStatements[T]: ...
147
+ @overload
148
+ def where(self, conditions: WhereTypes[T], restrictive: bool) -> IStatements[T]: ...
163
149
  @abstractmethod
164
- def where[LProp, RTable, RProp](self, conditions: WhereTypes[T, LProp, RTable, RProp] = None) -> IStatements[T]: ...
150
+ def where(self, conditions: WhereTypes[T] = None, restrictive: bool = ...) -> IStatements[T]: ...
165
151
 
166
152
  # endregion
167
153
 
168
154
  # region having
169
155
 
170
156
  @overload
171
- def having[LProp, RTable, RProp](self, conditions: Callable[[T], WhereTypes[T, LProp, RTable, RProp]]) -> IStatements[T]: ...
157
+ def having(self, conditions: WhereTypes[T]) -> IStatements[T]: ...
158
+ @overload
159
+ def having(self, conditions: WhereTypes[T], restrictive: bool) -> IStatements[T]: ...
172
160
 
173
161
  @abstractmethod
174
- def having[LProp, RTable, RProp](self, conditions: WhereTypes[T, LProp, RTable, RProp] = None) -> IStatements[T]: ...
162
+ def having(self, conditions: WhereTypes[T] = None, restrictive: bool = ...) -> IStatements[T]: ...
175
163
 
176
164
  # endregion
177
165
  # region order
178
- @abstractmethod
166
+ @overload
167
+ def order[TValue](self, columns: SelectCols[T, TValue]) -> IStatements[T]: ...
168
+ @overload
179
169
  def order[TValue](self, columns: SelectCols[T, TValue], order_type: OrderTypes) -> IStatements[T]: ...
180
-
181
- # endregion
182
- # region concat
183
170
  @overload
184
- def concat(self, selector: SelectCols[T, str], alias: str = "concat") -> IAggregate: ...
171
+ def order[TValue](self, columns: Iterable[SelectCols[T, TValue]]) -> IStatements[T]: ...
172
+ @overload
173
+ def order[TValue](self, columns: Iterable[SelectCols[T, TValue]], order_type: Iterable[OrderTypes]) -> IStatements[T]: ...
174
+ @abstractmethod
175
+ def order[TValue](self, columns: SelectCols[T, TValue], order_type: OrderTypes = ...) -> IStatements[T]: ...
185
176
 
186
177
  # endregion
178
+
187
179
  # region max
188
180
  @abstractmethod
189
181
  def max[TProp](
190
182
  self,
191
183
  column: SelectCols[T, TProp],
192
- alias: Optional[str] = ...,
193
- execute: bool = False,
184
+ alias: AliasType[T] = ...,
194
185
  ) -> int: ...
195
186
  # endregion
196
187
  # region min
@@ -198,8 +189,7 @@ class IStatements[T: Table](Element):
198
189
  def min[TProp](
199
190
  self,
200
191
  column: SelectCols[T, TProp],
201
- alias: Optional[str] = ...,
202
- execute: bool = False,
192
+ alias: AliasType[T] = ...,
203
193
  ) -> int: ...
204
194
  # endregion
205
195
  # region sum
@@ -207,8 +197,7 @@ class IStatements[T: Table](Element):
207
197
  def sum[TProp](
208
198
  self,
209
199
  column: SelectCols[T, TProp],
210
- alias: Optional[str] = ...,
211
- execute: bool = False,
200
+ alias: AliasType[T] = ...,
212
201
  ) -> int: ...
213
202
 
214
203
  @overload
@@ -216,100 +205,83 @@ class IStatements[T: Table](Element):
216
205
 
217
206
  # endregion
218
207
  # region select
219
- type SelectorType[TOri, *T] = Callable[[TOri], tuple[*T]] | tuple[*T]
220
- type SelectorFlavourType[T, TResponse] = Optional[Callable[[T], TResponse]] | TResponse
221
- type SelectorOneType[T, TResponse] = Callable[[T, TResponse]] | TResponse
222
-
223
- @overload
224
- def select[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10](self, selector: SelectorType[T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10], *, by: Optional[Enum] = ...) -> Select10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]: ...
225
- @overload
226
- def select[T1, T2, T3, T4, T5, T6, T7, T8, T9](self, selector: SelectorType[T, T1, T2, T3, T4, T5, T6, T7, T8, T9], *, by: Optional[Enum] = ...) -> Select9[T1, T2, T3, T4, T5, T6, T7, T8, T9]: ...
227
- @overload
228
- def select[T1, T2, T3, T4, T5, T6, T7, T8](self, selector: SelectorType[T, T1, T2, T3, T4, T5, T6, T7, T8], *, by: Optional[Enum] = ...) -> Select8[T1, T2, T3, T4, T5, T6, T7, T8]: ...
229
- @overload
230
- def select[T1, T2, T3, T4, T5, T6, T7](self, selector: SelectorType[T, T1, T2, T3, T4, T5, T6, T7], *, by: Optional[Enum] = ...) -> Select7[T1, T2, T3, T4, T5, T6, T7]: ...
231
- @overload
232
- def select[T1, T2, T3, T4, T5, T6](self, selector: SelectorType[T, T1, T2, T3, T4, T5, T6], *, by: Optional[Enum] = ...) -> Select6[T1, T2, T3, T4, T5, T6]: ...
233
- @overload
234
- def select[T1, T2, T3, T4, T5](self, selector: SelectorType[T, T1, T2, T3, T4, T5], *, by: Optional[Enum] = ...) -> Select5[T1, T2, T3, T4, T5]: ...
235
- @overload
236
- def select[T1, T2, T3, T4](self, selector: SelectorType[T, T1, T2, T3, T4], *, by: Optional[Enum] = ...) -> Select4[T1, T2, T3, T4]: ...
237
- @overload
238
- def select[T1, T2, T3](self, selector: SelectorType[T, T1, T2, T3], *, by: Optional[Enum] = ...) -> Select3[T1, T2, T3]: ...
239
208
  @overload
240
- def select[T1, T2](self, selector: SelectorType[T, T1, T2], *, by: Optional[Enum] = ...) -> Select2[T1, T2]: ...
209
+ def select[T1](self, selector: Callable[[T], T1 | tuple[T1]], *, by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> tuple[T1, ...]: ...
241
210
  @overload
242
- def select[T1](self, selector: SelectorType[T, T1], *, by: Optional[Enum] = ...) -> Tuple[T1]: ...
211
+ def select[*T1](self, selector: Callable[[T], tuple[*T1]], *, by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> Tuple[*T1]: ...
243
212
  @overload
244
- def select[T1](self, selector: Callable[[T], T1], *, by: Optional[Enum] = ...) -> Tuple[T1]: ...
245
- @overload
246
- def select(self) -> Tuple[T]: ...
213
+ def select(self, *, by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> Tuple[T]: ...
247
214
 
248
- # @overload
249
- # def select[TFlavour](self, selector: Optional[Callable[[T], tuple]] = ..., *, cast_to_tuple: bool = ..., flavour: Type[TFlavour], by: Optional[Enum] = ..., **kwargs) -> TFlavour: ...
250
- @overload
251
- def select[TRes](self, selector: SelectorFlavourType[T, TRes] = ..., *, flavour: Type[tuple], by: Optional[Enum] = ..., alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> tuple[TRes, ...]: ...
215
+ # region deal with flavours
252
216
  @overload
253
- def select[*TRes](self, selector: SelectorFlavourType[T, tuple[*TRes]] = ..., *, flavour: Type[tuple], by: Optional[Enum] = ..., alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> tuple[tuple[*TRes]]: ...
217
+ def select[TFlavour](self, selector: Callable[[T], tuple[tuple]] = ..., *, flavour: Type[TFlavour], **kwargs) -> tuple[TFlavour, ...]: ...
254
218
  @overload
255
- def select[TFlavour](self, selector: SelectorFlavourType[T, tuple] = ..., *, flavour: Type[TFlavour], by: Optional[Enum] = ..., alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> tuple[TFlavour, ...]: ...
219
+ def select[*TRes](self, selector: Callable[[T], tuple[*TRes]] = ..., *, flavour: Type[tuple], **kwargs) -> tuple[tuple[*TRes]]: ...
220
+
221
+ # endregion
256
222
 
257
223
  @abstractmethod
258
- def select[TValue, TFlavour, P](self, selector: SelectorFlavourType[T, tuple[TValue, P]] = ..., *, cast_to_tuple: bool = ..., flavour: Type[TFlavour] = ..., by: JoinType = ..., alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs): ...
224
+ def select(
225
+ self,
226
+ selector=...,
227
+ *,
228
+ flavour=...,
229
+ by=...,
230
+ alias=...,
231
+ avoid_duplicates=...,
232
+ ): ...
259
233
 
260
234
  # endregion
261
235
  # region select_one
262
236
  @overload
263
- def select_one(self) -> T: ...
264
- @overload
265
- def select_one[TFlavour](self, *, by: Optional[Enum] = ..., flavour: Type[TFlavour], alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> TFlavour: ...
266
- @overload
267
- def select_one[T1](self, selector: SelectorOneType[T, T1 | tuple[T1]], *, by: Optional[Enum] = ...) -> T1: ...
237
+ def select_one(self, *, by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> T: ...
268
238
  @overload
269
- def select_one[*TRes](self, selector: SelectorOneType[T, tuple[*TRes]], *, by: Optional[Enum] = ...) -> tuple[*TRes]: ...
239
+ def select_one[*TRes](self, selector: Callable[[T], tuple[*TRes]], *, by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> tuple[*TRes]: ...
270
240
  @overload
271
- def select_one[T1](self, selector: SelectorOneType[T, tuple[T1]], *, by: Optional[Enum] = ..., flavour: Type, alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> T1: ...
241
+ def select_one(self, selector: Callable[[T], tuple], *, flavour: Type[dict], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> dict[str, Any]: ...
272
242
  @overload
273
- def select_one[T1, TFlavour](self, selector: SelectorOneType[T, T1], *, by: Optional[Enum] = ..., flavour: Type[TFlavour], alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> TFlavour: ...
243
+ def select_one[*TRes](self, selector: Callable[[T], tuple[*TRes]], *, flavour: Type[tuple], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> tuple[*TRes]: ...
274
244
  @overload
275
- def select_one[*TRest](self, selector: SelectorOneType[T, tuple[*TRest]], *, by: Optional[Enum] = ..., flavour: Type[tuple], alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> tuple[*TRest]: ...
245
+ def select_one[*TRes](self, selector: Callable[[T], tuple[*TRes]], *, flavour: Type[list], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> tuple[*TRes]: ...
276
246
  @overload
277
- def select_one[TFlavour](self, selector: SelectorOneType[T, tuple], *, by: Optional[Enum] = ..., flavour: Type[TFlavour], alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> TFlavour: ...
247
+ def select_one[TFlavour, *TRes](self, selector: Callable[[T], tuple[T, *TRes]], *, flavour: Type[TFlavour], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> TFlavour[*TRes]: ...
248
+
278
249
  @abstractmethod
279
- def select_one[TValue, TFlavour, *TRest](
250
+ def select_one(
280
251
  self,
281
- selector: Optional[SelectorOneType[T, tuple[TValue, *TRest]]] = lambda: None,
252
+ selector=...,
282
253
  *,
283
- flavour: Type[TFlavour] = ...,
284
- by: Optional[Enum] = ...,
254
+ flavour=...,
255
+ by=...,
256
+ alias=...,
257
+ avoid_duplicates=...,
285
258
  ): ...
286
259
 
287
260
  # endregion
288
261
 
289
262
  # region first
290
263
  @overload
291
- def first(self) -> T: ...
292
- @overload
293
- def first[T1](self, selector: SelectorOneType[T, T1 | tuple[T1]], *, by: Optional[Enum] = ...) -> T1: ...
294
- @overload
295
- def first[*TRes](self, selector: SelectorOneType[T, tuple[*TRes]], *, by: Optional[Enum] = ...) -> tuple[*TRes]: ...
264
+ def first(self, *, by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> T: ...
296
265
  @overload
297
- def first[TFlavour](self, *, by: Optional[Enum] = ..., flavour: Type[TFlavour], alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> TFlavour: ...
266
+ def first[*TRes](self, selector: Callable[[T], tuple[*TRes]], *, by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> tuple[*TRes]: ...
298
267
  @overload
299
- def first[T1](self, selector: SelectorOneType[T, tuple[T1]], *, by: Optional[Enum] = ..., flavour: Type, alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> T1: ...
268
+ def first(self, selector: Callable[[T], tuple], *, flavour: Type[dict], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> dict[str, Any]: ...
300
269
  @overload
301
- def first[T1, TFlavour](self, selector: SelectorOneType[T, T1], *, by: Optional[Enum] = ..., flavour: Type[TFlavour], alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> TFlavour: ...
270
+ def first[*TRes](self, selector: Callable[[T], tuple[*TRes]], *, flavour: Type[tuple], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> tuple[*TRes]: ...
302
271
  @overload
303
- def first[*TRest](self, selector: SelectorOneType[T, tuple[*TRest]], *, by: Optional[Enum] = ..., flavour: Type[tuple], alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> tuple[*TRest]: ...
272
+ def first[*TRes](self, selector: Callable[[T], tuple[*TRes]], *, flavour: Type[list], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> tuple[*TRes]: ...
304
273
  @overload
305
- def first[TFlavour](self, selector: SelectorOneType[T, tuple], *, by: Optional[Enum] = ..., flavour: Type[TFlavour], alias: Optional[AliasType[ClauseInfo[T]]] = ..., **kwargs) -> TFlavour: ...
274
+ def first[TFlavour, *TRes](self, selector: Callable[[T], tuple[T, *TRes]], *, flavour: Type[TFlavour], by: JoinType = ..., alias: Optional[AliasType[ColumnType]] = ..., avoid_duplicates: bool = ...) -> TFlavour[*TRes]: ...
275
+
306
276
  @abstractmethod
307
- def first[TValue, TFlavour, *TRest](
277
+ def first(
308
278
  self,
309
- selector: Optional[SelectorOneType[T, tuple[TValue, *TRest]]] = lambda: None,
279
+ selector=...,
310
280
  *,
311
- flavour: Type[TFlavour] = ...,
312
- by: Optional[Enum] = ...,
281
+ flavour=...,
282
+ by=...,
283
+ alias=...,
284
+ avoid_duplicates=...,
313
285
  ): ...
314
286
 
315
287
  # endregion
@@ -322,24 +294,6 @@ class IStatements[T: Table](Element):
322
294
  @abstractmethod
323
295
  def groupby[TRepo](self, column: list[SelectCols[T, TRepo]] | SelectCols[T, TRepo]) -> IStatements[T]: ...
324
296
 
325
- # endregion
326
-
327
- @abstractmethod
328
- def alias[TProp](self, column: SelectCols[T, TProp], alias: AliasType[ClauseInfo[T]]) -> ClauseInfo[T]: ...
329
-
297
+ def compile(self) -> str: ...
330
298
 
331
- class IStatements_two_generic[T, TPool](IStatements[T]):
332
- @property
333
- @abstractmethod
334
- def repository(self) -> BaseRepository[TPool]: ...
335
-
336
- @property
337
- @abstractmethod
338
- def query(self) -> str: ...
339
-
340
- @property
341
- def model(self) -> Type[T]: ...
342
-
343
- # TODOL: add P when wil be possible
344
- @property
345
- def models(self) -> tuple: ...
299
+ # endregion
@@ -1 +1 @@
1
- from .IStatements import IStatements, IStatements_two_generic # noqa: F401
1
+ from .IStatements import IStatements # noqa: F401